adsl club

Справочник

Форум

Программы

Фильмы

Ресурсы

Файлообмен

Хостинг

Ростелеком
 
Подключение сети через 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 mtu 1492
        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