Проблемы с назначение default gateway
-
Добрый день.
Столкнулся с некоторыми проблемами - прошу совета знатоков.
Суть: есть машина с pfsense 2.0-RELEASE (i386) built on Tue Sep 13 17:28:43 EDT 2011 .
К ней подключено :
WAN (PPPoE)
WAN2 (PPPoE)
LAN.Система сама обязательно первый WAN ставит как default gateway (DG). Я могу сделать DG WAN2, но так, что-бы ни один из WAN'ов не был DG система сделать не даёт.
Сделана следующая настройка: разрешено переключение DG.
Теперь о проблеме.
Если pfSense запустился и к нему не был подключен ни один канал WAN, то в Routes строчки default (DG) естественно нет. Пока нормально.Если теперь подключить тот WAN канал, который указан как DG, то всё гуд - в Routes появляется соответствующая строчка. Тоже нормально.
НО! Если после запуска с двумя отрубленными каналами, сначала подкинуть "не тот" канал (WAN2 - тот который не указан как DG), то система ругается следующим образом:
php: : The command '/sbin/route change -inet default dynamic' returned exit code '68', the output was 'route: bad address: dynamic'
Что это? Я где-то туплю, или так действительно быть не должно?
ЗЫ Зачем оно мне надо? Устанавливаем pfsense в конторе, где на ночь вырубают свет. Специально завели два канала - для надежности. Так что-бы если один из них не поднялся, то всё равно всё работало. Но пока как-то не очень выходит.
ЗЫ2 Отмечу, что если машина запустилась и поднялся канал, указанный как DG, дальнейшие выдергивания-вставляния интерфейсов к такой ошибке не приводят. **ТОЕСТЬ описанное мной происходит ТОЛЬКО до первого удачного прописывания DG в роуты. **
-
На первой картинке вкладка Groups - там и делай Failover из двух каналов. И назначай его в firewall rules.
-
Естественно, что такая настройка сделана, и тем, кому разрешено ходить через нат, настроен соответствующий гейтвей в рулях.
Но есть и те, кто должен ходить через Squid. Squid с MultiWAN настроен по мануалу http://forum.pfsense.org/index.php/topic,34810.0.html
Как и написанов в том мануале, Squid всегда шлёт пакеты через default gateway. И на нём их можно отловить и перенаправить куда надо. А через что он их шлёт, когда DG вообще не прописан в routes? Вот и вся загвоздка…Я могу ошибаться, но мне думается, что описанная мною ошибка НЕ ДОЛЖНА появлятся и это есть глюк :) Который не хило было-бы поправить...
-
В Gateways присутствует Wan(default) - через него и шлет.
-
В Gateways присутствует Wan(default) - через него и шлет.
Давайте ещё раз: если в роутах прописывается DG (например как вы и указали, по приложенным мною скринам - это должен быть WAN), то таки да - шлёт через него.
Я же говорю о той ситуации, когда DG вообще не прописывается в роутах. Например по причине того, что канал лежал на момент включения pfsense. В таком случае squid у меня пакеты через wan не шлёт.А затем происходит следующее:
НО! Если после запуска с двумя отрубленными каналами, сначала подкинуть "не тот" канал (WAN2 - тот который не указан как DG), то система ругается следующим образом:
php: : The command '/sbin/route change -inet default dynamic' returned exit code '68', the output was 'route: bad address: dynamic'
То-есть в скрипте назначения DG есть какой-то косяк, который проявляется в описанных мною условиях.
-
Есть такая мысль: когда поднимается WAN2 система понимает, что надо-бы назначить его default gateway, но судя по этой строке :
php: : The command '/sbin/route change -inet default dynamic' returned exit code '68', the output was 'route: bad address: dynamic'
в качестве ip почему-то берется не gateway для WAN2, а gateway для WAN, которого пока ещё нет (dynamic). И соответственно вылетает с ошибкой и DG не назначается.
Отсюда вопрос - где посмотреть этот самый скрипт назначения DG? Может его можно будет ручками поковырять…
-
Ручками нет.
Скрипты в /etc/ppp перезаписываются
Что у Вас при описанной выше ситуации в ppp.linkip, ppp.conf ?Мне кажется попытка добавить дефолтный роутинг терпит крах та как неизвестен IP адрес дефолтного интерфейса. Он у Вас динамический.
Кстати вот под тему пост по настройке squid multiwan http://forum.pfsense.org/index.php/topic,37083.0.html
-
Значится так: после поднятия WAN2 в /tmp появляются 4-е файла:
pppoe0_ip
назначенный мне ip
pppoe0_router
195.5.5.186
pppoe0up
пустой файл
pppoe4_defaultgw
пустой файл
Естессно, что DG не назначается в routes - выдает ошибку:
php: : The command '/sbin/route change -inet default dynamic' returned exit code '68', the output was 'route: bad address: dynamic'
Пытаюсь раскопать, кто создает эти файлы - нашел /usr/local/spin/ppp-linkup :
ppp-linkup
#!/bin/sh
let the configuration system know that the ip has changed.
/bin/echo $4 > /tmp/$1_router
/bin/echo $3 > /tmp/$1_ip
/usr/bin/touch /tmp/$1upALLOWOVERRIDE=
/usr/bin/grep dnsallowoverride /conf/config.xml | /usr/bin/wc -l
if [ $ALLOWOVERRIDE -gt 0 ]; thenwrite nameservers to file
if [ $6 = "dns1" ]; then
echo $7 > /var/etc/nameserver_$1
/sbin/route delete $7
/sbin/route add $7 $4
fiif [ $8 = "dns2" ]; then
echo $9 >> /var/etc/nameserver_$1
/sbin/route delete $9
/sbin/route add $9 $4
fi
/usr/local/sbin/pfSctl -c 'service reload dns'
/bin/sleep 1
fi/usr/local/sbin/pfSctl -c "interface newip $1"
exit 0Как видим, пишутся 3-и файлика. Но я так и не могу понять, кто пишет четвертый файл pppoe4_defaultgw ?
Ковыряю дальше.2 dvserg
В ppp.conf вообще не нашел ничего интересного:
#################################################################
PPP Sample Configuration File
Originally written by Toshiharu OHNO
Simplified 5/14/1999 by wself@cdrom.com
See /usr/share/examples/ppp/ for some examples
$FreeBSD: src/etc/ppp/ppp.conf,v 1.11.2.2.2.1 2010/06/14 02:09:06 kensmith Exp $
#################################################################
default:
set log Phase Chat LCP IPCP CCP tun command
ident user-ppp VERSIONEnsure that "device" references the correct serial port
for your modem. (cuau0 = COM1, cuau1 = COM2)
set device /dev/cuau1
set speed 115200
set dial "ABORT BUSY ABORT NO\sCARRIER TIMEOUT 5
"" AT OK-AT-OK ATE1Q0 OK \dATDT\T TIMEOUT 40 CONNECT"
set timeout 180 # 3 minute idle timer (the default)
enable dns # request DNS info (for resolv.conf)papchap:
edit the next three lines and replace the items in caps with
the values which have been assigned by your ISP.
set phone PHONE_NUM
set authname USERNAME
set authkey PASSWORDset ifaddr 10.0.0.1/0 10.0.0.2/0 255.255.255.0 0.0.0.0
add default HISADDR # Add a (sticky) default routeКакие будут мысли?
Действительно получается, что несмотря на разрешение менять default gateway, скрипт упорно прописывает в качестве DG gateway для неподнятого интерфейса wan, который у меня динамический и соответственно не существует в этот момент. И на радостях вылетает с ошибкой.
Хотя в это время уже существует нормальный gateway для интерфейса wan2, который можно было бы с успехом использовать в качестве DG.
Как можно сообщить разработчикам об этой "особенности" ? :)
-
Вот тут интересное
http://forum.lissyara.su/viewtopic.php?f=4&t=16851&start=0
Может перед добавлением маршрута стоит устроить какую-нить проверку. -
Кому интересно, решил данный вопрос следующим костылём - в скрипте ppp-linkup (срабатывает при поднятии PPP канала) добавил кусок, проверяющий есть ли в данный момент default gateway, и если его нет, то назначает его равным гейтвею поднятого PPP.
#!/bin/sh
let the configuration system know that the ip has changed.
/bin/echo $4 > /tmp/$1_router
/bin/echo $3 > /tmp/$1_ip
/usr/bin/touch /tmp/$1upALLOWOVERRIDE=
/usr/bin/grep dnsallowoverride /conf/config.xml | /usr/bin/wc -l
if [ $ALLOWOVERRIDE -gt 0 ]; thenwrite nameservers to file
if [ $6 = "dns1" ]; then
echo $7 > /var/etc/nameserver_$1
/sbin/route delete $7
/sbin/route add $7 $4
fiif [ $8 = "dns2" ]; then
echo $9 >> /var/etc/nameserver_$1
/sbin/route delete $9
/sbin/route add $9 $4
fi
/usr/local/sbin/pfSctl -c 'service reload dns'
/bin/sleep 1
fi### Cheking is there default gateway
if netstat -nr | grep default > /dev/null;
then logger Default gateway is already present;
else /sbin/route add default $4;
logger $1 link changed to UP. Setting $4 as default gateway;
fi
###/usr/local/sbin/pfSctl -c "interface newip $1"
exit 0Решение - не идеал - в systemlog всё равно падает ошибка, о которой я писал раньше. Зато работает.
Кроме того, отписался в английской ветке - может чего скажут умного…