On 26.07.2013 23:46, Alexander Bolshakov wrote: > 26 июля 2013 г., 19:41 пользователь Alexander Bolshakov <[email protected] > <mailto:[email protected]>> написал: > > Добрый день сообществу! > > Перерыл гугл, но ответа на вопрос так и не нашёл. :( > Есть у меня контора, ходит в интернет через mpd, для какой-то > министерской (?) отчетности пользователи поднимают pppoe канал на > министерский хост, подключаются к базе и принимают задания/отправляют отчёты. > Время идёт, конторка растёт (в плане количества сотрудников), задания от > министерства растут... Я не смог преодолеть когда-то ограничения NAT-а на > более чем одну GRE-сессию. Попытался поднять pppoe на том же mpd, всё, вроде, > хорошо получилось, но второй mpd-линк при перезапуске часто висит в пассивном > состоянии. В последнее время народ весьма активно работает в этой базе из > разных кабинетов. Каждый вновь подключающийся "срубает" предыдущего (если кто > был подключен). :( Недовольство растёт. > > Если подключаться к консоли mpd и руками поднимать второй линк - всё > проходит чудесно. Дело, я понимаю, в том, что при старте второго линка, > первый ещё не поднят/не сконфигурирован. А вот как указать mpd задержку на > несколько секунд перед поднятием второго линка - найти нигде не могу. Если не > трудно - ткните носом в нужное место в документации. Спасибо! > > Блин, забыл конфиг:
> create link static L1 pppoe > create link static L2 pptp > set link action bundle B2 > set auth authname "user5" > set auth password "xxxxxx" > set link max-redial 0 > set link redial-delay 30 > set link mtu 1492 > # set link mtu 1460 > set link keep-alive 10 35 > set pptp peer vpn.mfgt.gov.ua <http://vpn.mfgt.gov.ua> > set pptp disable windowing > open Второй линк, использующий протокол GRE, это pptp, разумеется, а не PPPoE. Есть несколько способов решить задачу. Простейший это выкинуть из конфига команду set link redial-delay 30 и тогда mpd повторит попытку подключить pptp не через полминуты, а через секунду после неудачной первой. Таким образом, вся процедура займет пару секунд, а не полминуты. Полностью корректный способ это убрать команду open из конфигурации второго линка и написать скрипт ip-up, запуск которого вставить в линк L1 и который будет подключаться к mpd по telnet и командовать open в контексте линка L2. Тогда первая попытка подключить pptp будет выполняться в тот момент, когда PPPoE уже полностью работает. Скрипт на перле может выглядить так. Требует модуль p5-Net-Telnet из портов. #!/usr/bin/perl -w use strict; use Net::Telnet; my $host='localhost'; my $port='5005'; my $user='admin'; my $pass='xxx'; my $t = new Net::Telnet (Timeout => 2, Port => $port, Binmode => '\015\012', Prompt => '/\[\]/'); $t->open("$host"); $t->login($user, $pass); $t->print("link L2"); $t->print("open"); $t->print("exit"); $t->close; exit(0); Или можно написать скрипт на expect, если больше нравится. Прикрепление его в качестве скрипта ip-up линку L1 оставляем как домашнее задание :-)
