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

    (РЕШЕНО)Отваливаются маршруты на VPN клиенто&

    Scheduled Pinned Locked Moved Russian
    6 Posts 4 Posters 3.2k 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.
    • A
      alpha_ds
      last edited by

      Столкнулся с интересной проблемой и почти решил ее. :-)

      Настраиваю vpn концентратор на pfSense, к нему подключаются по pptp отдельные клиенты и другие роутеры (в основном железные draytek vigor)
      В центре 192.168.0.0/24 отдельные клиенты получают адрес в той-же сетке с ними все ОК.
      Удаленные сети тоже получают фиксированный адрес в той-же сети 192.168.0.x, плюс имеют свою подсеть 192.168.x.0/24 роутинг настраивается вручную (в веб интерфейсе Static routes) приблизительно так:
      route add 192.168.x.0/24 192.168.0.x
      route add 192.168.y.0/24 192.168.0.y
      и т.д.

      Все работает прекрасно до тех пор, пока vpn соединение не обрывается.
      Из-за этого маршрут на эту сеть прибивается из таблицы маршрутизации (в веб интерфейсе остается), после поднятия vpn сессии обратно маршрут не восстанавливается! Если зайти в редактирование статических маршрутов и нажать Save && Apply - все восстанавливается и дальше работает.
      Странное поведение, как для статического маршрута.
      pfSense у меня там старый 1.2.3 (работает - не трожь) ну я решил что это глюк и даже обновил до 2.0.2, как-же я удивился когда в этой версии оно заработало точно так-же!

      Начал рыть форум, и нашел два не полных подхода к решению, вот скомбинировал:
      http://forum.pfsense.org/index.php/topic,23843.0.html
      Вот тут подтверждается такая проблема, и приводится прекрасный скрипт:

      #!/usr/local/bin/php -f
      require_once("util.inc");
      require_once("system.inc");
      system_routing_configure();
      ?>
      

      который эмулирует нажатие кнопок Save && Apply в веб интерфейсе, только его предлагают всунуть в крон.
      А вот тут:
      http://forum.pfsense.org/index.php/topic,18026.0.html
      описывается та-же проблема, и немного не такой универсальный скрипт предлагают вставить сюда
      /usr/local/sbin/vpn-linkup

      Я скомбинировал эти решения и оно заработало!
      Но не полностью. :-( Точнее не везде.
      Вышеприведенный первый скрипт, судя по комментариям предназначен для pfsense 2.0 (для более старого не обязательно инклюдить util.inc) Но в 2.0.2 не хватает и этих двух инклюдов, ориентируясь на ошибки я добавил еще два:

      require_once("gwlb.inc");
      require_once("interfaces.inc");
      

      Ошибки исчезли, скрипт выполняется (через /usr/local/sbin/vpn-linkup тоже), но его выполнение не приводит к результату, подозреваю, что в 2.0.2 появились в Static Routes другие элементы управления и этот скрипт не вызывает Save && Apply

      Пришлось откатиться на pfsense 1.2.3 - пока работает, но все-же хочу обновиться.
      Кто разбирается во внутренностях веб интерфейса, помогите написать правильный скрипт для передергивания статических маршрутов для актуальной версии pfsense!

      1 Reply Last reply Reply Quote 0
      • A
        alpha_ds
        last edited by

        Я продолжил изыскания в 2.0.2 и подобрал необходимую либу.
        Итого окончательный скрипт выгдит так:

        #!/usr/local/bin/php -f
        require_once("auth.inc");
        require_once("interfaces.inc");
        require_once("gwlb.inc");
        require_once("system.inc");
        system_routing_configure();
        ?>
        

        Сохраняем его где угодно (думаю, концептуально правильным местом будет /usr/local/etc/rc.d/) называем файл, скажем route_upd
        Назначаем ему права для исполнения:
        chmod 755 /usr/local/etc/rc.d/route_upd

        Редактируем файл  /usr/local/sbin/vpn-linkup
        добавляя в его конец строчку:

        /usr/local/etc/rc.d/route_upd
        

        Все. При установлении новой VPN сессии всегда будут обновляться статически маршруты до состояния заданного в настройках.

        Может в FAQ? Хотя более правильным было бы такое поведение исправить в самом pfSense.

        1 Reply Last reply Reply Quote 0
        • A
          alpha_ds
          last edited by

          Для более новых версий, в частности 2.2.6 нужно добавить еще один инклюд:

          require_once("pfsense-utils.inc");
          
          1 Reply Last reply Reply Quote 0
          • werterW
            werter
            last edited by

            Спасибо.
            Побольше бы нам на форуме таких людей.

            1 Reply Last reply Reply Quote 0
            • C
              codriver
              last edited by

              Добрый день.
              pfSense 2.4.5 проблема так и осталась, но данное решение не подходит в силу изменений кода страницы отображение маршрутов, к сожалению в php не силен, а в cron добавлять скрипт пингования и поднятия маршрута не хотелось по причине совсем уж костыльности данного способа.
              по этому в /usr/local/sbin/vpn-linkup был добавлен линк на скрипт sh

              #!/bin/sh
              if ping -c 4 192.168.2.1 >> /dev/null
              then
              echo 'route 2.0 working'
              else
              route add -net 192.168.2.0/24 192.168.30.2
              fi
              if ping -c 4 192.168.5.1 >> /dev/null
              then
              echo 'route 5.0 working'
              exit 0
              else
              route add -net 192.168.5.0/24 192.168.30.5
              fi
              
              

              В итоге скрипт при добавлении нового соединения l2tp пингует ip шлюза в сети и если путь не поднялся добавляет его. Ну и так далее. Надеюсь будет полезно. Буду признателен если есть мысль как автоматизировать полностью скрипт чтобы он не зависел от статических ip либо брал их из pfsense

              K 1 Reply Last reply Reply Quote 0
              • K
                Konstanti @codriver
                last edited by

                @codriver said in (РЕШЕНО)Отваливаются маршруты на VPN клиенто&:

                l2tp

                Здр

                Не знаю , поможет ли Вам это
                Там же mpd используется для l2tp ? Если да , то есть вот такая настройка у mpd

                set iface up-script script
                set iface down-script script
                Mpd can optionally run a user program every time one of network protocols (IPCP/IPv6CP) at the interface is brought up or down. The up-script is called like this:
                
                script interface proto local-ip remote-ip authname [ dns1 server-ip ] [ dns2 server-ip ] peer-address
                If up-script exit status is not 0, mpd will kill respective protocol.
                
                The down-script is called like this
                script interface proto local-ip remote-ip authname peer-address
                

                Те можно выполнять некие действия при поднятии/падении интерфейса
                вот параметры , которые передаются при вызове скрипта

                $0 - script name

                $1 - if name (ng0...)

                $2 - proto

                $3 - local-ip

                $4 - remote-ip

                $5 - authname

                $6 - [ dns1 server-ip ]

                $7 - [ dns2 server-ip ]

                $8 - peer-address

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