Поиск по этому блогу

суббота, 19 сентября 2009 г.

Поднятие двух PPPoE соединений на ByFly

Тема навеяна предыдущей. Писалось всё достаточно давно, но вдруг кому пригодиться.
Краткое введение: У провайдера, к которому я подключён, "внезапно" появился гостевой тариф и у меня возникла необходимость "поднять" оба PPPoE-соединения на роутере ASUS wl500gP.



Поднять оба соединения через web-интерфейс  у меня не получилось.

Пришлось написать пару sh-скриптов, но ни что не мешает поставить их потом в /usr/local/sbin/post-firewall, (а лучше в /usr/local/sbin/post-mount так как скрипты расположены на флешке, и она должна быть смонтирована в момент их запуска), чтобы подключение происходило при загрузке роутера.

И так, у меня платное подключение belpak и к внутренним ресурсам провайдера guest.
Установка всех дополнительных пакетов производится на внешний жёсткий диск или "флешку", чтобы не забивать испортить flash роутера.
Мои скрипты сохранены в папке /opt/etc/ppp на жёстком диске.
Содержимое файла belpak.pppd
noauth refuse-eap
user 'my_login@belpak'
password 'my_password_on_belpak'
nomppe nomppc
plugin rp-pppoe.so nic-vlan1
mru 1492 mtu 1492
maxfail 0
persist
ipcp-accept-remote ipcp-accept-local noipdefault
ktune
default-asyncmap nopcomp noaccomp
novj nobsdcomp nodeflate
lcp-echo-interval 10
lcp-echo-failure 6
unit 0

Содержимое файла guest.pppd
noauth refuse-eap
user 'guest@guest'
password 'guest'
nomppe nomppc
plugin rp-pppoe.so nic-vlan1
mru 1492 mtu 1492
maxfail 0
persist
ipcp-accept-remote ipcp-accept-local noipdefault
ktune
default-asyncmap nopcomp noaccomp
novj nobsdcomp nodeflate
lcp-echo-interval 10
lcp-echo-failure 6
unit 1
nodefaultroute
ip-up-script /opt/etc/ppp/guest_route.sh

Содержимое файла guest_route.sh
#!/bin/sh
# Add Guest's routing table.
###
# Timeout before continue
sleep 3
#
### Setup routing for Guest connection ###
# new network
route add -net 86.57.151.0 netmask 255.255.255.224 dev $1
# game servers
route add -net 86.57.251.28 netmask 255.255.255.255 dev $1
# stat.byfly.by
route add -net 86.57.253.1 netmask 255.255.255.255 dev $1
# www.byfly.by
route add -net 193.232.248.79 netmask 255.255.255.255 dev $1
# www.belpak.by
route add -net 193.232.248.80 netmask 255.255.255.255 dev $1
# jabber
route add -net 82.209.245.151 netmask 255.255.255.255 dev $1
# mogilev
route add -net 194.158.206.240 netmask 255.255.255.255 dev $1
route add -net 194.158.206.241 netmask 255.255.255.255 dev $1
route add -net 194.158.206.246 netmask 255.255.255.255 dev $1
# grodno
route add -net 194.158.202.59 netmask 255.255.255.255 dev $1
# brest
route add -net 82.209.195.15 netmask 255.255.255.255 dev $1
# dc
route add -net 86.57.250.0 netmask 255.255.255.254 dev $1
# extmedia at dc
route add -net 91.149.189.0 netmask 255.255.255.128 dev $1
route add -net 91.149.189.128 netmask 255.255.255.192 dev $1
# DNS
route add -net 82.209.213.60 netmask 255.255.255.254 dev $1
route add -net 193.232.248.2 netmask 255.255.255.254 dev $1
#
### Setup NAT (MASQUERADING) for Guest connection ###
iptables -t nat -A POSTROUTING -o $1 -j MASQUERADE

