И вот, случилось "это" - пришли к нам супер-скоростя. На днях в телефонной трубке раздался женский голос, приятного тембра, преисполненный сдержанной гордости за содеянное и предвосхищения предстоящим, вежливый, но непреклонный в намерении не дать мне уклонится от чести приобщения к высокому. Голос сказал, что ID-Net от АО "Казахтелком" заменяет в моём доме услугу предоставления доступа к сети Интернет по ADSL. Голос в трубке дал мне понять, что если я не подключу себе ID-Net вместо ADLS, то доступ к "одноклассникам" и "весёлой ферме" очень скоро перестанет иметь место быть. По случайности, в это время в моём подъезде проходила бригада из трёх монтёров с бухтами кабелей, стремянками и перфораторами. Не желаю ли я, раз уж так совпало, переключится на ID-Net прямо сейчас? Желаю.
После того, как Ethernet кабель был проложен и расключен, сотрудники провайдера-"не монополиста" оставили меня наедине с моим Linux-ом, сказав, что с такими задротами, как я, растрачивающими время на возню со всякой хренью, вместо того, чтобы своровать Windows и спокойно пить пиво, возится не имеют времени и желания. Поспрашивав их, пришёл к предположению, что для авторизации используется технология PPPoE.
На сайте провайдера настроек или объяснения процесса подключения не нашлось, разумеется. Сделаем это сами, исходя из предположения, что подключение можно провернуть с помощью PPPoE.
Для начала устанавливаем необходимый пакет:
# aptitude install pppoe
Загружаем модуль ядра поддержки PPPoE, имеющийся во всех распространённых дистрибутивах Linux:
# modprobe pppoe
# lsmod | grep pppoe
....
pppoe 8445 0
....
pppoe 8445 0
....
Велим модулю загружаться при старте системы:
# echo "pppoe" >> /etc/modules
Создадим конфигурацию PPPoE подключения:
# touch /etc/ppp/peers/idnet
Приведём содержимое файла к следующему виду:
# cat /etc/ppp/peers/idnet
# Логин пользователя
user username
# Способ и параметры запуска подключения
pty "/usr/sbin/pppoe -I eth0 -T 80"
# Указание использовать полученные от провайдера IP
noipdefault
# Согласие использовать полученные от провайдера адреса DNS серверов
usepeerdns
# Указание использовать подключение в качестве маршрута по умолчанию
defaultroute
# Скрываем пароль из отображения в терминал и журнал событий
hide-password
# Если я верно понял - это указание переопределить все параметры, примененные до указанных в этой конфигурации
connect /bin/true
# Указание пере-подключатся в случае потери соединения
persist
# Что-то умное
lcp-echo-interval 20
lcp-echo-failure 3
mtu 1492
noauth
noaccomp
default-asyncmap
user username
# Способ и параметры запуска подключения
pty "/usr/sbin/pppoe -I eth0 -T 80"
# Указание использовать полученные от провайдера IP
noipdefault
# Согласие использовать полученные от провайдера адреса DNS серверов
usepeerdns
# Указание использовать подключение в качестве маршрута по умолчанию
defaultroute
# Скрываем пароль из отображения в терминал и журнал событий
hide-password
# Если я верно понял - это указание переопределить все параметры, примененные до указанных в этой конфигурации
connect /bin/true
# Указание пере-подключатся в случае потери соединения
persist
# Что-то умное
lcp-echo-interval 20
lcp-echo-failure 3
mtu 1492
noauth
noaccomp
default-asyncmap
Описываем сетевые интерфейсы так, какими мы желаем их видеть:
# cat /etc/network/interfaces
....
# Разрешаем Ethernet интерфейсу, к которому подключен "линк" автоматически включатся и быть управляемым сторонними приложениями
auto eth0
allow-hotplug eth0
....
# Придумываем виртуальный сетевой интерфейс ppp0, работающий по технологии PPP, используя конфигурацию, размещённую в файле с именем idnet (в директории /etc/ppp/peers)
auto ppp0
iface ppp0 inet ppp
provider idnet
....
# Разрешаем Ethernet интерфейсу, к которому подключен "линк" автоматически включатся и быть управляемым сторонними приложениями
auto eth0
allow-hotplug eth0
....
# Придумываем виртуальный сетевой интерфейс ppp0, работающий по технологии PPP, используя конфигурацию, размещённую в файле с именем idnet (в директории /etc/ppp/peers)
auto ppp0
iface ppp0 inet ppp
provider idnet
....
Размещаем, в положенном ему месте, пароль, используемый подключением PPPoE:
# cat /etc/ppp/pap-secrets
....
megaline * megaline
username * password
megaline * megaline
username * password
Практически - на этом всё. Можно перезапустить сетевую подсистему. Сразу после того, как она перечитает конфигурацию, соединение PPPoE, настроенное на автоматический запуск, будет инициировано:
# /etc/init.d/networking restart
Проверяем, запустилось ли приложение pppoe:
# ps waxf | grep -v grep | grep ppp
3442 ? S 0:00 /usr/sbin/pppd call idnet
3444 ? S 0:00 \_ sh -c /usr/sbin/pppoe -I eth0 -T 80
3447 ? S 0:00 \_ /usr/sbin/pppoe -I eth0 -T 80
3444 ? S 0:00 \_ sh -c /usr/sbin/pppoe -I eth0 -T 80
3447 ? S 0:00 \_ /usr/sbin/pppoe -I eth0 -T 80
Возможно даже, сразу заработает "сеть":
# ifconfig
eth0
Link encap:Ethernet HWaddr ....
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:760 errors:0 dropped:0 overruns:0 frame:0
TX packets:791 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:130351 (127.2 KiB) TX bytes:86394 (84.3 KiB)
Interrupt:16
ppp0
Link encap:Point-to-Point Protocol
inet addr:95.59.193.67 P-t-P:95.58.144.8 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:276 errors:0 dropped:0 overruns:0 frame:0
TX packets:327 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:113252 (110.5 KiB) TX bytes:35949 (35.1 KiB)
Link encap:Ethernet HWaddr ....
UP BROADCAST RUNNING PROMISC MULTICAST MTU:1500 Metric:1
RX packets:760 errors:0 dropped:0 overruns:0 frame:0
TX packets:791 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:1000
RX bytes:130351 (127.2 KiB) TX bytes:86394 (84.3 KiB)
Interrupt:16
ppp0
Link encap:Point-to-Point Protocol
inet addr:95.59.193.67 P-t-P:95.58.144.8 Mask:255.255.255.255
UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1492 Metric:1
RX packets:276 errors:0 dropped:0 overruns:0 frame:0
TX packets:327 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:3
RX bytes:113252 (110.5 KiB) TX bytes:35949 (35.1 KiB)
Если что-то не пошло - начинаем рыть.
Для начала, следовало бы попробовать заслать запрос на все сетевые интерфейсы на предмет обнаружения оборудования, осуществляющего терминирование сессий PPPoE:
# pppoe-discovery
Замечательно, если таковое обнаружится:
Access-Concentrator: Megaline-OPTS73
Got a cookie: da 27 01 8e b8 3a 87 3e 19 8e 06 e1 44 d7 a5 25
--------------------------------------------------
AC-Ethernet-Address: 00:90:1a:a3:d4:9f
Got a cookie: da 27 01 8e b8 3a 87 3e 19 8e 06 e1 44 d7 a5 25
--------------------------------------------------
AC-Ethernet-Address: 00:90:1a:a3:d4:9f
Тут всё просто: наше оборудование посылает в линию пакеты PADI (Initiation) и ждет в ответ пакеты PADO (Offer) от концентратора провайдера. Если оно не дожидается ответа, то далее дороги нет. Варианта развития событий три: неисправно наше оборудование, повреждена линия связи или имеют место быть проблемы у провайдера, связанные с нестабильной работой используемого нами физического порта (DSL или Ethernet). Если первый вариант отпадает, второй отработан, то остаётся лишь звонить в службу поддержки провайдера в надежде достаточно быстро попасть на вменяемого специалиста.
Для дальнейшей локализации проблемы стоит запустить подключение вручную, указав ему не "отрываться" от терминала:
# pppd call idnet nodetach
Классно, если увидим нечто, вроде этого:
Serial connection established.
Using interface ppp0
Connect: ppp0 <--> /dev/pts/4
PAP authentication succeeded
local IP address 95.59.193.67
remote IP address 95.58.144.8
primary DNS address 212.154.163.162
secondary DNS address 95.56.237.24
....
Using interface ppp0
Connect: ppp0 <--> /dev/pts/4
PAP authentication succeeded
local IP address 95.59.193.67
remote IP address 95.58.144.8
primary DNS address 212.154.163.162
secondary DNS address 95.56.237.24
....
Пробежимся по сайтам и прервём соединение:
Ctrl+C
....
^CTerminating on signal 2
Connect time 18.9 minutes.
Sent 38803 bytes, received 116323 bytes.
Connection terminated.
pppoe: read (asyncReadFromPPP): Session 2381: Input/output error
Child process /usr/sbin/pppoe -I eth0 -T 80 (pid 3100) terminated with signal 2
^CTerminating on signal 2
Connect time 18.9 minutes.
Sent 38803 bytes, received 116323 bytes.
Connection terminated.
pppoe: read (asyncReadFromPPP): Session 2381: Input/output error
Child process /usr/sbin/pppoe -I eth0 -T 80 (pid 3100) terminated with signal 2
Возможно, что мы получим отказ в доступе:
Serial connection established.
Using interface ppp0
Connect: ppp0 <--> /dev/pts/4
Remote message: Access Denied
PAP authentication failed
Modem hangup
Connection terminated.
Using interface ppp0
Connect: ppp0 <--> /dev/pts/4
Remote message: Access Denied
PAP authentication failed
Modem hangup
Connection terminated.
Скорее всего дело в том, что не была использована авторизация PAP, в то время как провайдер АО "Казахтелеком" поддерживает только её. При попытке анонимного доступа или использования CHAP - получим в логи следующее:
....
pppoe: Timeout waiting for PADO packets
....
pppoe: Timeout waiting for PADO packets
....
Ну и, напоследок:
Запуск PPPoE:
# pon idnet
Останов PPPoE:
# poff idnet
27 марта 2011 в 12:33
27 марта 2011 в 13:24
27 марта 2011 в 21:57
30 марта 2011 в 19:11
27 марта 2011 в 13:28
4 апреля 2011 в 00:30
4 апреля 2011 в 11:03