The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Настройка dial-in модемного пула под Linux (modem dialup ppp getty linux nat)


<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: modem, dialup, ppp, getty, linux, nat,  (найти похожие документы)
From: Den aka Diesel <http://diesel.tomsk.ru/>; Date: Mon, 20 Sep 2004 18:21:07 +0000 (UTC) Subject: Настройка dial-in модемного пула под Linux Оригинал: http://slackware.tomsk.ru/docs/?p=modem-pool Постановка задачи Допустим, у вас есть подключенная к сети по скоростному каналу машина под управлением Linux, модем и телефонная линия (или несколько линий и модемов). В такой ситуации возникает соблазн сделать из всего этого dial-in сервер, чтобы иметь dial-up доступ к этой машине и к сети из любого места. Необходимо заметить, что модемы при этом должны быть настроены на автоответ на входящий звонок (как именно это сделать - смотрите в документации к вашему модему). Кстати, если вам понадобится программа-терминал для конфигурирования модема - можете воспользоваться minicom (входит в комплект пакетов Slackware). Конфигурация ядра Собираем ядро с поддержкой PPP (Point to Point Protocol), поддержкой асинхронных последовательных линий и поддержкой алгоритмов компрессии для PPP соединений (секция Network device support): CONFIG_PPP=y # PPP (point-to-point protocol) support CONFIG_PPP_ASYNC=y # PPP support for async serial ports CONFIG_PPP_DEFLATE=y # PPP Deflate compression CONFIG_PPP_BSDCOMP=y # PPP BSD-Compress compression Так как скорее всего вам не захочется тратить реальные адреса на модемные соединения (или у вас просто нет лишних адресов), вполне логично использовать IP-адреса из серого диапазона и воспользоваться механизмом MASQUERADE. Секция Networking options: CONFIG_NETFILTER=y # Network packet filtering (replaces ipchains) CONFIG_INET=y # TCP/IP networking в подменю IP: Netfilter Configuration: CONFIG_IP_NF_CONNTRACK=y # Connection tracking (required for masq/NAT) CONFIG_IP_NF_IPTABLES=y # IP tables support (required for filtering/masq/NAT) CONFIG_IP_NF_NAT=y # Full NAT CONFIG_IP_NF_TARGET_MASQUERADE=y # MASQUERADE target support После этого соответственно нужно пересобрать ядро и перезагруться с ним. Установка и настройка mgetty Нам понадобится mgetty+sendfax, домашняя страница проекта - http://alpha.greenie.net/mgetty/. На текущий момент последняя beta версия mgetty - 1.1.30, однако опытным путем выяснилось, что лучше использовать версию 1.1.28, ибо 1.1.30 у меня как-то странно глючила. Распаковываем тарбол: % tar zxvf ./mgetty1.1.28-Jan10.tar.gz % cd ./mgetty-1.1.28 копируем дефаултный policy.h, на базе него будем составлять свою конфигурацию: % cp ./policy.h-dist ./policy.h Редактируем policy.h, переназначая консоль для вывода сообщений, чтобы всякая ерунда не сыпалась на экран (если нужно - в логах все можно посмотреть): #define CONSOLE "/dev/null" Редактируем Makefile: CFLAGS= -DAUTO_PPP prefix= Компилируем и устанавливаем mgetty: % make % make install Редактируем /etc/mgetty+sendfax/login.config, добавляя туда строчку: /AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/options В /etc/mgetty+sendfax/mgetty.config для каждого порта прописываем (соответственно указывая ttyS0, ttyS1...): port ttyS0 debug 3 data-only y Добавляем в /etc/inittab запуск mgetty init'ом (по строчке на каждый порт): d0:23:respawn:/sbin/mgetty ttyS0 Перезапускаем init (необходимо делать после каждого изменения inittab): % kill -1 1 Настройка pppd За PPP соединения отвечает демон pppd, настроим его так. чтобы при установлении соединения интерфейсу выдавался серый IP-адрес. В /etc/ppp/options прописываем (информацию по этим опциям можно найти, почитав man pppd): modem crtscts -detach mru 1500 mtu 1500 auth +pap login ms-dns 192.168.100.1 netmask 255.255.255.0 значение ms-dns - адрес вашего DNS-сервера, netmask - сетевая маска, выставляемая для всех поднимаемых интерфейсов. Создаем для кажого порта файлик /etc/ppp/options.ttySX (options.ttyS0, options.ttyS1...) и прописываем в нем комбинацию шлюз:адрес (адрес, естественно, для каждой линии свой): 192.168.0.1:192.168.0.10 Заводим в системе модемного пользователя, указывая в качестве шелла /usr/sbin/pppd. Будем пользоваться системной базой паролей, в файлик /etc/ppp/pap-secrets для каждого модемного пользователя добавляем запись: user * "" * Если вам необходимо как-то производить учет и ограничение доступа (accounting/billing) пользователей к пулу (например, установить им временной лимит использования пула), можно для этих целей воспользоваться скриптами /etc/ppp/auth-up, /etc/ppp/ip-up и /etc/ppp/ip-down, /etc/ppp/auth-down, которые исполняются при установлении и окончании соединения соответственно. Настройка masquerade Если проделать вышеописанные действия, уже будет работать доступ до нашего dial-in сервера, но мы хотели пускать дозвонившихся дальше в сеть, для этого-то и воспользуемся MASQUERADE для всей задействованной серой подсети: % /usr/sbin/iptables -t nat -A POSTROUTING -i ppp+ -s 192.168.0.0/24 -j MASQUERADE Для создания более сложных конфигураций почитайте документацию к iptables и netfilter вообще. Как все это работает Теперь окинем взором всю связку: * удаленный пользователель звонит в наш пул, модемы устанавливают соединение * процесс mgetty, обслуживающий эту линию, после установления соединения и определения его типа, запускает процесс pppd и сам тихо умирает * pppd, в свою очередь, авторизует пользователя по системной базе и если все в порядке, поднимает IP-интерфейс в соответствии с конфигом этого порта * IP-пакеты за счет masquerade бегают от пользователя в сеть и обратно, пользователь наслаждается интернетом * по какой-либо причине модемное соединение разрывается (обрыв связи, преднамеренное окончание сеанса со стороны клиента или сервера), процесс pppd, обслуживавший его, запускает финальные скрипты и умирает * init вновь порождает процесс mgetty, призванный обслуживать освободившуюся линию, система готова к следующему звонку Устойчивого CONNECT'а вам! 08.02.2004 Den aka Diesel, http://diesel.tomsk.ru