Содержимое файла run_ppp.sh
#!/bin/sh
#
# Run Belpak connection for money
/usr/sbin/pppd file /opt/etc/ppp/belpak.pppd
# Timeout before continue
/opt/bin/sleep 3
# Run Belpak Guest connection
/usr/sbin/pppd file /opt/etc/ppp/guest.pppd

Содержимое файла /usr/local/sbin/post-mount
#!/bin/sh
# Run PPP
/opt/etc/ppp/run_ppp.sh

Файлы /opt/etc/ppp/guest_route.sh, /opt/etc/ppp/run_ppp.sh и /usr/local/sbin/post-mount нужно сделать исполняемыми:
cd /opt/etc/ppp
chmod 755 guest_route.sh
chmod 755 run_ppp.sh
cd /usr/local/sbin/
chmod 755 post-mount

P.S. Заметил, что часть сайтов либо не открывается вообще, либо открывается с бо-о-о-льшой "задумчивостью". Для решения этой проблемы добавил в файл /usr/local/sbin/post-firewall
#!/bin/sh
# Look at http://www.opennet.ru/base/net/pppoe_mtu.txt.html
iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
P.S.S. Так как скрипты  /usr/local/sbin/post-mount и /usr/local/sbin/post-firewall расположены во flash, не забываем про "три волшебные" команды
flashfs save && flashfs commit && flashfs enable
UPDATED
Некоторое время назад поменялись настройки роутинга и входа для "гостевого" соединения, изменился "вторичный" DNS-сервер.
В связи с этим скрипт guest_route.sh был приведён в соответствие с настройками для моей области.
В скрипте guest.pppd строки
user 'guest@guest'
password 'guest'
были исправлены на
user 'my_login@guest'
password 'my_password_on_belpak'
DNS-сервера теперь
$ cat /etc/resolv.conf
nameserver 82.209.213.60
nameserver 82.209.213.51

12 комментариев:

Анонимный комментирует...

Здравствуйте! Можно ли дополнить Ваше замечательное руководство, описанием настроек ADSL модема (например D-Link 2500U), к которому подключается ASUS wl500gP? Заранее спасибо.

Анонимный комментирует...

как можно с Вами связаться? Есть пара вопросов по настройке ASUS wl500gP. мой skype: bely_koler e-mail: koler(at)mail.бу

Lupo Alberto комментирует...

Я искренне не считаю это руководство замечательным, в любом случае спасибо на добром слове.
Описать настройки указанного вами модема не имею возможности, так как использую другой - Siemens ADSL CL-010, настройки которого, если это необходимо, могу выложить в ближайшие дни. Однако всё, что требуется сделать, это перевести модем в режим "моста".

Lupo Alberto комментирует...

Связаться со мной можно следующим образом:
e-mail: - mr.lupoalberto@gmail.com
либо
jabber: - lupo_alberto@xdsl.by

123 комментирует...

It was certainly interesting for me to read this article. Thanx for it. I like such themes and everything connected to them. I definitely want to read more on that blog soon.
Alex
Cell phone blocker

Анонимный комментирует...

у меня через некоторое время разрывается соединение.. в браузере ничего не открывается.. опен впн работает (оба монитора зеленые) торрент качает но скорость значительно падает.. в чем может быть проблема? ICQ тоже не работает (хотя icq доступен через пиринг).. делал все как описано здесь.. У меня D-Link DIR 320 с прошивкой Олега w500gpv2
может стоит сделать скрипт который будет периодически проверять наличие коннекта и, если соединения нет, то соединялся заново..
в случае чего мой icq 492976

Lupo Alberto комментирует...

