Главная Форум Wiki Почта Jabber Devel NIX-FILES
Материал из AltLUG Wiki
Перейти к: навигация, поиск

Begin:adsl

Статья расчитана на "широкий круг пользователей" Gentoo Linux, поэтому, господа продвинутые линуксоиды, прошу не ругаться за некоторые "мысли по древу".

Содержание

Введение

Чтобы поднять и настроить PPPoE сессию существуют специальные программы (adsl-setup), однако работу с подобными программами мы не будем освещать в данном руководстве.

Все ниже следующее проверялось на Gentoo Linux, модеме Acorp LAN420 (прошивка работает на Linux =)) и одном из барнаульских провайдеров.

Итак, у нас существует 4 логина: xxxxx@all, xxxxx@data, xxxxx@kray, xxxxx@city.

Наша задача: поднять несколько PPPoE сессий и настроить маршрутизацию.

 Замечание!!! Убедитесь, что у вас включена в ядро поддержка PPP и установлен ppp (для Gentoo, emerge ppp).

Настраиваем подключения

На первом шаге необходимо перейти в режим суперпользователя:

 # su

Пишем в файл /etc/conf.d/net

 config_ppp0=("ppp")
 link_ppp0="eth0"
 plugins_ppp0=("pppoe")
 username_ppp0='xxxxx@city'
 password_ppp0='xxxxxxxx'
 pppd_ppp0=(
         "noauth"
         "default-asyncmap"
         "ipcp-accept-remote"
         "ipcp-accept-local"
         "lcp-echo-interval 15"
         "lcp-echo-failure 3"
         "persist"
         "holdoff 5"
         "mru 1492"
         "mtu 1492"
         "debug"
         "lock"
  )

 config_ppp1=("ppp")
 link_ppp1="eth0"
 plugins_ppp1=("pppoe")
 username_ppp1='xxxxx@kray'
 password_ppp1='xxxxxxxx'
 pppd_ppp1=(
         "noauth"
         "default-asyncmap"
         "ipcp-accept-remote"
         "ipcp-accept-local"
         "lcp-echo-interval 15"
         "lcp-echo-failure 3"
         "persist"
         "holdoff 5"
         "mru 1492"
         "mtu 1492"
         "debug"
         "lock"
 )

 config_ppp2=("ppp")
 link_ppp2="eth0"
 plugins_ppp2=("pppoe")
 username_ppp2='xxxxx@data'
 password_ppp2='xxxxxx'
 pppd_ppp2=(
         "noauth"
         "default-asyncmap"
         "ipcp-accept-remote"
         "ipcp-accept-local"
         "lcp-echo-interval 15"
         "lcp-echo-failure 3"
         "persist"
         "holdoff 5"
         "mru 1492"
         "mtu 1492"
         "debug"
         "lock"
 )

 config_ppp3=("ppp")
 link_ppp3="eth0"
 plugins_ppp3=("pppoe")
 username_ppp3='xxxxx@all'
 password_ppp3='xxxxxxxx'
 pppd_ppp3=(
         "noauth"
         "default-asyncmap"
         "ipcp-accept-remote"
         "ipcp-accept-local"
         "lcp-echo-interval 15"
         "lcp-echo-failure 3"
         "persist"
         "holdoff 5"
         "mru 1492"
         "mtu 1492"
         "debug"
         "lock"
 )

Теперь выполняем комманды:

 # ln -s /etc/init.d/net.lo /etc/init.d/net.ppp0
 # ln -s /etc/init.d/net.lo /etc/init.d/net.ppp1
 # ln -s /etc/init.d/net.lo /etc/init.d/net.ppp2
 # ln -s /etc/init.d/net.lo /etc/init.d/net.ppp3

Запускаем подключения

Теперь мы можем запустить эти подключения следующими командами:

 # /etc/init.d/net.ppp0 start
 # /etc/init.d/net.ppp1 start
 # /etc/init.d/net.ppp2 start
 # /etc/init.d/net.ppp3 start

Проверим подключения командой:

 # ifconfig

Получим среди прочего следующее:

ppp0      Link encap:Point-to-Point Protocol
          inet addr:87.103.195.189  P-t-P:87.103.192.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:1403 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1496 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:734306 (717.0 Kb)  TX bytes:288594 (281.8 Kb)

ppp1      Link encap:Point-to-Point Protocol
          inet addr:87.103.198.164  P-t-P:87.103.192.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:319 errors:0 dropped:0 overruns:0 frame:0
          TX packets:357 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:258882 (252.8 Kb)  TX bytes:92712 (90.5 Kb)

