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

    Маршрутизация OpenVPN

    Scheduled Pinned Locked Moved Russian
    97 Posts 7 Posters 28.8k 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.
    • M
      Monya
      last edited by Monya

      Доброго времени суток.
      надеюсь ещё в силе ваш зов о помощи. даю инструкцию как это реализовано у меня на одной из филиальных сетей

      1 этап - настройка сервера

      1. Server mode - Remote Access
      2. Protocol - UDP (меньше накладных расходов)
      3. Device mode - tun
      4. Local port - 1194 (по умолчанию) можете изменить на свой
      5. TLS authentication - снимаем галку
      6. IPv4 Tunnel Network - ваша туннельная сеть (10.0.1.0/24)
      7. IPv4 Local network(s) - головная локальная сеть офиса А (192.168.72.0/24)
      8. Compression - открыто с адаптивной компрессией
      9. Inter-client communication - отмечаем
      10. Address Pool - отмечаем
      11. Topology - выбираем Subnet
      12. Disable IPv6 - если у вас в сети нет IPv6 - отмечаем
      13. Custom options пишем следующее:
      keepalive 10 60;
      persist-key;
      persist-tun;
      
      route 192.168.166.0 255.255.255.0 10.0.1.166;
      route 192.168.9.0 255.255.254.0 10.0.1.9;
      

      Это добавит в таблицу роутера маршруты в клиентские сети

      2 этап - клиентские параметры на стороне сервера
      В разделе Client Specific Overrides создаём конфиги клиентов

      1. CN - обязательно должен соответствовать CN (Common Name) указанному в сертификате
      2. в поле Advanced пишем:
      ifconfig-push 10.0.1.166 255.255.255.0;
      

      Тем самым назначая адрес клиенту. Выше мы объявили маршрут через этот адрес

      3 этап - правила firewall и NAT на стороне сервера
      Firewall

      1. на интерфейсе WAN (внешний, может отличаться от моего имени)
        Action - pass
        Protocol - UDP
        Source - any
        Destination - WAN address
        Destination Port Range - 1194 (или тот который указывали в сервере)

      данным правилом разрешаем внешние подключения к сервису OpenVPN

      1. на интерфейсе OpenVPN создаём разрешающее правило any - any - any (протокол - откуда - куда)
        регулировать потом будете при необходимости

      NAT - outbound
      добавляем правило
      Do not NAT - отмечаем, тем самым снимаем натирование, ведь мы сделали маршрутизацию (если будут проблемы с прохождением пакетов, можете включить)
      Interface - OpenVPN (общий псевдоинтерфейс)
      Source - any
      Destination - any

      4 этап - клиент

      1. настройка клиента минимум - советую лишь добавить Custom options
      keepalive 10 120;
      persist-key;
      persist-tun;
      
      1. повторяем правила NAT и Firewall для интерфейса OpenVPN

      Если захотите извращенств типа L2 (единая сеть для всех филиалов) средствами OpenVPN могу так-же написать инструкцию, но прежде стоит подумать много раз о зависимостях и последствиях такого решения в случае выхода из строя сервиса OpenVPN

      PTZ-MP 1 Reply Last reply Reply Quote 1
      • PTZ-MP
        PTZ-M @Monya
        last edited by

        @monya said in Маршрутизация OpenVPN:

        L2 (единая сеть для всех филиалов) средствами OpenVPN могу так-же написать инструкцию

        буду благодарен, пока что NAT - outbound мне не помог загнать трафик из серверной сети в туннель(

        в 1 этапе пункт 13 - ошибка в адресации?

        M 2 Replies Last reply Reply Quote 0
        • M
          Monya @PTZ-M
          last edited by Monya

          @ptz-m в чём именно ошибка? маска сети или иное? если маска - то всё в порядке. это для примера 23 маска для 2-ух классов подряд.
          П.С. извините за сумбур... увидел что неверно указал сеть в адресах - исправил

          1 Reply Last reply Reply Quote 0
          • M
            Monya @PTZ-M
            last edited by

            @ptz-m said in Маршрутизация OpenVPN:

            пока что NAT - outbound мне не помог загнать трафик из серверной сети в туннель

            покажите пожалуйста таблицу маршрутизации

            PTZ-MP 1 Reply Last reply Reply Quote 0
            • werterW
              werter
              last edited by werter

              Добрый.

              @Monya

              TLS authentication - снимаем галку

              Не снимаем. Это защита от MITM.

              Inter-client communication - отмечаем

              Крайне не рекомендую держать один впн-сервер для всех кдиентов сразу. При компроментации сертификата сервера прийдется перегенерировать сертификаты для всех клиентов этого сервера. Или 1 сервер=1 клиент или разбить на группы.

              NAT - outbound
              добавляем правило

              Не требуется. По умолч. NAT на опенвпн откл. Проверено на последнем 2.4.х

              P.s. У меня на впн-клиенте в Custom :

              persist-tun;
              persist-key;
              resolv-retry infinite;
              remote-cert-tls server;
              keepalive 5 10;

              M 1 Reply Last reply Reply Quote 0
              • M
                Monya @werter
                last edited by Monya

                @werter said in Маршрутизация OpenVPN:

                По умолч. NAT на опенвпн откл. Проверено на последнем 2.4.х

                Всё возможно. Просто за 6 лет использования pfSense начиная с версии 2.0.1 заметил что n-ное колличество инсталяций по разному обрабатывают данный факт, несмотря на единообразную настройку онных. К сожалению на x86-only железках где обитает на данный момент 2.3.5_2 обновляемых с 2.0.1 и 2.2 это не работает без явного правила, при чём неважно натировать или нет... главное чтобы правило присутствовало.

                1 Reply Last reply Reply Quote 0
                • P
                  pigbrother
                  last edited by pigbrother

                  Пользуюсь OpenVPN начиная с 2.0.1
                  Никаких правил в outbound не создавал.

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

                  Для topology subnet. Для net30 тоже работает, но адреса нужно выдавать с иным шагом, не подряд.

                  создаем текстовый файл ips.list вида
                  user1,10.11.11.20
                  user2,10.11.11.21
                  user3,10.11.11.22
                  ……
                  где
                  10.11.11.0/24 - сеть туннеля.
                  userX - common name пользователя.

                  OVPN резервирует адреса из списка и не выдает их пользователям, в список не включенным.

                  В Advanced сервера добавляем:
                  ifconfig-pool-persist /var/games/ips.list 0;
                  (0) - ноль обязателен.
                  т.е. мой ips.list лежит в /var/games.
                  Свой положите и назовите как\где хотите.
                  Редактироват ips.list желательно при остановленном сервере или отсутствии подключенных пользователей.

                  1 Reply Last reply Reply Quote 1
                  • PTZ-MP
                    PTZ-M @Monya
                    last edited by PTZ-M

                    @monya

                    0_1530000138435_маршруты.jpg

                    dev ovpns1
                    verb 1
                    dev-type tap
                    dev-node /dev/tap1
                    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 udp4
                    cipher AES-256-CBC
                    auth SHA1
                    up /usr/local/sbin/ovpn-linkup
                    down /usr/local/sbin/ovpn-linkdown
                    local XXX.XXX.XXX.XXX
                    tls-server
                    server 172.16.0.0 255.255.255.0
                    client-config-dir /var/etc/openvpn-csc/server1
                    tls-verify "/usr/local/sbin/ovpn_auth_verify tls 'server.ля-ля-ля.mainframe' 1"
                    lport 1194
                    management /var/etc/openvpn/server1.sock unix
                    push "route 192.168.0.0 255.255.255.0"
                    client-to-client
                    ca /var/etc/openvpn/server1.ca 
                    cert /var/etc/openvpn/server1.cert 
                    key /var/etc/openvpn/server1.key 
                    dh /etc/dh-parameters.2048
                    tls-auth /var/etc/openvpn/server1.tls-auth 0
                    ncp-ciphers AES-256-GCM:AES-128-GCM
                    comp-lzo adaptive
                    push "comp-lzo adaptive"
                    persist-remote-ip
                    float
                    route 192.168.1.0 255.255.255.0 172.16.0.2
                    
                    iroute 192.168.1.0 255.255.255.0
                    ifconfig-push 172.16.0.2 255.255.255.0
                    

                    P.S. решил зайти с другого конца
                    почитал - http://www.irz.net/sites/default/files/documentation/Router_iRZ_C02_Tunnels_RU.pdf пункт 2.2, углубился в вопрос - https://serveradmin.ru/nastroyka-openvpn-na-centos-7/#_openvpn_8212_TAP_TUN пункт 6.1, обратился к оф. ману - https://community.openvpn.net/openvpn/wiki/305-what-is-the-difference-between-a-tun-device-and-a-tap-device
                    пришла мысля, что изначальный проект сменил хардварную реализацию, поэтому стоит от tap уйти к tun, поскольку tap - это мост, а tun - маршрутизация.

                    M 1 Reply Last reply Reply Quote 0
                    • M
                      Monya @PTZ-M
                      last edited by

                      @ptz-m маршруты верны. Посмотрите трейс до внутреннего клиента. Перепроверьте правила файервола. Судя по таблице маршрутизации у вас может возникать только проблема с натированием при условии разрешающего правила на интерфейсе и правильном направлении трафика.

                      1 Reply Last reply Reply Quote 0
                      • werterW
                        werter
                        last edited by werter

                        Добрый.

                        @ptz-m said in Маршрутизация OpenVPN:
                        iroute 192.168.1.0 255.255.255.0; <--
                        ifconfig-push 172.16.0.2 255.255.255.0; <--

                        Важно ;

                        P.s. Не морочьте себе голову со статикой для впн-клиентов. Решите сперва проблему с прохождением трафика. Не хватайтесь за все сразу.

                        PTZ-MP 1 Reply Last reply Reply Quote 0
                        • PTZ-MP
                          PTZ-M @werter
                          last edited by PTZ-M

                          @werter said in Маршрутизация OpenVPN:

                          Важно ;

                          С ним и прописано в конфиге, просто в самом файле интерпретируется без этих разделителей

                          @werter said in Маршрутизация OpenVPN:

                          Решите сперва проблему с прохождением трафика.

                          дык я уже который пост и бьюсь над этим 😢

                          M 1 Reply Last reply Reply Quote 0
                          • M
                            Monya @PTZ-M
                            last edited by

                            @ptz-m сделайте трасировку с клиентской машины в головной сети, при этом смотрите лог файрвола в динамике. Отладка требует учесть несколько моментов. Но честно говоря очень странно что фактически при верном конфиге у вас не идёт трафик. Попробуйте всё-таки правило NAT создать.

                            PTZ-MP 1 Reply Last reply Reply Quote 0
                            • PTZ-MP
                              PTZ-M
                              last edited by

                              Добавил себе гемора!
                              Попробовал в настройках сервера сменить tap на tun - результата не дало, а вот возврат назад дал хреновый результат - 1. теперь все подключаемые клиенты получают по умолчанию адрес 172.168.0.2, соответственно ни хрена не работает. грохгул Специфические Настройки Клиента - не помогло. 2. хоть со стороны клиентов, пинг идёт на компы в серверной сети, шару видят только на центральном сервере, на остальных хоть зашарься внутри серверной сети всё ок, а за VPN тишина

                              1 Reply Last reply Reply Quote 0
                              • werterW
                                werter
                                last edited by werter

                                Добрый.

                                Только заметил, что у вас там TAP. Ну и каша.

                                Так с ТАР маршрутизация не работает. Это ж L2.
                                Зачем вам ТАР вообще? В 99% исп-ся TUN.
                                TAP исп-ся, если необходима работа в сети с одной адресацией (широковещание). И это редкий случай.

                                PTZ-MP 1 Reply Last reply Reply Quote 0
                                • PTZ-MP
                                  PTZ-M @werter
                                  last edited by PTZ-M

                                  @werter изначально всё делалось под клиенты на каждый ПК, это уже полгода спустя было решено маршрутизаторы связать. настраивалось по этому ману - https://habr.com/post/312528/
                                  другой вопрос, почему смена в настройках сервера tap на tun не принесла толку, а только грохнуло раздачу ИП для туннеля 😠

                                  1 Reply Last reply Reply Quote 0
                                  • werterW
                                    werter
                                    last edited by werter

                                    По ссылке у человека специфическая задача

                                    — я работаю с tap туннелем, мне так удобнее, он имитирует L2 уровень. С ним работают всякие мультикасты, бродкасты и т.п.;

                                    У вас такие же условия ? Если нет, то используйте TUN.

                                    Типа https://www.ceos3c.com/pfsense/configure-openvpn-for-pfsense-2-3-step-by-step/, но внимательно и под себя.

                                    PTZ-MP 1 Reply Last reply Reply Quote 0
                                    • PTZ-MP
                                      PTZ-M @werter
                                      last edited by PTZ-M

                                      @werter said in Маршрутизация OpenVPN:

                                      У вас такие же условия ?

                                      почти, сейчас касса Атол в серверной сети, клиент через VPN коннектится RDP к серверу и печатает на ней. потом "на лошадях" отправляем в офис клиента чек - как понятно гемор аХренеть какой.

                                      не говоря о том, что админить сеть приходиться через дырки в мире, что вообще не комильфо

                                      P.S. почитал мануал - не понял своей ошибки; тут он вообще весь обрезанный, есть мануал понятней и на русском - https://1cloud.ru/help/network/nastrojka-point-to-site-vpn-s-pomoshchyu-openvpn-remote-access-server-na-pfsense А так я не стал создавать VPN User - а) у десктопного клиента постоянно вылазит окно с авторизацией, а для women - это ahtung! б) что важнее zyxel и иже с ним эту авторизацию не воспринимают априори (см. ссылки на маны выше)
                                      Dynamic DNS Service мне вообще боком - у меня white IP v4 на WAN, можно было б заморочить его для 4G модема (правда это резерв чисто для головного офиса), но проще 2-го проводного провайдера подтянуть.
                                      В остальном разницы не увидел, пжст ткните носом где не прав

                                      P.S.S. грохнул сервер, мастером сделал заново, вообще по дефолту, ток дописал наши обсуждения

                                      dev ovpns1
                                      verb 1
                                      dev-type tun
                                      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 AES-256-CBC
                                      auth SHA1
                                      up /usr/local/sbin/ovpn-linkup
                                      down /usr/local/sbin/ovpn-linkdown
                                      multihome
                                      tls-server
                                      server 172.16.0.0 255.255.255.0
                                      client-config-dir /var/etc/openvpn-csc/server1
                                      tls-verify "/usr/local/sbin/ovpn_auth_verify tls 'server.ля-ля-ля.mainframe' 1"
                                      lport 1194
                                      management /var/etc/openvpn/server1.sock unix
                                      push "route 192.168.0.0 255.255.255.0"
                                      client-to-client
                                      duplicate-cn
                                      ca /var/etc/openvpn/server1.ca 
                                      cert /var/etc/openvpn/server1.cert 
                                      key /var/etc/openvpn/server1.key 
                                      dh /etc/dh-parameters.2048
                                      tls-auth /var/etc/openvpn/server1.tls-auth 0
                                      ncp-ciphers AES-256-GCM:AES-128-GCM
                                      comp-lzo adaptive
                                      push "comp-lzo adaptive"
                                      passtos
                                      persist-remote-ip
                                      float
                                      topology subnet
                                      route 192.168.1.0 255.255.255.0 172.16.0.2
                                      
                                      iroute 192.168.1.0 255.255.255.0
                                      

                                      Удалось вернуть раздачу ИП, а вот с остальным по прежнему глухо - клиенты друг друга не видят, пинги из серверной сети вместо туннеля летят к провайдеру - всё вернулось к началу...

                                      1 Reply Last reply Reply Quote 0
                                      • PTZ-MP
                                        PTZ-M @Monya
                                        last edited by

                                        @monya said in Маршрутизация OpenVPN:

                                        сделайте трасировку с клиентской машины в головной сети

                                        делал, см. выше - уходит сразу в сетку провайдера. вот из под клиента до сервера
                                        0_1530547955096_tracert.jpg

                                        @monya said in Маршрутизация OpenVPN:

                                        Попробуйте всё-таки правило NAT создать

                                        какое? а то я уже утонул во всём этом мракобесье... 💀

                                        P M 2 Replies Last reply Reply Quote 0
                                        • P
                                          pigbrother @PTZ-M
                                          last edited by pigbrother

                                          @ptz-m said in Маршрутизация OpenVPN:

                                          делал, см. выше - уходит сразу в сетку провайдера. вот из под клиента до сервера

                                          Я вас спрашивал - с каким IP ПК за сервером видят ПК из сети за клиентом. Насколько помню - не с IP из LAN за клиентом. Если так, предположу, что Zyxel натирует клиентскую LAN через IP OpenVPN-клиента. Если так - сети за сервером не увидеть сети за клиентом.
                                          Если я прав и, повторюсь, ПК за сервером видят соединения с ПК из сети за клиентом с IP тоннеля (соединения с разных ПК видны с одним IP тоннеля) - дело в клиенте Zyxel.

                                          PTZ-MP 1 Reply Last reply Reply Quote 0
                                          • PTZ-MP
                                            PTZ-M @pigbrother
                                            last edited by PTZ-M

                                            @pigbrother я уже сервер пересоздал, но уже на TUN - маршруты pfsense в opnevpn так и не передаёт!
                                            сейчас сижу с домашнего компа с ип 172.16.0.3 и не вижу нифига в серверной сети, кроме центрального сервера, на который в NAT настроены разные дырки. в предыдущей версии с TAP, я мог подключаться удалёнкой к своему рабочему компу.

                                            0_1530557099319_marshrut.jpg

                                            блин такое чувство, что OpenVPN подчиняется правилам NAT pfsense! но это же бред мы для него дыру во внутрь зачем делаем! он что внешний интерфейс чтоль для LAN?!

                                            0_1530557905995_rule.jpg

                                            даже добавление правила, всё равно просто задублирует основное

                                            P.S. вот внизу интересный совет - http://bilee.com/pfsense.html пока не пробовал, а что у кого в этом разделе настроект прописано?

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