Сайт | Скачать | Видео | Wiki

Автор Тема: [Одновременная работа инета и бесплатных ресурсов провайдера на примере ADSL]  (Прочитано 6712 раз)

0 Пользователей и 1 Гость просматривают эту тему.

xlin

  • Гость
Одновременная работа интернета и бесплатных ресурсов провайдера на примере ADSL

Добрый день. Я столкнулся с этой проблемой буквально сразу как подключил себе ADSL модем. Мой провайдер выдал мне два логина и два пароля для интернета и бесплатных рессурсов. И у меня возник вопрос. Можно ли поднять с помощью ppp и pppoe сразу два соединения? Что бы при запуске компьютера я не замарачивался с переключением с платного на бесплатный и наоборот. Пошерстив в интернете собрал не много информации и привел в рабочую схему. Ну это прилюдия  :) Приступим к делу.

Хочу сразу оговориться. Я не использовал PyppyRus на своем компьютере, ток что начало может чуть отличаться. Но я думаю это не существенная помеха. Если писать одинаковые HOWTO на каждый дистрибутив, с отличием лишь в установке пакетов, это будет как то не правильно. ИМХО. Так что пример проверялся на Debiad 5.0 Lenny. Ну а так как PyppyRus чем то похож на Slackware (тоже собран с исходников), думаю проблем не будет. Тем более он поддерживает несколько не плохих менеджеров пакетов.

Приступим. Для начала настроим два соединения по отдельности. Т.е. отдельно настроем Internet и freeinet
Чтобы все прошло гладко в системе должны прсутствовать два пакета. Это ppp и pppoeconf. Если их нет, Вам  придется их установить. У меня это происходит так.

Код
sudo aptitude install ppp pppoeconf

После установки у нас появится каталог /etc/ppp Мы к нему потом вернемся.
Ну а теперь настраиваем попорядку наши соединения. Но для начала проверим настроена у нас сетевая карточка. У меня всегда были проблемы с настройкой в GUI, не знаю почему, так что я привык ручками.

  • Узнаем интерфейс сетевой карты и донастраиваем сеть
Код
$ ifconfig

в итоге вы должны увидить нечто похожее
Код
eth1      Link encap:Ethernet  HWaddr 00:30:05:42:ac:f2  
          inet addr:192.168.1.2  Bcast:192.168.1.255  Mask:255.255.255.0
          inet6 addr: fe80::230:5ff:fe42:acf2/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:10972438 errors:0 dropped:0 overruns:0 frame:0
          TX packets:11535171 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3307893646 (3.0 GiB)  TX bytes:4247696620 (3.9 GiB)

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:60156 errors:0 dropped:0 overruns:0 frame:0
          TX packets:60156 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:14102636 (13.4 MiB)  TX bytes:14102636 (13.4 MiB)

Тут мы видем что моя сетевая карта привязана к интерфейсу eth1 с IP 192.168.1.2 Если у вас не прописан IP адрес, то это значит скорее всего вы его не указали при установке дистрибутива. Исправить это можно легко.

Открываем консоль и делаем следующее:

Код
$ifconfig eth1 192.168.1.2 netmask 255.255.255.0 up
$route add default gw 192.168.1.1

Этими действиями мы вручную активировали сетевую карточку и указали шлюз по умолчанию. Т.к. у нас ADSL модем это будет почти всегда 192.168.1.1. Потом прописываем наши DNS сервера в файл /etc/resolv.conf, узнать их можете у своего провайдера

Код
$vim /ets/resolv.conf

nameserver 88.xxx.xxx.xxx - это основной DNS
nameserver 88.xxx.xxx.xxx - это вторичный DNS

Далее добовляем в файл /etc/rc.local ниже приведенную строчку. Она нам даст автоматическое подключение сетевого интерфейса с определенным IP.
Код
# vim /etc/rc.local
ifconfig eth1 192.168.1.2 netmask 255.255.255.0 up  - допишите эту строчку

