Linux > настройка pppoe-соединения в debian
19.01.2016 12:39:28
Наиболее часто встречающиеся слова в статье:
[соединения] [адаптер] [packets] [dropped] [overruns] [dsl-provider] [соединение] [пользователя] [сетевой] [Интернет]
Статья:
Дано:
-
Компьютер с установленной системой Debian Squeeze;
-
Провайдер Интернет-услуг, предоставляющий доступ по PPPoE с выдачей локального или реального ip-адреса соединению пользователя;
-
Транспортная сеть не используется и компьютер подключён непосредственно к xDSL-модему, работающему в режиме моста (Bridge);
Задача: настроить
PPPoE-соединение для выхода в сеть Интернет через провайдера.
Уровень пользователя: средний,
умеющий работать в консоли, с файловыми менеджерами и с текстовыми
редакторами.
Решение:
Предполагается, что:
-
модем правильно настроен: работает в режиме моста и установлены параметры VPI и VCI;
-
для администрирования модем имеет адрес 192.168.1.1;
-
в компьютере установлена сетевая плата и именована как eth0 .
Для
настройки PPPoE-соединения, провайдер должен выдать параметры этого
соединения. Предположим они такие:
логин: | UserName |
пароль: | user-007 |
тип аутентификации: | CHAP, MS-CHAP |
параметры TCP\IP: IP-адрес соединения, DNS-сервера | выдаются провайдером автоматически |
шифрование данных: | нет |
компрессия данных: | нет |
Шаг 1. Установка дополнительных пакетов
Доустанавливаем необходимые пакеты с зависимостями:
# apt-get install pppoe
Так как доступа в Интернет ещё не имеется, установку пакетов делаем с компакт-дисков дистрибутива (содержится на первом DVD-диске) или скачиваем вручную с репозиториев сайта (для этого потребуются пакеты pppoe и ppp)
Шаг 2. Настройка сетевого адаптера
Если
сетевой адаптер, который подключается к модему, ранее уже был настроен -
пропускаем этот шаг.
Настроим
сетевой адаптер, чтобы можно было заходить на модем и администрировать его
посредством телнета или браузера. Ещё пользователю надо определиться, будет
ли подключение стартовать при включении машины или только вручную.
Для начала определим, видит ли ядро сетевой адаптер, для чего вводим:
# dmesg|grep eth0 [[| 1.120454]] eth0: VIA Rhine III at 0x1e400, 01:a6:40:14:1f:a6, IRQ 17. [[| 1.121176]] eth0: MII PHY found at address 1, status 0x786d advertising 05e1 Link 45e1. [[| 9.113313]] via-rhine 0000:03:01.0: eth0: link up, 100Mbps, full-duplex, lpa 0x45E1 [[| 19.968028]] eth0: no IPv6 routers present
Если в ответ появились подобные строки (достаточно первых двух), значит ядро определило адаптер и загрузило соответствующие модули для поддержки его работы. Если подобных строк вообще не появилось в ответ на ввод команды, значит либо адаптер отключен в БИОС`е (справедливо для сетевых карт, встроенных в материнскую плату) или ядро его не распознало. Проверьте включен ли адаптер в БИОС`е. Если ядро не распознаёт адаптер, придётся приобрести и вставить в PCI или PCI-X слот сетевую карту.
Когда вопрос с адаптером решён, останавливаем работу сети на машине:
# /etc/init.d/networking stop
В текстовом редакторе, из под учётной записи root`а открываем файл /etc/network/interfaces и добавляем такие строки:
- interfaces
-
auto lo # строка уже должна присутствовать iface lo inet loopback # строка уже должна присутствовать # Настройка адаптера ppp0 allow-hotplug eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 network 192.168.1.0 broadcast 192.168.1.255 auto eth0
Строки в секции ppp0 конфигурируют сетевую карту: дают ей адрес 192.168.1.2 и устанавливают режим автоинициализации при подключении кабеля (включении модема).
После внесения изменений сохраняем файл. Далее подключаем сетевой кабель, даём питание модему, убеждаемся что на адаптере и на модеме загорелись лампочки, индицирующие связь между устройствами. Теперь запускаем сеть:
# /etc/init.d/networking start
Если всё прошло успешно, введя команду ifconfig должно быть что-то подобное:
# ifconfig eth0 Link encap:Ethernet HWaddr 01:a6:40:14:1f:a6 inet addr:192.168.1.2 Bcast:192.168.51.255 Mask:255.255.255.0 inet6 addr: fe80::16d6:01a6:4014:1fa6/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:5363933 errors:0 dropped:3858 overruns:0 frame:0 TX packets:9890505 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:1000 RX bytes:416 (416 B) TX bytes:192 (192 B) Interrupt:16 Base address:0xe800 lo Link encap:Local Loopback inet addr:127.0.0.1 Mask:255.0.0.0 inet6 addr: ::1/128 Scope:Host UP LOOPBACK RUNNING MTU:16436 Metric:1 RX packets:12886 errors:0 dropped:0 overruns:0 frame:0 TX packets:12886 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:875393 (854.8 KiB) TX bytes:875393 (854.8 KiB)
Если в секции eth0 есть нечто подобное, значит адаптер работает. Дополнительно это можно проверить пингуя модем. В данном случае, модем имеет адрес 192.168.1.1:
$ ping 192.168.1.1 PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data. 64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=4.84 ms 64 bytes from 192.168.1.1: icmp_req=2 ttl=64 time=3.37 ms 64 bytes from 192.168.1.1: icmp_req=3 ttl=64 time=3.03 ms 64 bytes from 192.168.1.1: icmp_req=4 ttl=64 time=2.88 ms ^C --- 192.168.1.1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3004ms rtt min/avg/max/mdev = 2.888/3.536/4.849/0.779 ms
Для
остановки процесса жмём Ctrl + C
Если присутствуют подобные строки, значит обмен между модемом и компьютером
работает - можно продолжать дальнейшую настройку.
Шаг 3. Настройка PPPoE-соединения
Настройку непосредственно PPPoE-соединения можно выполнить через правку конфигурационных файлов или через программы с графическим интерфейсом, такие как Network Manager или KVpnc. Далее, в статье пойдёт речь о настройке соединения посредством правки конфигурационных файлов, как универсальный метод, не требующий доустановки кучи программ.
В каталоге /etc/ppp/peers создаём конфигурационный файл параметров соединения и назовём его для примера dsl-provider :
- dsl-provider
-
user UserName pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452" noipdefault usepeerdns defaultroute holdoff 15 maxfail 0 hide-password lcp-echo-interval 20 lcp-echo-failure 3 connect /bin/true noauth persist mtu 1412 noaccomp default-asyncmap unit 0
Пояснения к параметрам:
user UserName | указывает на логин, пароль к которому необходимо взять из файла /etc/ppp/chap-secrets |
pty "/usr/sbin/pppoe -I eth0 -T 80 -m 1452" | строка инициализации, вместо eth0 нужно указать адаптер, через который будет работать pppoe |
noipdefault | указывает, что ip-адрес выдаётся провайдером. |
usepeerdns | переключить параметры DNS-сервера с глобальных (/etc/resolv.conf) на те, что выдаёт провайдер при установке соединения. При завершении соединения, глобальные параметры возвращаются обратно. |
defaultroute | указывает устанавливать для компьютера основной маршрут, выдаваемый провайдером для PPPoE-соединения |
holdoff 15 | пауза между попытками (требуется для завершения всех процессов на стороне провайдера, если разрыв произошёл аварийно |
maxfail 0 | количество попыток восстановить соединение, 0 - пробовать бесконечно |
hide-password | скрывать пароль из записей лога |
lcp-echo-interval 20 | интервал между тестами канала на работоспособность, секунд |
lcp-echo-failure 3 | это количество попыток проверки работоспособности канала, после которого соединение отключается, в случае, если проверка оказалась неуспешной |
connect /bin/true | разрешить соединение |
noauth | строка запрещает использовать обратную аутентификацию |
persist | после аварийного разрыва канала, всё-равно пытаться создать соединение |
mtu 1412 | уменьшать размеры передаваемых в Интернет сетевых пакетов до 1412 байт. |
noaccomp | не сжимать адреса в канале |
default-asyncmap | |
unit 0 | порядковый номер идентификатора соединения (циферка после ppp, например ppp0) |
Если провайдер использует другой тип аутентификации нежели CHAP\MS-CHAP - почитайте man pppd на предмет опций: require-mschap, require-chap,require-pap.
Теперь открываем и редактируем файл паролей /etc/ppp/chap-secrets и вводим в него логин и пароль для соединения:
- chap-secrets
-
# Secrets for authentication using CHAP # client server secret IP addresses "UserName" * "user-007"
Не помешает дать права на чтение файлу /etc/ppp/chap-secrets только для root`а, если таковые ещё не установлены:
# chmod 600 /etc/ppp/chap-secrets
Опробование соединения и диагностика
Когда всё настроено, пробуем запустить соединение командой pon от имени root`а:
# pon dsl-provider
Здесь
dsl-provider - это имя, которое дали файлу настроек соединения
/etc/ppp/peers/dsl-provider.
Через несколько секунд, проверяем что соединение активно, командой ifconfig.
Кроме секций lo и eth0 должна
появиться секция ppp0,
примерно так:
... ppp0 Link encap:Point-to-Point Protocol inet addr:10.10.142.16 P-t-P:10.10.0.1 Mask:255.255.255.255 UP POINTOPOINT RUNNING NOARP MULTICAST MTU:1412 Metric:1 RX packets:304 errors:0 dropped:0 overruns:0 frame:0 TX packets:542 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:30 RX bytes:64800 (43.2 KiB) TX bytes:193600 (129.0 KiB) ...
Если такой секции не появилось, то изучаем лог-файлы /var/log/daemon и /var/log/syslog в поисках причины неработоспособности.
Для разрыва соединения используем команду poff:
# poff dsl-provider
Дополнительно
Тонкости, которые могут пригодиться в работе.
Управление соединением без прав root`а
Когда соединение настроено и проверено, нужно сконфигурировать операционную систему так, чтобы запускать соединение не от имени учётной записи root`а, а от имени обычного пользователя. Здесь поможет статья Настройка sudo - отредактируйте файл /etc/sudoers до примерно такого вида:
- sudoers
-
root ALL=(ALL) ALL Host_Alias LOCALHOST = localhost, compname username LOCALHOST = NOPASSWD: /usr/bin/poff, /usr/bin/pon
, где вместо compname - подставьте своё имя компьютера, username - имя пользователя, который будет манипулировать VPN-соединением.
Автостарт соединения при загрузке операционной системы
Если кто хочет, чтобы PPPoE-соединение автоматически запускалось при включении машины, в конец файла /etc/network/interfaces, нужно добавить такие строки:
- interfaces
-
auto dsl-provider iface dsl-provider inet ppp
, где dsl-provider - имя нашего pppoe-соединения.