Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Проблемы с назначение default gateway

    Scheduled Pinned Locked Moved Russian
    10 Posts 3 Posters 6.5k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • V
      Vadimi4
      last edited by

      Добрый день.

      Столкнулся с некоторыми проблемами - прошу совета знатоков.

      Суть: есть машина с 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 в роуты.  **
      gateway.JPG
      gateway.JPG_thumb
      switch.JPG
      switch.JPG_thumb
      error.JPG
      error.JPG_thumb

      1 Reply Last reply Reply Quote 0
      • S
        sweep4
        last edited by

        На первой картинке вкладка Groups - там и делай Failover из двух каналов. И назначай его в firewall rules.

        1 Reply Last reply Reply Quote 0
        • V
          Vadimi4
          last edited by

          Естественно, что такая настройка сделана, и тем, кому разрешено ходить через нат, настроен соответствующий гейтвей в рулях.

          Но есть и те, кто должен ходить через Squid. Squid с MultiWAN настроен по мануалу http://forum.pfsense.org/index.php/topic,34810.0.html
          Как и написанов в том мануале, Squid всегда шлёт пакеты через default gateway. И на нём их можно отловить и перенаправить куда надо. А через что он их шлёт, когда DG вообще не прописан в routes? Вот и вся загвоздка…

          Я могу ошибаться, но мне думается, что описанная мною ошибка НЕ ДОЛЖНА появлятся и это есть глюк :) Который не хило было-бы поправить...

          group.jpg
          group.jpg_thumb
          rules.jpg
          rules.jpg_thumb

          1 Reply Last reply Reply Quote 0
          • D
            dvserg
            last edited by

            В Gateways присутствует Wan(default) - через него и шлет.

            SquidGuardDoc EN  RU Tutorial
            Localization ru_PFSense

            1 Reply Last reply Reply Quote 0
            • V
              Vadimi4
              last edited by

              @dvserg:

              В Gateways присутствует Wan(default) - через него и шлет.

              Давайте ещё раз: если в роутах прописывается DG (например как вы и указали, по приложенным мною скринам - это должен быть WAN), то таки да - шлёт через него.
              Я же говорю о той ситуации, когда DG вообще не прописывается в роутах. Например по причине того, что канал лежал на момент включения pfsense. В таком случае squid у меня пакеты через wan не шлёт.

              А затем происходит следующее:

              @Vadimi4:

              НО! Если после запуска с двумя отрубленными каналами, сначала подкинуть "не тот" канал (WAN2 - тот который не указан как DG), то система ругается следующим образом:

              php: : The command '/sbin/route change -inet default dynamic' returned exit code '68', the output was 'route: bad address: dynamic'

              То-есть в скрипте назначения DG есть какой-то косяк, который проявляется в описанных мною условиях.

              1 Reply Last reply Reply Quote 0
              • V
                Vadimi4
                last edited by

                Есть такая мысль: когда поднимается 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? Может его можно будет ручками поковырять…

                1 Reply Last reply Reply Quote 0
                • D
                  dvserg
                  last edited by

                  Ручками нет.
                  Скрипты в /etc/ppp перезаписываются
                  Что у Вас при описанной выше ситуации в ppp.linkip, ppp.conf ?

                  Мне кажется попытка добавить дефолтный роутинг терпит крах та как неизвестен IP адрес дефолтного интерфейса. Он у Вас динамический.

                  Кстати вот под тему пост по настройке squid multiwan http://forum.pfsense.org/index.php/topic,37083.0.html

                  SquidGuardDoc EN  RU Tutorial
                  Localization ru_PFSense

                  1 Reply Last reply Reply Quote 0
                  • V
                    Vadimi4
                    last edited by

                    Значится так: после поднятия 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/$1up

                    ALLOWOVERRIDE=/usr/bin/grep dnsallowoverride /conf/config.xml | /usr/bin/wc -l
                    if [ $ALLOWOVERRIDE -gt 0 ]; then

                    write nameservers to file

                    if [ $6 = "dns1" ]; then
                    echo $7 > /var/etc/nameserver_$1
                    /sbin/route delete $7
                    /sbin/route add $7 $4
                    fi

                    if [ $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 VERSION

                    Ensure 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 PASSWORD

                    set 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.

                    Как можно сообщить разработчикам об этой "особенности" ? :)

                    1 Reply Last reply Reply Quote 0
                    • D
                      dvserg
                      last edited by

                      Вот тут интересное
                      http://forum.lissyara.su/viewtopic.php?f=4&t=16851&start=0
                      Может перед добавлением маршрута стоит устроить какую-нить проверку.

                      SquidGuardDoc EN  RU Tutorial
                      Localization ru_PFSense

                      1 Reply Last reply Reply Quote 0
                      • V
                        Vadimi4
                        last edited by

                        Кому интересно, решил данный вопрос следующим костылём - в скрипте 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/$1up

                        ALLOWOVERRIDE=/usr/bin/grep dnsallowoverride /conf/config.xml | /usr/bin/wc -l
                        if [ $ALLOWOVERRIDE -gt 0 ]; then

                        write nameservers to file

                        if [ $6 = "dns1" ]; then
                        echo $7 > /var/etc/nameserver_$1
                        /sbin/route delete $7
                        /sbin/route add $7 $4
                        fi

                        if [ $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 всё равно падает ошибка, о которой я писал раньше. Зато работает.

                        Кроме того, отписался в английской ветке - может чего скажут умного…

                        1 Reply Last reply Reply Quote 0
                        • First post
                          Last post
                        Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.