<< Предыдущая ИНДЕКС Правка src Установить закладку Перейти на закладку Следующая >>

Обсуждение [ RSS ]
  • 1, arruah (ok), 06:55, 28/11/2005 [ответить]  
  • +/
    вот так вот надо документацию писать :)
    спасибо статейка очень помогла.
     
  • 2, gaux (?), 20:36, 20/03/2007 [ответить]  
  • +/
    только вот это не корректно
    % /usr/sbin/iptables -t nat -A POSTROUTING -i ppp+ -s 192.168.0.0/24 -j MASQUERADE
    вместо -i должна быть опция -o
     
     
  • 3, chocholl (??), 09:34, 27/03/2007 [^] [^^] [^^^] [ответить]  
  • +/
    почему же -о?

    все что прилетает с ppp+ маскарадиться в соответствующий ip
    все верно.

    только в форвард правило надо добавить.
    /usr/sbin/iptables -t filter -A FORWARD -i ppp+ -s 192.168.0.0/24 -j ACCEPT

     

  • 4, denk (?), 22:57, 04/04/2007 [ответить]  
  • +/
    Народ может кто подскажет, что делать. При таких настройках при коннекте винда выдает 721 ошибку и собственно молчит сам сервер. Если ставлю notty, то авторизация проходит, но как назначить адрес?
     

    игнорирование участников | лог модерирования

     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру