Настройка Linux как Dial-In сервера
Краткий обзор
В этом руководстве описано, как подключить модемы к Linux и разрешить входящие вызовы, чтобы удалённые пользователи получали доступ к сети. Сервер выступает как маршрутизатор: если он подключён к Интернету, абоненты дозвона тоже получат доступ. В Linux для этого обычно используют mgetty (приём вызовов и логин) и PPP (Point-to-Point Protocol) для инкапсуляции IP-трафика.
Важно: приведённые примеры используют системные файлы по умолчанию (/etc/inittab, /etc/mgetty+sendfax/login.config, /etc/ppp/*). Сохраняйте резервные копии конфигураций перед изменениями.
Основные термины
- mgetty — демоническая программа для обработки входящих модемных вызовов и предоставления логина.
- PPP (pppd) — протокол и демон для организации сетевого соединения «точка-точка».
- pap-secrets — файл паролей для аутентификации PAP.
Подготовка и требования
- Один или несколько модемов (COM/ttyS). Можно использовать внешние USB-модемы, но в этом руководстве примеры для ttyS0..ttyS3.
- root-доступ на сервере.
- Установленные пакеты: mgetty, ppp. На современных дистрибутивах пакеты могут называться иначе; используйте менеджер пакетов вашей системы.
- Резервная копия конфигураций: сделайте cp /etc/inittab /etc/inittab.bak и т.п.
1. Подключите модем
Подключите модем к COM1 или COM2 (ttyS0/ttyS1) или к соответствующему порту. Для внутренних модемов уточните соответствие аппаратного порта ttyS*. При сомнениях можно активировать все COM-порты и посмотреть, какой порт отвечает, через /var/log/messages.
2. Запустите kudzu (или автообнаружение)
kudzu — автодетектор железа в некоторых дистрибутивах (обычно запускается при загрузке). Либо перезагрузите сервер, либо выполните вручную:
kudzuЕсли kudzu обнаружит модем, он попытается его настроить автоматически.
3. Настройка mgetty в /etc/inittab
Mgetty предоставляет логин после установления модемного соединения. Включается через /etc/inittab. Откройте файл:
vi /etc/inittabНиже — соответствие физических портов и Linux-портов (для удобства):
- COM1 → ttyS0
- COM2 → ttyS1
- COM3 → ttyS2
- COM4 → ttyS3
Добавьте строки (пример):
S0:2345:respawn:/sbin/mgetty -D ttyS0
S1:2345:respawn:/sbin/mgetty -D ttyS1
S2:2345:respawn:/sbin/mgetty -D ttyS2
S3:2345:respawn:/sbin/mgetty -D ttyS3Ключ -D означает «data-only» — разрешать только модемные данные, без факсов. Скорость (baud rate) определяется автоматически, если модем поддерживает.
4. Включите PPP при входящем вызове
По умолчанию mgetty может не запускать pppd. В /etc/mgetty+sendfax/login.config найдите строку, связанную с AutoPPP, и раскомментируйте её.
vi /etc/mgetty+sendfax/login.configНайдите:
#/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debugИ измените на:
/AutoPPP/ - a_ppp /usr/sbin/pppd auth -chap +pap login debugОпция debug даёт подробный вывод в /var/log/messages. Опция login указывает pppd выполнить последующую проверку через системный логин (например, /etc/passwd) после PAP.
Важно: если вы не хотите использовать системные учётные записи Linux для авторизации, удалите опцию login и организуйте только аутентификацию через pap-secrets.
5. Файлы опций PPP
pppd читает параметры из командной строки и из файлов в /etc/ppp. Рекомендуется создать общий файл опций и индивидуальные файлы для каждого порта.
Создайте общий файл:
vi /etc/ppp/options.serverПример содержимого:
-detach
asyncmap 0
modem
crtscts
lock
proxyarp
ms-dns 1.2.3.4 # замените 1.2.3.4 на адрес первичного DNS
ms-dns 3.4.5.6 # замените 3.4.5.6 на адрес вторичного DNSЗатем создайте файл опций для конкретного порта, где назначите IP-адреса сервера и клиента:
vi /etc/ppp/options.ttyS0Пример:
192.168.0.12:192.168.0.100 # serverAddress:clientAddress
netmask 255.255.255.0 # маска сети, в которой находится серверЗамените адреса на те, которые соответствуют вашей сети. Можно назначать пул адресов или индивидуальные пары.
6. Добавьте пользователей в pap-secrets
PAP-аутентификация хранит пары клиент/пароль в /etc/ppp/pap-secrets.
vi /etc/ppp/pap-secretsПример:
# client server secret IP
sohail * boby *
zain * zain123 *Где client — имя пользователя, server — имя сервера (обычно ), secret — пароль, IP — разрешённый IP клиента (или ).
7. Создайте соответствующих Linux-пользователей
Если вы используете опцию login в pppd, создайте локальных пользователей с такими же именами и паролями, как в pap-secrets, чтобы система могла выполнить проверку через /etc/passwd или PAM:
useradd -m sohail
passwd sohailЕсли вы не хотите создавать локальные учетные записи, уберите опцию login из строки pppd в /etc/mgetty+sendfax/login.config.
8. Включите IP-маршрутизацию (форвардинг)
Чтобы сервер мог пересылать IP-пакеты между интерфейсами, включите форвардинг IPv4:
vi /etc/sysctl.confУбедитесь, что присутствует строка:
net.ipv4.ip_forward = 1Примените изменения:
sysctl -e -p /etc/sysctl.confЕсли у вас используются правила NAT (masquerade), настройте iptables/ nftables для трансляции адресов.
9. Перезапустите init и запустите mgetty
Перечитайте конфигурацию init, чтобы mgetty стартовал на портах:
/sbin/telinit qПроверьте, что процессы mgetty запущены и слушают соответствующие tty.
10. Тестирование и просмотр логов
Пусть удалённый абонент позвонит на номер модема. На сервере следите за логами в реальном времени:
tail -f /var/log/messagesВ логах вы увидите этапы установления соединения, PAP/CHAP-аутентификацию и запуск pppd. При включённой опции debug вывод будет содержать подробности для отладки.
Проверка работоспособности и приёма трафика
- После успешной авторизации проверьте наличие интерфейса ppp0 (или аналогичного) через ip addr или ifconfig.
- Проверьте маршрут по умолчанию и таблицу маршрутов: ip route.
- Проверьте, проходит ли трафик через ваш сервер (traceroute, ping).
Типичные ошибки и шаги отладки
- Нет ответа модема: проверьте питание модема и соответствие /dev/ttyS* с физическим портом.
- mgetty не запускается: проверьте /etc/inittab на синтаксис и выполните /sbin/telinit q.
- pppd не стартует: проверьте, раскомментирована ли строка AutoPPP и корректны ли файлы в /etc/ppp.
- Ошибки аутентификации: проверьте /etc/ppp/pap-secrets и системные пароли (если используется login).
- Клиент подключён, но нет доступа в Интернет: проверьте ip_forward и правила NAT (iptables -t nat -L).
Контроль безопасности
- Ограничьте количество модемных линий и настройте ограничения скорости, если нужно.
- Используйте сложные пароли и, при возможности, CHAP вместо PAP (CHAP более безопасен).
- Отключите опцию login, если не хотите, чтобы pppd обращался к локальным учетным записям.
- Журналируйте и мониторьте попытки подключения. Регулярно просматривайте /var/log/messages.
- Если вы предоставляете доступ посторонним, настройте фильтрацию трафика с помощью iptables/nftables и минимизируйте сервисы, доступные через входящие соединения.
Альтернативные подходы
- Использовать pppd напрямую с getty или custom scripts, минуя mgetty.
- Применять более современные средства удалённого доступа: VPN (OpenVPN, WireGuard) вместо модемного доступа, если есть широкополосная связь.
- Для больших сетей — RADIUS/AAA-сервер для централизованной аутентификации вместо локальных pap-secrets.
Модель принятия решений (когда использовать этот подход)
- Подходит, если требуется поддержка старого оборудования или удалённый доступ через телефонную сеть.
- Неподходяще для новых развёртываний, где доступ к сети возможен по IP/интернету — лучше настроить VPN.
Контрольный список по ролям
Администратор:
- Подключить модемы и проверить tty-порты.
- Настроить /etc/inittab и запуск mgetty.
- Настроить /etc/ppp/options.server и options.ttyS*.
- Добавить записи в /etc/ppp/pap-secrets.
- Включить ip_forward и настроить NAT.
Оператор поддержки:
- Следить за /var/log/messages.
- Помогать пользователям при ошибках аутентификации.
- Перезагружать службы при необходимости.
Пользователь:
- Иметь имя и пароль, указанные в pap-secrets.
- Знать номер телефона модема и настройки PPP на клиенте.
Пример методологии развёртывания (кратко)
- Подготовка оборудования и резервное копирование конфигов.
- Подключение модемов, автоматическое обнаружение (kudzu или вручную).
- Настройка mgetty и тестовый вызов на один порт.
- Настройка PPP (общие и портовые опции).
- Добавление пользователей и тестирование аутентификации.
- Включение маршрутизации, NAT и ограничений безопасности.
- Мониторинг логов и корректировка.
Критерии приёмки
- Клиент успешно дозванивается и проходит аутентификацию.
- После подключения у клиента есть доступ к сети/Интернету.
- Логи не содержат критических ошибок в течение тестовой сессии.
Резюме
Вы успешно настроили Linux для приёма модемных вызовов и предоставления сетевого доступа через PPP. Основные шаги: подключение модемов, запуск kudzu, настройка mgetty через /etc/inittab, раскомментирование AutoPPP в /etc/mgetty+sendfax/login.config, создание /etc/ppp/options.* и /etc/ppp/pap-secrets, включение ip_forward и запуск служб. Обязательно настройте безопасность и мониторинг логов.
Важно: перед внесением изменений делайте резервные копии конфигураций и тестируйте каждую линию по отдельности.
Список полезных файлов и команд (чтобы быстро найти):
- /etc/inittab — конфигурация mgetty (строки respawn)
- /etc/mgetty+sendfax/login.config — опция AutoPPP
- /etc/ppp/options.server — общие опции pppd
- /etc/ppp/options.ttyS0 — опции для конкретного порта
- /etc/ppp/pap-secrets — пары логин/пароль для PAP
- /etc/sysctl.conf — net.ipv4.ip_forward
- Команды: kudzu, /sbin/telinit q, tail -f /var/log/messages, ip addr, ip route, ifconfig, iptables/nftables
Сводка ключевых шагов:
- Подключите модемы и проверьте tty.
- Запустите kudzu или выполните ручную настройку.
- Добавьте строки mgetty в /etc/inittab и перечитайте init.
- Раскомментируйте AutoPPP и настройте /etc/ppp/*.
- Включите маршрутизацию и при необходимости NAT.
- Тестируйте и контролируйте логи.
Похожие материалы
Несколько аккаунтов Skype: Multi Skype Launcher
Журнал для работы: повысить продуктивность
Персональные звуки уведомлений на Android
Скачивание шоу Hulu для офлайн‑просмотра
Microsoft Start: персонализированная новостная лента