ppp2      Link encap:Point-to-Point Protocol
          inet addr:87.103.195.247  P-t-P:87.103.192.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:2918 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1590 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:4344898 (4.1 Mb)  TX bytes:87358 (85.3 Kb)

ppp3      Link encap:Point-to-Point Protocol
          inet addr:87.103.193.86  P-t-P:87.103.192.1  Mask:255.255.255.255
          UP POINTOPOINT RUNNING NOARP MULTICAST  MTU:1492  Metric:1
          RX packets:97 errors:0 dropped:0 overruns:0 frame:0
          TX packets:102 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:3
          RX bytes:70882 (69.2 Kb)  TX bytes:11266 (11.0 Kb)

Если присутствуют все устройства (ppp0, ppp1, ppp2, ppp3), значит подключения прошли успешно.

Теперь, несмотря на то, что мы запустили все эти подключения мы не сможем зайти ни на один сайт, так как еще не настроили маршрутизацию.

Роутинг

Таким образом, следует настрить еще и маршрутизацию. Создаем файл с именем /etc/ppp/ip-up.d/90-local.sh

 #!/bin/bash
 # @city
 if [ "$1" = "ppp0" ]; then
 route add -net 90.188.0.0 netmask 255.255.255.128 dev ppp0
 route add -net 90.188.1.0 netmask 255.255.255.128 dev ppp0
 route add -net 194.150.132.240 netmask 255.255.255.240 dev ppp0
 route add -net 194.150.136.64 netmask 255.255.255.224 dev ppp0
 route add -net 212.94.99.96 netmask 255.255.255.240 dev ppp0
 route add -net 212.94.99.192 netmask 255.255.255.240 dev ppp0
 route add -net 212.94.101.0 netmask 255.255.255.0 dev ppp0
 route add -net 212.94.117.0 netmask 255.255.255.192 dev ppp0
 route add -net 212.94.117.80 netmask 255.255.255.240 dev ppp0
 route add -net 212.94.117.224 netmask 255.255.255.224 dev ppp0
 route add -net 212.94.96.0 netmask 255.255.255.192 dev ppp0
 route add -net 212.94.96.64 netmask 255.255.255.248 dev ppp0
 route add -net 212.94.96.72 netmask 255.255.255.255 dev ppp0
 route add -net 212.94.96.74 netmask 255.255.255.254 dev ppp0
 route add -net 212.94.96.76 netmask 255.255.255.252 dev ppp0
 route add -net 212.94.96.80 netmask 255.255.255.240 dev ppp0
 route add -net 212.94.96.96 netmask 255.255.255.224 dev ppp0
 route add -net 212.94.96.128 netmask 255.255.255.128 dev ppp0
 route add -net 90.189.192.0 netmask 255.255.255.0 dev ppp0
 fi

 # @kray
 if [ "$1" = "ppp1" ]; then
 route add -net 90.188.0.128 netmask 255.255.255.192 dev ppp1
 route add -net 90.188.1.128 netmask 255.255.255.192 dev ppp1
 route add -net 62.33.48.0 netmask 255.255.254.0 dev ppp1
 route add -net 62.33.116.0 netmask 255.255.254.0 dev ppp1
 route add -net 62.33.118.0 netmask 255.255.255.0 dev ppp1
 route add -net 80.89.149.0 netmask 255.255.255.0 dev ppp1
 route add -net 82.200.45.0 netmask 255.255.255.0 dev ppp1
 route add -net 84.237.126.0 netmask 255.255.254.0 dev ppp1
 route add -net 217.107.47.0 netmask 255.255.255.0 dev ppp1
 route add -net 80.89.153.0 netmask 255.255.255.0 dev ppp1
 route add -net 81.1.206.0 netmask 255.255.255.0 dev ppp1
 route add -net 84.237.124.0 netmask 255.255.254.0 dev ppp1
 route add -net 80.71.160.0 netmask 255.255.224.0 dev ppp1
 route add -net 83.246.128.0 netmask 255.255.240.0 dev ppp1
 route add -net 83.246.144.0 netmask 255.255.240.0 dev ppp1
 route add -net 83.246.160.0 netmask 255.255.240.0 dev ppp1
 route add -net 80.247.96.0 netmask 255.255.240.0 dev ppp1
 route add -net 81.201.240.0 netmask 255.255.240.0 dev ppp1
 route add -net 82.200.6.0 netmask 255.255.254.0 dev ppp1
 route add -net 82.200.32.0 netmask 255.255.252.0 dev ppp1
 route add -net 87.103.192.0 netmask 255.255.240.0 dev ppp1
 route add -net 90.188.2.0 netmask 255.255.254.0 dev ppp1
 route add -net 90.188.4.0 netmask 255.255.252.0 dev ppp1
 route add -net 90.188.8.0 netmask 255.255.248.0 dev ppp1
 route add -net 194.150.128.0 netmask 255.255.252.0 dev ppp1
 route add -net 194.150.132.0 netmask 255.255.255.128 dev ppp1
 route add -net 194.150.132.128 netmask 255.255.255.192 dev ppp1
 route add -net 194.150.132.192 netmask 255.255.255.224 dev ppp1
 route add -net 194.150.132.224 netmask 255.255.255.240 dev ppp1
 route add -net 194.150.133.0 netmask 255.255.255.0 dev ppp1
 route add -net 194.150.134.0 netmask 255.255.254.0 dev ppp1
 route add -net 194.150.136.0 netmask 255.255.255.192 dev ppp1
 route add -net 194.150.136.96 netmask 255.255.255.224 dev ppp1
 route add -net 194.150.136.128 netmask 255.255.255.128 dev ppp1
 route add -net 194.150.137.0 netmask 255.255.255.0 dev ppp1
 route add -net 194.150.138.0 netmask 255.255.254.0 dev ppp1
 route add -net 194.150.140.0 netmask 255.255.252.0 dev ppp1
 route add -net 194.150.144.0 netmask 255.255.240.0 dev ppp1
 route add -net 212.94.97.0 netmask 255.255.255.0 dev ppp1
 route add -net 212.94.98.0 netmask 255.255.255.0 dev ppp1
 route add -net 212.94.99.0 netmask 255.255.255.192 dev ppp1
 route add -net 212.94.99.64 netmask 255.255.255.224 dev ppp1
 route add -net 212.94.99.112 netmask 255.255.255.240 dev ppp1
 route add -net 212.94.99.128 netmask 255.255.255.192 dev ppp1
 route add -net 212.94.99.208 netmask 255.255.255.240 dev ppp1
 route add -net 212.94.99.224 netmask 255.255.255.224 dev ppp1
 route add -net 212.94.100.0 netmask 255.255.255.0 dev ppp1
 route add -net 212.94.102.0 netmask 255.255.254.0 dev ppp1
 route add -net 212.94.104.0 netmask 255.255.248.0 dev ppp1
 route add -net 212.94.112.0 netmask 255.255.252.0 dev ppp1
 route add -net 212.94.116.0 netmask 255.255.255.0 dev ppp1
 route add -net 212.94.117.64 netmask 255.255.255.240 dev ppp1
 route add -net 212.94.117.96 netmask 255.255.255.224 dev ppp1
 route add -net 212.94.117.128 netmask 255.255.255.192 dev ppp1
 route add -net 212.94.117.192 netmask 255.255.255.224 dev ppp1
 route add -net 212.94.118.0 netmask 255.255.254.0 dev ppp1
 route add -net 212.94.120.0 netmask 255.255.248.0 dev ppp1
 route add -net 83.234.218.0 netmask 255.255.255.0 dev ppp1
 route add -net 82.179.16.0 netmask 255.255.240.0 dev ppp1
 route add -net 78.109.128.0 netmask 255.255.240.0 dev ppp1
 route add -net 90.189.193.0 netmask 255.255.255.128 dev ppp1
 route add -net 82.200.44.0 netmask 255.255.255.0 dev ppp1
 route add -net 80.89.140.100 netmask 255.255.255.252 dev ppp1
 route add -net 91.198.91.0 netmask 255.255.255.0 dev ppp1
 fi

 # @data
 if [ "$1" = "ppp2" ]; then
 route add -net 90.188.0.192 netmask 255.255.255.192 dev ppp2
 route add -net 90.188.1.192 netmask 255.255.255.192 dev ppp2
 route add -net 90.189.193.128 netmask 255.255.255.128 dev ppp2
 fi

 # @all
 if [ "$1" = "ppp3" ]; then
         route add default dev ppp3
 fi


