Настроим подключение к Dial-Up провайдеру, например к казахстанскому Nursat в Павлодаре, в Debian Lenny GNU/Linux.
Предположим, мы уже имеем настроенный виртуальный или физический интерфейс связи нашего компьютера с модемом.
Будем отталкиваться от того, что виртуальный или физический интерфейс связи с нашим модемом имеет имя /dev/ttyS*.
# aptitude install ppp
Озаботимся созданием конфигурации PPP подключения.
В каталоге /etc/ppp/peers/ создаем файл с настройками соединения: nursat.ppp:
# mkdir -p /etc/ppp/peers/
# touch /etc/ppp/peers/nursat.ppp
# touch /etc/ppp/peers/nursat.ppp
# Указываем на тип используемого оборудования для адаптации к применяемому набору сигналов
modem
# Указываем на используемый интерфейс и скорость его работы
/dev/ttyS* 115200
# Указываем на применение аппаратного контроля чётности передаваемых данных
crtscts
# Указываем на применение программного режима контроля чётности передаваемых данных (думаю, что это вариант для "софт" модемов)
# xonxoff
# Указываем на необходимость блокировки порта во время его использования
lock
# Отключаем установленные по умолчанию методы авторизации (далее укажем те, что нам необходимы)
noauth
# Указываем имя, для которого будет осуществляться авторизация на сервере провайдера
name nursat
# Указываем PPPD пере подключаться через пять секунд после потери или безуспешного соединения
persist holdoff 5
# Указываем количество попыток пере подключения до отказа
maxfail 7
# Указываем на скрипт обработки логики соединения с провайдером
connect '/usr/sbin/chat -v -f /etc/ppp/peers/nursat.ppp.chat'
# Указываем на полностью автоматическое получение сетевых настроек
noipdefault
usepeerdns
defaultroute
# Указываем PPPD не отрывать свою сессию от терминала для мониторинга состояния
nodetach
debug
modem
# Указываем на используемый интерфейс и скорость его работы
/dev/ttyS* 115200
# Указываем на применение аппаратного контроля чётности передаваемых данных
crtscts
# Указываем на применение программного режима контроля чётности передаваемых данных (думаю, что это вариант для "софт" модемов)
# xonxoff
# Указываем на необходимость блокировки порта во время его использования
lock
# Отключаем установленные по умолчанию методы авторизации (далее укажем те, что нам необходимы)
noauth
# Указываем имя, для которого будет осуществляться авторизация на сервере провайдера
name nursat
# Указываем PPPD пере подключаться через пять секунд после потери или безуспешного соединения
persist holdoff 5
# Указываем количество попыток пере подключения до отказа
maxfail 7
# Указываем на скрипт обработки логики соединения с провайдером
connect '/usr/sbin/chat -v -f /etc/ppp/peers/nursat.ppp.chat'
# Указываем на полностью автоматическое получение сетевых настроек
noipdefault
usepeerdns
defaultroute
# Указываем PPPD не отрывать свою сессию от терминала для мониторинга состояния
nodetach
debug
В каталоге /etc/ppp/peers/ создаем диалоговый файл nursat.ppp.chat:
# touch /etc/ppp/peers/nursat.ppp.chat
ABORT "ERROR"
ABORT "NO DIALTONE"
ABORT "BUSY"
ABORT "NO ANSWER"
ABORT "NO CARRIER"
ABORT "failed"
ABORT "incorrect"
TIMEOUT 5
"" "AT"
"OK" "ATZ"
"OK" "ATDT390039"
TIMEOUT 80
"CONNECT" "\c"
"" "\c"
ABORT "NO DIALTONE"
ABORT "BUSY"
ABORT "NO ANSWER"
ABORT "NO CARRIER"
ABORT "failed"
ABORT "incorrect"
TIMEOUT 5
"" "AT"
"OK" "ATZ"
"OK" "ATDT390039"
TIMEOUT 80
"CONNECT" "\c"
"" "\c"
В каталоге /etc/ppp/ в файлах "chap-secrets" и "pap-secrets" вносим строки с реквизитами учётных записей для авторизации на сервере провайдера (записи одинаковые для обеих форматов авторизации):
# cat /etc/ppp/chap-secrets
# cat /etc/ppp/pap-secrets
# cat /etc/ppp/pap-secrets
....
# Secrets for authentication for OUTBOUND connections
# client server secret IP addresses
nursat * nursat *
....
# Secrets for authentication for OUTBOUND connections
# client server secret IP addresses
nursat * nursat *
....
Устанавливаем PPP соединение:
# /usr/sbin/pppd call nursat.ppp
Если желательно установить соединение с использованием только метода PAP:
# /usr/sbin/pppd +pap -chap call nursat.ppp
Если желательно установить соединение с использованием только метода CHAP:
# /usr/sbin/pppd -pap +chap call nursat.ppp
Вывод, сопутствующий соединению и указывающий на его успешное осуществление примерно следующий:
Serial connection established.
using channel 24
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS0
....
sent [PAP AuthReq id=0x1 user="nursat" password="nursat"]
....
rcvd [PAP AuthAck id=0x2 ""]
PAP authentication succeeded
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [IPCP ConfReq id=0x4 <compress VJ 0f 00> <addr 195.82.29.70>]
sent [IPCP ConfAck id=0x4 <compress VJ 0f 00> <addr 195.82.29.70>]
rcvd [proto=0x8207] 01 cf 00 04
....
local IP address 192.168.178.108
remote IP address 195.82.29.70
primary DNS address 195.82.0.1
Script /etc/ppp/ip-up started (pid 26784)
Script /etc/ppp/ip-up finished (pid 26784), status = 0x0
....
using channel 24
Using interface ppp0
Connect: ppp0 <--> /dev/ttyS0
....
sent [PAP AuthReq id=0x1 user="nursat" password="nursat"]
....
rcvd [PAP AuthAck id=0x2 ""]
PAP authentication succeeded
sent [CCP ConfReq id=0x1 <deflate 15> <deflate(old#) 15> <bsd v1 15>]
sent [IPCP ConfReq id=0x1 <compress VJ 0f 01> <addr 0.0.0.0> <ms-dns1 0.0.0.0> <ms-dns3 0.0.0.0>]
rcvd [IPCP ConfReq id=0x4 <compress VJ 0f 00> <addr 195.82.29.70>]
sent [IPCP ConfAck id=0x4 <compress VJ 0f 00> <addr 195.82.29.70>]
rcvd [proto=0x8207] 01 cf 00 04
....
local IP address 192.168.178.108
remote IP address 195.82.29.70
primary DNS address 195.82.0.1
Script /etc/ppp/ip-up started (pid 26784)
Script /etc/ppp/ip-up finished (pid 26784), status = 0x0
....
Вывод команды ifconfig укажет на наличие работающего сетевого интерфейса:
ppp0 Link encap:Point-to-Point Protocol
inet addr:192.168.178.108 P-t-P:195.82.29.70 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:5 errors:2 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:68 (68.0 B) TX bytes:103 (103.0 B)
inet addr:192.168.178.108 P-t-P:195.82.29.70 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1500 Metric:1
RX packets:5 errors:2 dropped:0 overruns:0 frame:0
TX packets:5 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:68 (68.0 B) TX bytes:103 (103.0 B)
Вывод команды "netstat -r" покажет активные правила маршрутизации:
Destination Gateway Genmask Flags MSS Window irtt Iface
Loopback0.gw2.p * 255.255.255.255 UH 0 0 0 ppp0
default * 0.0.0.0 U 0 0 0 ppp0
Loopback0.gw2.p * 255.255.255.255 UH 0 0 0 ppp0
default * 0.0.0.0 U 0 0 0 ppp0
Видим, что Dial-Up соединение ppp0 является в данный момент для системы основным и рабочим.
Вот и все, доступ к ресурсам через Dial-Up провайдера настроен. Можно пройти на сайт http://nursat.kz/, единственно доступный для тестового пользователя.
Разорвать соединение можно элементарно:
# killall pppd
Вывод pppd, сопровождающий разрыв соединения:
....
^CTerminating on signal 2
Connect time 0.9 minutes.
Sent 0 bytes, received 0 bytes.
Script /etc/ppp/ip-down started (pid 26956)
sent [LCP TermReq id=0x4 "User request"]
Script /etc/ppp/ip-down finished (pid 26956), status = 0x0
rcvd [LCP TermAck id=0x4]
Connection terminated.
^CTerminating on signal 2
Connect time 0.9 minutes.
Sent 0 bytes, received 0 bytes.
Script /etc/ppp/ip-down started (pid 26956)
sent [LCP TermReq id=0x4 "User request"]
Script /etc/ppp/ip-down finished (pid 26956), status = 0x0
rcvd [LCP TermAck id=0x4]
Connection terminated.
Нужно иметь в виду то, что некоторые модемы не отрабатывают в полной мере функционал завершения сессии, то есть не "опускают трубку" и не осуществляют "сброс параметров" по требованию перед началом соединения (особенно это относится к "софт" модемам). В связи с этим повторное соединение не всегда может быть корректно осуществлено, так как линия "занята"; да и "снятую трубку" в течении длительного времени АТС провайдеров телефонной связи воспринимает как повод к отключению линии.