Не уверен, что проблема на «вашей» стороне — возможно, это «происки» провайдера.
Вообще-то, после падения pppd должен сам поднимать соединение, в большинстве случаев так и происходит. У меня у самого случаются частые дисконнекты (как уже выяснилось, проблемы на АТС), соединения восстанавливаются, но иногда, к счастью редко, помогает только перезагрузка ADSL-модема.
Что обязательно надо бы доработать, так это сделать проверку для VPN-соединения и «убивать» ранее поднятый интерфейс при перезапуске PPPoE-соединений.
Скрипт, проверяющий наличие сети написать легко, но это не решение проблемы, а «костыль».
В вашем же случае, чтобы как-то помочь, стоит проанализировать логи и вывод команд
ifconfig
iptables-save
route -n
до и после дисконнекта.

Анонимный комментирует...

Вобщем получается так... соединения работают (просто сначала забыл отключить соединение через веб интерфейс), но очень частые разрывы, максимум часа два с половиной было соединение, а так 5 минут, 30 минут иногда час... и еще заметил такую неприятность - платное соединение работает гостевое вроде бы как нет (tut.by, fastby.net(через него у меня пиринг) и еще гостевые ресурсы не открываются, а byfly.by отлично работает и статистику свою можно посмотреть), но при этом пиринг работает (хотя сам сайт fastby.net не доступен) скорость торрента достаточно высокая (75КБ/с на отдачу и 250КБ/с на приём)... при выводе команды "ps" показывает, что оба соединения подняты.. создал файлик reconnect.sh для перезапуска соединений в случае чего, так вот, когда работало платное, а гостевое "частично" запустил его - гость заработал, перестало работать платное, решил запустить его еще раз - гость даже не разъединился (ip остался прежним) платное начало работать. выкладываю все, что у меня получилось после вывода команд и содержимое файлов для поднятия соединения. И еще некоторые страницы грузятся с 4-8 секундной задержкой (хотя строчку в пост файрвол я добавил)

http://file.qip.ru/file/123182612/28e8c61b/2xPPPOE.html

http://file.qip.ru/file/123181262/721557ee/data.html

Lupo Alberto комментирует...

Не знаю, насколько вас успокоит (опечалит?) мой ответ, но ваша ситуация с Интернетом до боли напоминает мою: примерно месяца с полтора у меня периодически стали рваться PPPoE-соединения, пропадать «гость» и т. д., один в один, как у вас. Со своей стороны я перепробовал, что только мог — менял прошивку на роутере, менял параметры в *.pppd-файлах

lcp-echo-interval 10
lcp-echo-failure 6

на

lcp-echo-interval 20
lcp-echo-failure 10

Были какие-то незначительные улучшения, но, как я сейчас понимаю, это мне только казалось.
Две недели назад я позвонил в техподдержку, очень долго и часто, но безрезультатно с ними общался. Успел за это время заменить ADSL-модем, все возможные «шнурки», пробовал подключаться без «гостя», без openvpn и БЕЗ роутера.
Наконец сходил в офис Белтелекома, немного поскандалил, заказал проверку линии, пришёл инженер, протестировал телефонную линию, изменил настройки в модеме (если будет нужно, могу посмотреть какие). В результате уже более суток канал, загруженный торрентами под самую завязку не падает (тьфу-тьфу, чтоб не сглазить :) )

Lupo Alberto комментирует...

В догонку к предыдущему комментарию: вы учли изменения в таблице роутинга для «гостевого» подключения — http://lupo-alberto.blogspot.com/2010/02/pppoe-byfly-guestroute.html ?
Возможно, недоступность некоторых «гостевых» ресурсов как-то связана с этим.

Анонимный комментирует...

Роуты брал последние с фтп байфлаевского.. после перезапуска гостевого соединения все сайты опять открываются... я нашел существенные отличия при вызове команды route -n
ip адреса отличаются
86.57.160.35 когда работают оба и 86.57.160.34 когда падает гость во втором случае адрес дублируестся дважды..

Анонимный комментирует...

у меня раньше такого не было, коннект держался по трое суток без разрывов, а потом началось я сначала думал, что что-то с д-линковской прошивкой (там после разрыва заново соединения не было почему-то) и решил поставить олеговскую тут немного лучше, но все равно не то...