Имеется сервер-роутер под управлением gentoo-linux. Два модема АДСЛ
Есть два провайдера. Оба подключаются через АДСЛ.
Нужно поднять два интерфейса ppp0 и ppp1.
Скриптом adsl-start получается поднять только один ррр.
Поэтому решил делать через /etc/init.d/net.ppp0 и /etc/init.d/net.ppp1
Вкомпилял в ядро pppoe и стал настраивать:/etc/conf.d/net:
==========================
config_eth2= ("null")
config_ppp0=( "ppp" )
link_ppp0="eth2"
plugins_ppp0=("pppoe")
username_ppp0='USER=adNNN@dsl.ukrtel.net'
password_ppp0=
depend_ppp0() {
need net.eth2
}
аналогично и для ppp1, только eth3 и юзер другой
============================В файл pap-secrets прописал соответственно юзеров.
Командой /etc/init.d/net.ppp0 start поднимаю интерфейс.
Интерфейс таки поднимается, но мне еще нужно после этого установить правильную маршрутизацию (я использую несколько таблиц маршрутизации iproute2) и установить нужные правила файрвола. Адреса провайдеры выдают динамически, поэтому маршрутизацию и файрвол мне нужно менять каждый раз при поднятии интерфейса. Как это сделать?
Ведь в этом случае я не могу использовать конструкции вида:config_ppp0=( "192.168.32.4 netmask 255.255.255.0" )
routes_ppp0=( "192.168.32.0/24 dev ppp0 src 192.168.32.4 table unlimit "
"192.168.32.0/24 dev ppp0 src 192.168.32.4 table pmp"
"192.168.38.0/24 via 192.168.32.2"
"192.168.39.0/24 via 192.168.32.2"
"192.168.40.0/24 via 192.168.32.3"
/etc/ppp/peers
создаем там 2 файла по именам провов (для удобства) с таким примерно содержаниемnoipdefault
usepeerdns
nodefaultroute
#defaultroute
hide-password
lcp-echo-interval 20
lcp-echo-failure 3
connect /bin/true
noauth
refuse-chap
logfile "/var/log/pppoe_eth2.log"
persist
unit 1
mppc
nobsdcomp
nodeflate
nomppe
#novj
#novjccomp
mtu 1492
noaccomp
default-asyncmap
pty "/usr/sbin/pppoe -p /var/run/pppoe-eth2.pid -I eth2 -T 80 -U -m 1412"
#disconnect "/etc/ppp/ip-down.d/60-pppoe.sh" - там по потребностям можно чего-то делать
user "user_name"не забываем изменять имена eth :)
обратите внимание на параметр unit - если ставим 0, это будет ppp0, если 1 - соответственно ppp1. Понадобится для маршрутизации.
Поднимается все это хозяйство pppd call имя_файла
1. Т.е. выходит, что стандартным Гентовским способом /etc/init.d/net.ppp0 start не получиццо?2. >#disconnect "/etc/ppp/ip-down.d/60-pppoe.sh" - там по потребностям можно чего-то делать
А как что-то делать если я адресов не знаю? Т.е. может быть существует какая-нить переменная, которая видна из этого скрипта (в которой записан выданный айпиадрес и прочее)
>1. Т.е. выходит, что стандартным Гентовским способом /etc/init.d/net.ppp0 start не получиццо?Лучше не пробовать, т.к. могут возникнуть проблеммы с нумерацией интерфейсов и естественно с построением маршрутов по ним. Там никак не используется опция unit.
>2. >#disconnect "/etc/ppp/ip-down.d/60-pppoe.sh" - там по потребностям можно чего-то делать
>А как что-то делать если я адресов не знаю? Т.е. может быть
>существует какая-нить переменная, которая видна из этого скрипта (в которой записан
>выданный айпиадрес и прочее)Если имееш ввиду IP интерфейса и Gateway - тогда можно так
IPIN1=`ifconfig ppp0|grep "inet addr"|awk '{print $2}'|cut -d ':' -f 2`
GW1=`ifconfig ppp0|grep "inet addr"|awk '{print $3}'|cut -d ':' -f 2`Посмотри мою статейку "http://wiki.opennet.ru/Linux_ppp-oe_(ADSL)_Balance"
Там правда для RedHat Based дистра, но принципы то не меняются :)
>Посмотри мою статейку "http://wiki.opennet.ru/Linux_ppp-oe_(ADSL)_Balance"
>Там правда для RedHat Based дистра, но принципы то не меняются :)Подымал для debian etch 4 (ядро 2.6.18) по Вашей статье 2 канала (ppp0 и ppp1) с Распределением нагрузки на два канала
Все интерыейсы подымаются все работает (eth0-LAN, ppp0 over eth1, ppp1 over eth2) но вот на ключевой строчке
/sbin/ip route add default equalize nexthop via ${GW1} dev ${IFOUT1} weight 1 nexthop via ${GW2} dev ${IFOUT2} weight 1
Пишет RTNETLINK answers: File exists
Типа маршрут уже поднят...Вручную удалил все дефолтовые шлюзы. Попробовал ручками поднять распределение нагрузки
ip route add default equalize nexthop via XXX.XXX.XXX.XXX dev ppp0 weight 1 nexthop via YYY.YYY.YYY.YYY dev ppp1 weight 1
Пробовал отдельно добавить два дефолтных маршрута:
ip route add default via XXX.XXX.XXX.XXX dev ppp0
ip route add default via YYY.YYY.YYY.YYY dev ppp1Таже ошибка. ДВА дефолтных шлюза одновременно не подымаются!
Возможно у меня в ядре отключена возможность IP_ROUTE_MULTIPATH или ещё чего. Но я не знаю как её включить и где посмотреть.. Гугление приводит тока к пересборке ядра целиком, чего делать бы не хотелось )
Помогите кто может...