Провайдер в домашних условиях

Andrushock

Xakep, номер #054, стр. 054-070-4


$ ls /etc/mgetty+sendfax

dialin.config login.config mgetty.config

Первый из них не представляет для нас никакого интереса, во втором должна быть всего лишь одна строчка:

# vi /etc/mgetty+sendfax/login.config

/AutoPPP/ - a_ppp /usr/sbin/pppd file /etc/ppp/options

Третий будет содержать все опции, которые необходимо передать mgetty:

# vi /etc/mgetty+sendfax/mgetty.config

debug 5 # указываем степень журналирования

port ttyS0 # определяем, к какому порту подключен наш модем

speed 57600 # скорость порта

data-only y # факсимильная поддержка не требуется

init-chat "" ATZ OK ATS0=1 OK # строка инициализации модема

Команда ATS0=1 как раз указывает, что при входящем звонке модем должен брать трубу. Альтернативным вариантом будет использование ключевого слова "answer-chat", к примеру:

init-chat "" AT OK ATZ OK

answer-chat "" ATA CONNECT \c \r

При желании это можно сократить до:

init-chat "" ATZ OK

answer-chat "" ATA

Для того чтобы mgetty подцепила и сконфигурировала наш модем, в файле описания различных режимов работы операционки нужно добавить запись, содержащую идентификатор (можно указать любой - он используется как комментарий для удобства), уровни исполнения, активность mgetty, путь до бинарика mgetty и асинхронный последовательный порт, к которому подключен наш высокоскоростной модем.

# vi /etc/inittab

S0:345:respawn:/sbin/mgetty /dev/ttyS0

И заставим демона init перечитать /etc/inittab:

# init q

После этой команды должен загореться (естественно, если модем внешний) светодиод TR (либо MTR, в зависимости от модели и производителя) - это значит, что mgetty правильно подхватил модем и мы на верном пути. Теперь, для контрольного теста, попробуй позвонить на модем. Он должен при первом же гудке снять трубу и начать соединение. Если этого не произошло, то начинай разгребать /var/log/messages, /var/log/mgetty.log.ttyS0 и выяснять причину.

Осталось совсем немного - законфигурить pppd и добавить юзверей. Приступаем:

# vi /etc/ppp/options

// указываем, какие управляющие символы преобразовывать в Esc-последовательность

asyncmap 0

// требуем от клиента аутентифицироваться, используя PAP/CHAP

auth

// применяем аппаратный протокол установления связи через /dev/ttyS0

crtscts

// не будем переходить в фоновый режим

-detach

// создаем файл блокировки для последовательного устройства

lock

// используем теневой файл с паролями для PAP

login

// используем все сигналы управления модемами

modem

// отменяем поддержку CHAP

-chap

// только PAP

+pap

// стандартные твики диалапщиков

mtu 576

mru 576

// заставляем локальный хост отправлять все запросы от имени клиента

proxyarp

// отключаем неиспользуемые протоколы

noipv6

noipx

// IP-адрес локального хоста, выделяемый клиенту IP-адрес

192.168.1.41:192.168.1.51

// маска подсети

netmask 255.255.255.0

// IP-адрес нашего DNS-сервера

192.168.1.1

С помощью механизма sysctl включаем перенаправление IP-пакетов между сетевыми интерфейсами:

# sysctl -w net.ipv4.ip_forward=1

Добавляем диалапщика в систему, вводим и подтверждаем пароль:

Назад на стр. 054-070-3  Содержание  Вперед на стр. 054-070-5