Вот и все, теперь настраиваем интернет соединение. Не забываем модем переключить в режим bridge

Код
$ pppoeconf   -  cледуем всем указаниям и вводите данные для интернета

После этого появится файл /etc/ppp/peers/ds-provider Переименуйте его в internet
Код
$ cd /etc/ppp/pears/
$rm dsl-provider internet
Чтобы все было как у людей, нужно еще кое что подправить в этом файле
Код
vim /etc/ppp/pears/internet
Приведите свой файл примерно к такому виду:
Код
noipdefault
nodefaultroute
noreplacedefaultroute
hide-password
noauth
persist
maxfail 0
plugin rp-pppoe.so eth1 # название интерфеса на который привязан модем
user "ХХХXXX"  # логин выдавший вам провайдер для входа в интернет
unit 0 # номер который получит при соединении ppp

Теперь тоже самое делаем и для freeinet. Т.е. запускайте опять pppoeconf и переименовывайте файл в reeinet.
Только в файле /eyc/ppp/pears/freeinet замените последнии две строчки на:
Код
user "ХХХXXX"  # логин выдавший вам провайдер для входа в бесплатный интернет
unit 1 # номер который получит при соединении ppp

После создаем файл /etc/ppp/ip-up.d/01pppstart (или любое другое имя, крайне желательно номер в начале оставить) и забиваем в него:

Код
#!/bin/bash

# $1 - interface name
# $2 -
# $3 -
# $4 - interface IP
# $5 - gateway IP

iptables="/sbin/iptables"
iface_lan="eth0"
iface_fos="ppp0"
iface_inet="ppp1"

if [ $1 = $iface_fos ]; then

    NET=`/bin/grep -vE '^#'  /etc/ppp/fos-net.txt`
    for i in $NET; do
     ip route add $i via $5 dev $1
    done

    $iptables -t filter -A INPUT -i $1 -m state --state established,related -j ACCEPT
    $iptables -t filter -A OUTPUT -o $1 -j ACCEPT


# Тут - остальные правила для бесплатного подключения

fi

if [ $1 = $iface_inet ]; then


# Тут - правила для интернета вместе с установкой default route

    route del default
    route add default gw $5 dev $1
    $iptables -t filter -A OUTPUT -o $1 -j ACCEPT
    $iptables -t filter -A INPUT -m state --state established,related -i $1 -j ACCEPT

fi

Не забываем сделать его исполняемым:

Код
chmod u+x /etc/ppp/ip-up.d/01pppstart

Таблица роутинга для бесплатного интернета лежит в /etc/ppp/fos-net.txt и выглядит примерно так:

Код
88.147.128.0/17
213.177.98.180/32
212.193.32.0/20
82.116.44.0/22
#ICQ
64.12.0.0/16
205.188.0.0/16
Вам остается добавить свои айпишники по вкусу.

Последний шаг - копирование /etc/ppp/ip-up.d/pppstart в /etc/ppp/ip-down.d/pppstop и замена всех команд iptables -A на iptables -D, дабы при падении интерфейсов правила удалялись. Соответственно, не забываем дать права на исполнение и убрать кусок про роутинг, так как тут он совсем и не нужен.

pppd будет сам дергать /etc/ppp/ip-up.d/pppstart и /etc/ppp/ip-down.d/pppstop при поднятии и опускании интерфейсов.

Неплохо прописать в /etc/network/interfaces

Код
auto ppp0
iface ppp0 inet ppp
        provider fos
auto ppp1
iface ppp1 inet ppp
        provider inet
Такая схема прекрасно работает у меня и замечательно держит оба соединения даже при отключении и включении модема.

P. S. Это конкретно для Debian, но в других дистрибутивах механизм аналогичный.
P.S.S. Спасибо за предоставленную информацию NowhereMan

Валентин Сайков aka --=XliN=--
« Последнее редактирование: 05 Май 2009, 18:15:59 от Zloy_T »