Различия

Здесь показаны различия между двумя версиями данной страницы.

Ссылка на это сравнение

настройка_pppoe-соединения_в_debian_squeeze [2015/02/23 05:28] (текущий)
vovka Перенос со старой wiki
Строка 1: Строка 1:
 +=====  Условия задачи ​ =====
 +**//​Дано://​** \\  ​
 +  -  Компьютер с установленной системой 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. Установка дополнительных пакетов ​ =====
 +Доустанавливаем необходимые пакеты с зависимостями:​
 +<​code>​
 + # apt-get install pppoe
 +</​code>​
 +Так как доступа в Интернет ещё не  имеется,​ установку пакетов делаем с компакт-дисков дистрибутива (содержится на первом DVD-диске) или скачиваем вручную с репозиториев сайта (для этого потребуются пакеты pppoe и ppp) 
 +
 +
 +=====  Шаг 2. Настройка сетевого адаптера ​ =====
 +Если сетевой адаптер,​ который подключается к модему,​ ранее уже был настроен - пропускаем этот шаг. \\  ​
 +
 +Настроим сетевой адаптер,​ чтобы можно было заходить на модем и администрировать его посредством телнета или браузера. Ещё пользователю надо определиться,​ будет ли подключение стартовать при включении машины или только вручную.\\ ​  
 +Для начала определим,​ видит ли ядро сетевой адаптер,​ для чего вводим: ​
 +<​code> ​
 + # 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
 +</​code>​
 +Если в ответ появились подобные строки (достаточно первых двух), значит ядро определило адаптер и загрузило соответствующие модули для поддержки его работы. Если подобных строк вообще не появилось в ответ на ввод команды,​ значит либо адаптер отключен в БИОС`е (справедливо для сетевых карт, встроенных в материнскую плату) или ядро его не распознало. Проверьте включен ли адаптер в БИОС`е. Если ядро не распознаёт адаптер,​ придётся приобрести и вставить в PCI или PCI-X слот сетевую карту. ​
 +
 +Когда вопрос с адаптером решён, останавливаем работу сети на машине:​
 +<​code>​
 + # /​etc/​init.d/​networking stop
 +</​code>​
 +В текстовом редакторе,​ из под учётной записи root`а открываем файл **/​etc/​network/​interfaces** и добавляем такие строки:​
 +<file bash 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
 +</​file>​
 +Строки в секции ppp0 конфигурируют сетевую карту: дают ей адрес 192.168.1.2 и устанавливают режим автоинициализации при подключении кабеля (включении модема).
 +
 +После внесения изменений сохраняем файл. Далее подключаем сетевой кабель,​ даём питание модему,​ убеждаемся что на адаптере и на модеме загорелись лампочки,​ индицирующие связь между устройствами. Теперь запускаем сеть:
 +<​code>​
 + # /​etc/​init.d/​networking start
 +</​code>​
 +Если всё прошло успешно,​ введя команду //​ifconfig//​ должно быть что-то подобное:​
 +<​code>​
 +# 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)
 +</​code>​
 +Если в секции //eth0// есть нечто подобное,​ значит адаптер работает. Дополнительно это можно проверить //​пингуя//​ модем. В данном случае,​ модем имеет адрес 192.168.1.1:​
 +<​code>​
 + $ 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
 +</​code>​
 +//Для остановки процесса жмём Ctrl + C//​\\  ​
 +Если присутствуют подобные строки,​ значит обмен между модемом и компьютером работает - можно продолжать дальнейшую настройку.
 +
 +=====  Шаг 3. Настройка PPPoE-соединения ​ =====
 +Настройку непосредственно PPPoE-соединения можно выполнить через правку конфигурационных файлов или через программы с графическим интерфейсом,​ такие как **Network Manager** или **KVpnc**. Далее, в статье пойдёт речь о настройке соединения посредством правки конфигурационных файлов,​ как универсальный метод, не требующий доустановки кучи программ.
 + 
 +В каталоге /​etc/​ppp/​peers создаём конфигурационный файл параметров соединения и назовём его для примера **//​dsl-provider//​** :
 +<file bash 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
 +</​file>​
 +
 +Пояснения к параметрам:​
 +|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 и вводим в него логин и пароль для соединения:​
 +<file bash chap-secrets>​
 +# Secrets for authentication using CHAP
 +# client ​       server ​ secret ​                 IP addresses
 +"​UserName"​ * "​user-007"​
 +</​file>​
 +Не помешает дать права на чтение файлу /​etc/​ppp/​chap-secrets только для root`а, если таковые ещё не установлены:​
 +<​code>​
 + # chmod 600 /​etc/​ppp/​chap-secrets
 +</​code>​
 +
 +=====  Опробование соединения и диагностика ​ =====
 +Когда всё настроено,​ пробуем запустить соединение командой **pon** от имени root`а:
 +<​code>​
 + # pon dsl-provider
 +</​code>​
 +Здесь dsl-provider - это имя, которое дали файлу настроек соединения /​etc/​ppp/​peers/​dsl-provider. \\  ​
 +Через несколько секунд,​ проверяем что соединение активно,​ командой ifconfig. Кроме секций //lo// и //eth0// должна появиться секция //ppp0//, примерно так:
 +<​code>​
 + ...
 + ​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)
 + ...
 +</​code>​
 +Если такой секции не появилось,​ то изучаем лог-файлы /​var/​log/​daemon и /​var/​log/​syslog в поисках причины неработоспособности.
 +
 +Для разрыва соединения используем команду **poff**:
 +<​code>​
 + # poff dsl-provider
 +</​code>​
 +
 +=====  Дополнительно ​ =====
 +Тонкости,​ которые могут пригодиться в работе.
 +====  Управление соединением без прав root`а ​ ====
 +Когда соединение настроено и проверено,​ нужно сконфигурировать операционную систему так, чтобы запускать соединение не от имени учётной записи root`а, а от имени обычного пользователя. Здесь поможет статья [[Настройка sudo]] - отредактируйте файл /​etc/​sudoers до примерно такого вида:
 +<file bash sudoers>
 +root ALL=(ALL) ALL 
 +Host_Alias LOCALHOST = localhost, compname
 +username LOCALHOST = NOPASSWD: /​usr/​bin/​poff,​ /​usr/​bin/​pon
 +</​file>​
 +, где вместо **compname** - подставьте своё имя компьютера,​ **username** - имя пользователя,​ который будет манипулировать VPN-соединением.
 +
 +====  Автостарт соединения при загрузке операционной системы ​ ====
 +Если кто хочет, чтобы PPPoE-соединение автоматически запускалось при включении машины,​ в конец файла /​etc/​network/​interfaces,​ нужно добавить такие строки:​
 +<file bash interfaces>​
 +auto dsl-provider
 +iface dsl-provider inet ppp
 +</​file>​
 +, где **dsl-provider** - имя нашего pppoe-соединения.
 +
 +
 +=====  Смотрите также ​ =====
 +  *  [[http://​nix.zeya.org/​forum/​index.php?​topic=184.0|Обсуждение статьи на форуме]]
 +  *  Статья [[Настройка sudo]]
Печать/экспорт