IP-адреса взяты "как есть" с сайта провайдера. Скрипт будет выполняться при каждом подключении. Для каждого подключения будет "прописываться" своя "таблица маршрутизации".

Следующий скрипт будет выполняться при завершении каждого подключения и удалять записи из таблицы маршрутизации в зависимости от того, какое подключение было завершено. Создаем скрипт с именем /etc/ppp/ip-down.d/90-local.sh

 #!/bin/bash

 # @city
 if [ "$1" = "ppp0" ]; then
 route del -net 90.188.0.0 netmask 255.255.255.128 dev ppp0
 route del -net 90.188.1.0 netmask 255.255.255.128 dev ppp0
 route del -net 194.150.132.240 netmask 255.255.255.240 dev ppp0
 route del -net 194.150.136.64 netmask 255.255.255.224 dev ppp0
 route del -net 212.94.99.96 netmask 255.255.255.240 dev ppp0
 route del -net 212.94.99.192 netmask 255.255.255.240 dev ppp0
 route del -net 212.94.101.0 netmask 255.255.255.0 dev ppp0
 route del -net 212.94.117.0 netmask 255.255.255.192 dev ppp0
 route del -net 212.94.117.80 netmask 255.255.255.240 dev ppp0
 route del -net 212.94.117.224 netmask 255.255.255.224 dev ppp0
 route del -net 212.94.96.0 netmask 255.255.255.192 dev ppp0
 route del -net 212.94.96.64 netmask 255.255.255.248 dev ppp0
 route del -net 212.94.96.72 netmask 255.255.255.255 dev ppp0
 route del -net 212.94.96.74 netmask 255.255.255.254 dev ppp0
 route del -net 212.94.96.76 netmask 255.255.255.252 dev ppp0
 route del -net 212.94.96.80 netmask 255.255.255.240 dev ppp0
 route del -net 212.94.96.96 netmask 255.255.255.224 dev ppp0
 route del -net 212.94.96.128 netmask 255.255.255.128 dev ppp0
 route del -net 90.189.192.0 netmask 255.255.255.0 dev ppp0
 fi

 # @kray
 if [ "$1" = "ppp1" ]; then
 route del -net 90.188.0.128 netmask 255.255.255.192 dev ppp1
 route del -net 90.188.1.128 netmask 255.255.255.192 dev ppp1
 route del -net 62.33.48.0 netmask 255.255.254.0 dev ppp1
 route del -net 62.33.116.0 netmask 255.255.254.0 dev ppp1
 route del -net 62.33.118.0 netmask 255.255.255.0 dev ppp1
 route del -net 80.89.149.0 netmask 255.255.255.0 dev ppp1
 route del -net 82.200.45.0 netmask 255.255.255.0 dev ppp1
 route del -net 84.237.126.0 netmask 255.255.254.0 dev ppp1
 route del -net 217.107.47.0 netmask 255.255.255.0 dev ppp1
 route del -net 80.89.153.0 netmask 255.255.255.0 dev ppp1
 route del -net 81.1.206.0 netmask 255.255.255.0 dev ppp1
 route del -net 84.237.124.0 netmask 255.255.254.0 dev ppp1
 route del -net 80.71.160.0 netmask 255.255.224.0 dev ppp1
 route del -net 83.246.128.0 netmask 255.255.240.0 dev ppp1
 route del -net 83.246.144.0 netmask 255.255.240.0 dev ppp1
 route del -net 83.246.160.0 netmask 255.255.240.0 dev ppp1
 route del -net 80.247.96.0 netmask 255.255.240.0 dev ppp1
 route del -net 81.201.240.0 netmask 255.255.240.0 dev ppp1
 route del -net 82.200.6.0 netmask 255.255.254.0 dev ppp1
 route del -net 82.200.32.0 netmask 255.255.252.0 dev ppp1
 route del -net 87.103.192.0 netmask 255.255.240.0 dev ppp1
 route del -net 90.188.2.0 netmask 255.255.254.0 dev ppp1
 route del -net 90.188.4.0 netmask 255.255.252.0 dev ppp1
 route del -net 90.188.8.0 netmask 255.255.248.0 dev ppp1
 route del -net 194.150.128.0 netmask 255.255.252.0 dev ppp1
 route del -net 194.150.132.0 netmask 255.255.255.128 dev ppp1
 route del -net 194.150.132.128 netmask 255.255.255.192 dev ppp1
 route del -net 194.150.132.192 netmask 255.255.255.224 dev ppp1
 route del -net 194.150.132.224 netmask 255.255.255.240 dev ppp1
 route del -net 194.150.133.0 netmask 255.255.255.0 dev ppp1
 route del -net 194.150.134.0 netmask 255.255.254.0 dev ppp1
 route del -net 194.150.136.0 netmask 255.255.255.192 dev ppp1
 route del -net 194.150.136.96 netmask 255.255.255.224 dev ppp1
 route del -net 194.150.136.128 netmask 255.255.255.128 dev ppp1
 route del -net 194.150.137.0 netmask 255.255.255.0 dev ppp1
 route del -net 194.150.138.0 netmask 255.255.254.0 dev ppp1
 route del -net 194.150.140.0 netmask 255.255.252.0 dev ppp1
 route del -net 194.150.144.0 netmask 255.255.240.0 dev ppp1
 route del -net 212.94.97.0 netmask 255.255.255.0 dev ppp1
 route del -net 212.94.98.0 netmask 255.255.255.0 dev ppp1
 route del -net 212.94.99.0 netmask 255.255.255.192 dev ppp1
 route del -net 212.94.99.64 netmask 255.255.255.224 dev ppp1
 route del -net 212.94.99.112 netmask 255.255.255.240 dev ppp1
 route del -net 212.94.99.128 netmask 255.255.255.192 dev ppp1
 route del -net 212.94.99.208 netmask 255.255.255.240 dev ppp1
 route del -net 212.94.99.224 netmask 255.255.255.224 dev ppp1
 route del -net 212.94.100.0 netmask 255.255.255.0 dev ppp1
 route del -net 212.94.102.0 netmask 255.255.254.0 dev ppp1
 route del -net 212.94.104.0 netmask 255.255.248.0 dev ppp1
 route del -net 212.94.112.0 netmask 255.255.252.0 dev ppp1
 route del -net 212.94.116.0 netmask 255.255.255.0 dev ppp1
 route del -net 212.94.117.64 netmask 255.255.255.240 dev ppp1
 route del -net 212.94.117.96 netmask 255.255.255.224 dev ppp1
 route del -net 212.94.117.128 netmask 255.255.255.192 dev ppp1
 route del -net 212.94.117.192 netmask 255.255.255.224 dev ppp1
 route del -net 212.94.118.0 netmask 255.255.254.0 dev ppp1
 route del -net 212.94.120.0 netmask 255.255.248.0 dev ppp1
 route del -net 83.234.218.0 netmask 255.255.255.0 dev ppp1
 route del -net 82.179.16.0 netmask 255.255.240.0 dev ppp1
 route del -net 78.109.128.0 netmask 255.255.240.0 dev ppp1
 route del -net 90.189.193.0 netmask 255.255.255.128 dev ppp1
 route del -net 82.200.44.0 netmask 255.255.255.0 dev ppp1
 route del -net 80.89.140.100 netmask 255.255.255.252 dev ppp1
 route del -net 91.198.91.0 netmask 255.255.255.0 dev ppp1
 fi

 # @data
 if [ "$1" = "ppp2" ]; then
 route del -net 90.188.0.192 netmask 255.255.255.192 dev ppp2
 route del -net 90.188.1.192 netmask 255.255.255.192 dev ppp2
 route del -net 90.189.193.128 netmask 255.255.255.128 dev ppp2
 fi

 # @all
 if [ "$1" = "ppp3" ]; then
         route del default
 fi

