OpenVPN удаление маршрутов при падении туннеля



  • Есть pfsense который поднимает openvpn туннель
    когда туннель поднят прописываются маршруты, но когда происходит обрыв связи и пока идет реконнект маршруты не удаляются.
    Маршруты удаляются если перезапустить сервис OpenVPN
    Как сделать штатными средствами, чтобы происходило удаление маршрутов от туннеля при его падении ?

    я так понимаю в сенсе воткнута опция
    –persist-tun
    Don't close and reopen TUN/TAP device or run up/down scripts across SIGUSR1 or --ping-restart restarts.

    как её удалить ? Или что добавить, чтобы происходил полный рестарт openVPN



  • но когда происходит обрыв связи и пока идет реконнект маршруты не удаляются.

    Можно листинг маршрутов ДО и ПОСЛЕ падения туннеля ?



  • дык нет там изменений в маршрутах.
    сейчас не могу ибо как раз лежит вторая точка. но в пн. выложу.
    вот как пример поведение openvpn на винде
    запустил туннель,
    запустил пинг,
    сделал route print -4 >>norm.txt

    
    ===========================================================================
    Список интерфейсов
     47...00 ff 40 a4 72 57 ......TAP-Windows Adapter V9
     19...d8 50 e6 4c a9 c6 ......Realtek PCIe GBE Family Controller #2
     50...08 00 27 00 5c 01 ......VirtualBox Host-Only Ethernet Adapter
      1...........................Software Loopback Interface 1
      3...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP
     29...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP #3
     43...00 00 00 00 00 00 00 e0 Адаптер Microsoft ISATAP #4
    ===========================================================================
    
    IPv4 таблица маршрута
    ===========================================================================
    Активные маршруты:
    Сетевой адрес           Маска сети      Адрес шлюза       Интерфейс  Метрика
              0.0.0.0          0.0.0.0      192.168.5.1    192.168.5.200    266
             10.0.9.1  255.255.255.255         10.0.9.5         10.0.9.6     31
             10.0.9.4  255.255.255.252         On-link          10.0.9.6    286
             10.0.9.6  255.255.255.255         On-link          10.0.9.6    286
             10.0.9.7  255.255.255.255         On-link          10.0.9.6    286
            127.0.0.0        255.0.0.0         On-link         127.0.0.1    306
            127.0.0.1  255.255.255.255         On-link         127.0.0.1    306
      127.255.255.255  255.255.255.255         On-link         127.0.0.1    306
          192.168.1.0    255.255.255.0         10.0.9.5         10.0.9.6     31
          192.168.5.0    255.255.255.0         On-link     192.168.5.200    266
        192.168.5.200  255.255.255.255         On-link     192.168.5.200    266
        192.168.5.255  255.255.255.255         On-link     192.168.5.200    266
          192.168.6.0    255.255.255.0         10.0.9.5         10.0.9.6     31
         192.168.56.0    255.255.255.0         On-link      192.168.56.1    276
         192.168.56.1  255.255.255.255         On-link      192.168.56.1    276
       192.168.56.255  255.255.255.255         On-link      192.168.56.1    276
            224.0.0.0        240.0.0.0         On-link         127.0.0.1    306
            224.0.0.0        240.0.0.0         On-link      192.168.56.1    276
            224.0.0.0        240.0.0.0         On-link     192.168.5.200    266
            224.0.0.0        240.0.0.0         On-link          10.0.9.6    286
      255.255.255.255  255.255.255.255         On-link         127.0.0.1    306
      255.255.255.255  255.255.255.255         On-link      192.168.56.1    276
      255.255.255.255  255.255.255.255         On-link     192.168.5.200    266
      255.255.255.255  255.255.255.255         On-link          10.0.9.6    286
    ===========================================================================
    Постоянные маршруты:
      Сетевой адрес            Маска    Адрес шлюза      Метрика
              0.0.0.0          0.0.0.0      192.168.5.1  По умолчанию 
    ===========================================================================
    
    

    заблокировал на pfsense, убедился что пинг идти перестал, а openvpn стал передергивать туннель

    
    Sun Aug 24 13:39:27 2014 [UNDEF] Inactivity timeout (--ping-restart), restarting
    Sun Aug 24 13:39:27 2014 SIGUSR1[soft,ping-restart] received, process restarting
    Sun Aug 24 13:39:27 2014 MANAGEMENT: >STATE:1408858767,RECONNECTING,ping-restart,
    

    сделал route print -4 >>fail.txt
    делаем fc fail.txt norm.txt
    получаем
    Сравнение файлов fail.txt и NORM.TXT
    FC: различия не найдены



  • Листинги конфигов pfsense OpenVPN-сервера и OpenVPN-клиента можно глянуть ?



  • вот листинг конфига с сервера ovpn поднятого на pfsense. Все настройки делались через GUI

    
    dev ovpns1
    dev-type tun
    tun-ipv6
    dev-node /dev/tun1
    writepid /var/run/openvpn_server1.pid
    #user nobody
    #group nobody
    script-security 3
    daemon
    keepalive 10 60
    ping-timer-rem
    persist-tun
    persist-key
    proto udp
    cipher BF-CBC
    up /usr/local/sbin/ovpn-linkup
    down /usr/local/sbin/ovpn-linkdown
    local 5.8.6.9
    engine cryptodev
    tls-server
    server 10.0.13.0 255.255.255.0
    client-config-dir /var/etc/openvpn-csc
    tls-verify /var/etc/openvpn/server1.tls-verify.php
    lport 1194
    management /var/etc/openvpn/server1.sock unix
    push "route 10.0.5.0 255.255.255.0"
    push "redirect-gateway def1"
    ca /var/etc/openvpn/server1.ca 
    cert /var/etc/openvpn/server1.cert 
    key /var/etc/openvpn/server1.key 
    dh /etc/dh-parameters.1024
    

    ну клиент сильно похож
    вот так с клиента (pfsense) выглядит

    
    dev ovpnc1
    dev-type tun
    tun-ipv6
    dev-node /dev/tun1
    writepid /var/run/openvpn_client1.pid
    #user nobody
    #group nobody
    script-security 3
    daemon
    keepalive 10 60
    ping-timer-rem
    persist-tun
    persist-key
    proto udp
    cipher BF-CBC
    up /usr/local/sbin/ovpn-linkup
    down /usr/local/sbin/ovpn-linkdown
    local 192.168.1.249
    tls-client
    client
    lport 0
    management /var/etc/openvpn/client1.sock unix
    remote 5.8.6.9 1194
    ifconfig 10.0.13.2 10.0.13.1
    ca /var/etc/openvpn/client1.ca 
    cert /var/etc/openvpn/client1.cert 
    key /var/etc/openvpn/client1.key 
    
    


  • 1. У вас он в режиме p2p работает. Попробуйте сменить на клиент-серверный вариант.
    2.

    push "redirect-gateway def1"

    Эта директива заворачивает ВЕСЬ трафик в туннель. Вам именно такой вариант необходим ?



    да там аналогично всё выглядит. Всё упирается в опцию "persist-tun" как я понял по https://forums.openvpn.net/topic8539.html
    вот пример с клиент-серверного варианта

    
    dev ovpns1
    dev-type tun
    tun-ipv6
    dev-node /dev/tun1
    writepid /var/run/openvpn_server1.pid
    #user nobody
    #group nobody
    script-security 3
    daemon
    keepalive 10 60
    ping-timer-rem
    persist-tun
    persist-key
    proto udp
    cipher BF-CBC
    up /usr/local/sbin/ovpn-linkup
    down /usr/local/sbin/ovpn-linkdown
    local 9.9.2.2
    tls-server
    server 10.0.9.0 255.255.255.0
    client-config-dir /var/etc/openvpn-csc
    tls-verify /var/etc/openvpn/server1.tls-verify.php
    lport 1194
    management /var/etc/openvpn/server1.sock unix
    push "route 192.168.6.0 255.255.255.0"
    push "dhcp-option DNS 192.168.1.251"
    ca /var/etc/openvpn/server1.ca 
    cert /var/etc/openvpn/server1.cert 
    key /var/etc/openvpn/server1.key 
    dh /etc/dh-parameters.1024
    crl-verify /var/etc/openvpn/server1.crl-verify 
    comp-lzo
    push "route 192.168.1.0 255.255.255.0"
    
    

    2. а как мне по другому завернуть трафик от сквида на этом сенсе в туннель ?