АДСЛ клуб / Справочник / Настройка операционной системы / Подключение сети через FreeBSD-based роутер
Подключение сети через FreeBSD-based роутер
Подключение к WebStream малой сети c использованием FreeBSD 4.11 в качестве роутера, прокси, NAT и модема Huawei MT880 в режиме бриджа0) первое подключение, настройка. пусть конфигурация сети такова: клиент1 <---------> freebsd 4.11 <----------> adsl_modem xl0 ed1 192.168.1.1/30 192.168.31.1/24 192.168.1.2/30 клиент1 - на базе windows. модем будет в режиме бриджа, т.к. на freebsd есть фаирволл ipfw, который заведомо лучше (гибче) чем все то, что встроено в модем. настройки: на freebsd в /etc/rc.conf: gateway_enable="YES" network_interfaces="lo0 xl0 ed1" ifconfig_xl0="inet 192.168.31.1/24" ifconfig_ed1="inet 192.168.1.2/30" важно: на freebsd стоит squid, который позволяет клиентам из сети 192.168.31.0/24 делать исходящие соединения на 192.168.1.1. и с клиента1 в IE заходим в веб-интерфейс модема: http://192.168.1.1 возможно придется открыть в ipfw 80 порт на этот адрес. настроим модем по-безопасному: 0.1. сменить пароль админа ! хороший пароль имеет длину от 9 символов, содержит символы из 4х алфавитов - маленькие буквы a-z - большие буквы A-Z - цифры 0-9 - разные символы: `~!@#$%^&*()_+-=[]{};':",./<>? 0.2. сменить ip-адрес: на любой из диапазона RFC1918 (192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/12) или адресов для автоконфигурации мастдая: 169.254.0.0/16 соседний адрес поставить на интерфейсе ed1 (далее ip-адреса будут все равно описаны как 192.168.1.1/30 - модем и 192.168.1.2/30 - ed1). нетмаска /30 (255.255.255.252) - никого лишнего мы не ждем. 0.3. сменить порты управления: 21, 23, 80 но что-нибудь типа 62221, 52223, 42280 (чтобы сканом не сразу нашли). сменить настройки ipfw чтобы на эти порты вы могли устанавливать соединения. 0.4. ограничить доступ до управления - LAN-only и адрес на ed1 либо через web-интервейс либо через telnet: sys server load sys server access telnet 2 sys server access ftp 2 sys server access web 2 sys server access icmp 2 sys server access tftp 2 sys server access snmp 2 sys server secureip telnet 192.168.1.2 sys server secureip ftp 192.168.1.2 sys server secureip web 192.168.1.2 sys server secureip icmp 192.168.1.2 sys server secureip tftp 192.168.1.2 sys server secureip snmp 192.168.1.2 sys server disp sys server save вы спросите "а как же достукиваться с клиента1 до веб-интерфейса модема - нужен ведь браузер типа IE (с поддержкой фреймов и жабаскрипта) ?" на это я вам отвечу "либо работайте через telnet, либо поставьте на freebsd прокси типа squid". 0.5. убрать мультикаст и RIP в lan, убрать управление через UPnP: лучше через telnet sys upnp load sys upnp active 0 sys upnp config 0 sys upnp save sys upnp display set lan rip none set lan multicast none lan index 1 lan multicast none lan rip none rip1 lan rip none rip2b lan rip none rip2m lan index 2 lan multicast none lan rip none rip1 lan rip none rip2b lan rip none rip2m lan index 3 lan multicast none lan rip none rip1 lan rip none rip2b lan rip none rip2m sys save 1) первый заход на PPPoE: используем user-level ppp описано в этом документе 2) второй заход на PPPoE: используем /usr/ports/net/mpd при интенсивной прокачке по top видна офигенная загрузка, создаваемая процессом ppp. это потому что каждый пакет проходит через ядро и user-space дважды, с 2мя переключениями контекста. что с этим делать ? хорошо бы гнать весь трафик на уровне ядра. но kernel-level pppd не умеет PPPoE. используем взрослое решение - mpd и netgraph. 2.0. запишите на бумажку настройки /etc/ppp/ppp.conf и ifconfig tun0, они еще понадобятся. 2.1. для начачла пересоберем ядро с такими опциями: options NETGRAPH options NETGRAPH_PPP options NETGRAPH_PPPOE options NETGRAPH_SOCKET options NETGRAPH_ETHER options NETGRAPH_ASYNC options NETGRAPH_IFACE 2.2. соберем и поставим mpd из портов cd /usr/ports/net/mpd make install clean в /etc/rc.conf mpd_enable="YES" ppp_enable="NO" убиваем процесс ppp проверяем по ifconfig что сдох интерфейс tun0 (вместо него будет интерфейс ng0) настраиваем mpd /usr/local/etc/mpd/mpd.conf: default: load webstream_pppoe # сдираем кофигурацию клиента PPPoE # и настроек что были в user-level ppp webstream_pppoe: new -i ng0 webstream_pppoe webstream_pppoe set iface addrs 90.189.xxx.xxx 213.228.xx.x # пропишите явно тот адрес и дальний конец, # что выдавались при user-level ppp set iface route default set iface disable on-demand set iface idle 0 set iface enable tcpmssfix # идиотские игрища с MTU и MSS set bundle disable multilink set bundle authname ats22xx-xxx-xx set link no acfcomp protocomp set link disable pap chap set link accept chap set link mtu 1492 set link keep-alive 10 60 set ipcp yes vjcomp set ipcp ranges 0.0.0.0/0 0.0.0.0/0 open iface ... /usr/local/etc/mpd/mpd.links: webstream_pppoe: set link type pppoe set pppoe iface ed1 set pppoe service "fuckyou" set pppoe disable incoming set pppoe enable originate /usr/local/etc/mpd/mpd.secret: # тут просто логин и пароль ats22xx-xxx-xx password закрываем конфиги от идиотов chmod 0600 /usr/local/etc/mpd/* запускаем mpd chmod +x /usr/local/etc/rc.d/mpd /usr/local/etc/rc.d/mpd start проверяем ifconfig: ng0: flags=88d1 inet 90.189.xxx.xxx --> 213.228.xx.x netmask 0xffffffff типичный ppp-like интерфейс ! если что не так - проверяем /var/log/messages перенастройте ipfw и natd на внешний интерфейс ng0 (вместо tun0) 3) окультуривание: мониторинг модема по SNMP, шейпинг трафика. ... еще не дописано ... Автор инструкции: Dmitry A.Provodnikov provodnikov(at)yandex.ru |