Замечание!!! Если у вас включены "нижние уровни трафика" (доступ к локальным ресурсам возможен из глобального интерфейса), то вам необходимо в вышеописанных скриптах блокировать адреса локальных ресурсов, когда локальные интерфесы (в нашем случае это ppp0,ppp1,ppp2) останавливаются. И, соответственно, не забыть разблокировать эти адреса при старте интерфейса. Блокировку можно осуществлять с помощью iptables.

Выполняем следующие команды

 # /etc/init.d/net.ppp0 restart
 # /etc/init.d/net.ppp1 restart
 # /etc/init.d/net.ppp2 restart
 # /etc/init.d/net.ppp3 restart

и получаем работающий Интернет.

Использование

Разберемся как это использовать.

Как вариант можно выполнять все команды в ручную:

 # su
 # /etc/init.d/net.ppp0 start
 # /etc/init.d/net.ppp1 start
 # /etc/init.d/net.ppp2 start
 # /etc/init.d/net.ppp3 start

Либо добавить все в автозагрузку:

 # su
 # rc-update add net.ppp0 default
 # rc-update add net.ppp1 default
 # rc-update add net.ppp2 default
 # rc-update add net.ppp3 default

В последнем случае при загрузке Linux все сессии будут подниматься автоматически.

Всё.

Статья переписана по мотивам поста DoS'a на forum.ab.ru.
Источник — «http://wiki.altlug.ru/Begin:adsl»
Личные инструменты