Установка и настройка DialUp in server
19.01.2003Настройки считать верными для FreeBSD 4.4-STABLE и RedHat 6.x (и его клонов).
Настройка mgetty
Аналогом COM1 является /dev/ttyS0 (Linux), /dev/cuaa0 (FreeBSD). COM2 - /dev/ttyS1, /dev/cuaa1 и т.д.
mgetty должен быть собран с опцией -DAUTO_PPP. Конфигурационные файлы находятся в директории mgetty+sendfax. Раскоментировать строчку /AutoPPP/ в login.config:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debug
Для новых версий pppd эта строчка выглядит так:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth refuse-chap require-pap login debug
Файл mgetty.config должен содержать примерно следующее:
port cuaa0 debug 4 fax-id 00 00 000000 speed 57600 direct NO blocking NO port-owner uucp port-group dialer port-mode 0660 toggle-dtr YES toggle-dtr-waittime 500 data-only YES fax-only NO modem-type data init-chat "" ATZ OK modem-check-time 3600 rings 7 answer-chat "" ATA CONNECT c r answer-chat-timeout 80 autobauding NO ringback NO ringback-time 30 ignore-carrier false issue-file /etc/issue prompt-waittime 500 login-prompt @!login: login-time 240 diskspace 1024 notify root fax-owner uucp fax-group dialer fax-mode 0660
nologin.cuaaX
Если нужно, чтобы модем не поднимал трубку в определенное время, то можно по крону создавать nologin.cuaaX в директории etc, где X номер порта.
options
modem asyncmap 0 mtu 576 idle 600
options.cuaa0
passive 10.0.0.1:10.0.0.2 proxyarp ms-dns 10.0.0.1
pap-secrets
Пароль пользователя max берется из системы и разрешена любая линия.
max * "" *
Пароль пользователя max указан явно (не зашифрован) и доступ возможен только с двух линий.
max * asdfg 10.0.0.2 10.0.0.3
Настройка Linux (pppd)
В файле /etc/inittab прописываем запуск mgetty:
S0:2345:respawn:/sbin/mgetty ttyS0 S1:2345:respawn:/sbin/mgetty ttyS1
Если при подъеме ppp в /var/log/messages появляются такие строчки:
modprobe: Can't locate module ppp-compress-21 modprobe: Can't locate module ppp-compress-24 modprobe: Can't locate module ppp-compress-26Нужно добавить в /etc/{modules.conf|conf.modules}:
alias ppp-compress-21 bsd_comp alias ppp-compress-24 ppp_deflate alias ppp-compress-26 ppp_deflate
Для прохождения пакетов между интерфейсами, нужно включить форвардинг пакетов /etc/sysctl.conf:
net/ipv4/ip_forward = 1
Если используется диапазон адресов из приватной сети (в нашем случае), то пакеты идущие от интерфейса ppp0 нужно маскировать. Маскарадинг с помощью ipchains:
# /sbin/ipchains -F # /sbin/ipchains -P forward DENY # /sbin/ipchains -A forward -j MASQ -s 10.0.0.0/255.0.0.0 -d 0.0.0.0/0
Маскарадинг с помощью iptables:
# /sbin/iptables -P FORWARD ACCEPT # /sbin/iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j REJECT # /sbin/iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
Настройка FreeBSD (pppd)
В файл /etc/ttys добавим запуск mgetty:
cuaa0 "/usr/local/sbin/mgetty" unknown on insecure
Ядро должно быть регенерировано с options IPFIREWALL и IPDIVERT. Подразумевается, что интерфейс ed0 смотрит в мир. Файл /etc/rc.conf должен содержать:
gateway_enable="YES" firewall_enable="YES" firewall_type="open" natd_enable="YES" nat_interface="ed0"
А в /etc/rc.local добавим alias для интерфейса ed0 (подразумевается, что в сервере всего один интерфейс, который имеет реальный адрес), чтобы использовать proxyarp.
/sbin/ifconfig ed0 alias 10.1.1.1
Проверяем
Если адрес ppp-соединения входит в туже подсеть и используется proxyarp, то мы увидим перманентное соединение с помощью команды:
# arp -a