Входящие звонки в OpenBSD
Понедельник, 20 ноября 2006 (00:17:15)
Это подробное руководство позволит сделать из вашего старенького ПК сервер удалённого доступа с CHAP-авторизацией. Таким образом Вы сможете с наименьшими затратами организовать доступ работников к ресурсам локальной сети предприятия, а также доступ в Интернет.
Настройка dial-in сервера под OpenBSD мало чем отличается от аналогичной процедуры под FreeBSD, в основном в той части, где включается NAT и pf. Выполнив описанные в этом руководстве шаги, вы будете иметь сервер удалённого доступа (getty+pppd) c CHAP-авторизацией в считанные минуты.
Задача стоит следующим образом: имеется отдельная машина под управлением OpenBSD 3.4 с двумя модемами, подключенная к локальной сети предприятия. Локальная сеть имеет доступ к Интернет по выделенной линии через маршрутизатор при помощи NAT. Адреса выделяются при помощи DHCP-сервера, однако это не существенно. Требуется настроить удалённый доступ к ресурсам Интернет для работников предприятия по коммутируемым линиям.
Подготовка модемов к приёму входящих звонков
Модем U.S. Robotics Sportster Voice 33600 Fax установлен на порте COM1 (/dev/cua00, он же /dev/tty00), второй внутренний модем U.S. Robotics 56K FAX на COM3 (/dev/cua02, он же /dev/tty02). Примеры в этой статье рассчитаны именно на эту конфигурацию. Модемам требуется дать команды ATE0 и ATQ1. Обратите также внимание на минимальную и максимальную скорость соединения (для U.S. Robotics это команда AT&U[значение мин. скорости соединения]&N[значение макс. скорости соединения]). Замечено, что внутренние модемы с U0 и N0 всегда соединяются на скорости 9600! Можно изменить профиль по умолчанию командами в терминале cu:
# cu -l /dev/cua00 -s 38400 Connected at&f1e0f1q1y0 u0s0=1 at&u10&n14&w0 ~.
Обратите внимание, что две последние строчки отображаться не будут. Предпоследняя команда записывает в профиль по умолчанию минимальную скорость 24600 и максимальную - 33600. Проверьте установки с помощью команды ATI4.
Настройка getty
Добавьте в секции std.38400 и std.57600 файла /etc/gettytab следующие строки:
std.38400|38400-baud:\ :sp#38400:\ :pp=/usr/local/bin/ppplogin: std.57600|57600-baud:\ :sp#57600:\ :pp=/usr/local/bin/ppplogin:
Необходимо указать getty, какие порты будут использоваться для модемных соединений, отредактируйте файл /etc/ttys:
tty00 "/usr/libexec/getty std.38400" dialup on insecure tty02 "/usr/libexec/getty std.57600" dialup on insecure
Перезапустите init:
# kill -HUP 1
В результате, после выполнения
# ps ax | grep tty0
должно появиться нечто подобное:
14095 ?? I 0:00.02 /usr/libexec/getty std.38400 tty00 10362 ?? I 0:00.02 /usr/libexec/getty std.57600 tty02
Создайте файл /usr/local/bin/ppplogin:
#! /bin/sh /usr/sbin/pppd auth
Не забудьте сделать:
#chmod 500 ppplogin #chown root ppplogin
Создайте файл /etc/ppp/options:
modem noipdefault crtscts asyncmap 0 name <имя сервера> passive mtu 576 mru 576 proxyarp ms-dns <DNS-сервер> debug
Для каждого модема создайте файл следующего вида:
/etc/ppp/options.tty00:
38400 <адрес сервера>:<адрес клиента>
/etc/ppp/options.tty02:
57600 <адрес сервера>:<адрес клиента>
Создайте для каждого пользователя модемного пула (не пользователя системы) запись в файле /etc/ppp/chap-secrets:
# Пользователь Сервер Пароль IP адреса user server password *
Настройка NAT и брандмауэра
В файле /etc/sysctl.conf должна присутствовать строка, разрешающая пересылку пакетов:
net.inet.ip.forwarding=1
Включите пакетный фильтр (/etc/rc.conf):
pf=YES
После перезагрузки всё должно заработать. Обратите внимание, что по умолчанию, pf пропускает все пакеты, так что оставив всё «как есть» вы серьёзно рискуете.