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

    OpenVPN server. Пример настройки.

    Scheduled Pinned Locked Moved Russian
    3 Posts 2 Posters 7.0k 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.
    • S
      StanislawK
      last edited by

      Настройка OpenVPN server.


      1 Первым делом создаем корневой СА сертификат.

      System-> Cert Manager

      1.1 Добавляем корневой сертификат.

      http://192.168.1.1/system_camanager.php

      Нажимаем "Плюс", [[i]add ot import ca]


      Descriptive Name: my.root.ca
      Для дальнейшего удобства, лучше дать простое и понятное имя сертификата, отражающее его назначение.

      Method: Create an internal Certificate Authority

      Key Length: 2048 bits

      lifetime: 3650 days

      Distinguished Name
      Country Code: RU
      State or province: Russia
      City: Saint-Petersburg
      Organisation: Stanislaw Home VPN
      email Address: stanislaw@fake-mail-not-real.com
      common name: my.root.ca
      Для дальнейшего удобства, лучше дать простое и понятное имя сертификата, отражающее его назначение.


      Нажимаем на "Save".

      Примечание. Во избежании глупых ошибок и траты многих часов на их поиски, я предпочитаю использовать одинаковые Descriptive Name и common name.

      Таким образом мы получили Certificate Authority, корневой сертификат под которым можем выпустить доверенные сертификаты для OpenVPN соединений.

      Открываем вкладку "Certificates".

      1.2 Добавляем сертификат для VPN сервера.

      http://192.168.1.1/system_certmanager.php

      Нажимаем "Плюс", [[i]add ot import ca]


      Descriptive Name: my.vpn.server
      Для дальнейшего удобства, лучше дать простое и понятное имя сертификата, отражающее его назначение.

      Method: Create an internal Certificate Authority

      Certificate authority: my.root.ca  [Тот CA сертификат, что был создан на первом шаге.]

      Digest Algorithm: SHA256

      Certificate Type: Server Certificate

      Key Length: 2048 bits

      lifetime: 3650 days

      Distinguished Name
      Country Code: RU
      State or province: Russia
      City: Saint-Petersburg
      Organisation: Stanislaw Home VPN
      email Address: stanislaw@fake-mail-not-real.com
      common name: my.vpn.server
      Для дальнейшего удобства, лучше дать простое и понятное имя сертификата, отражающее его назначение.


      Нажимаем на "Save".

      Картинка три

      1.3 Добавляем сертификат для VPN клиента.

      http://192.168.1.1/system_certmanager.php

      Нажимаем "Плюс", [[i]add ot import ca]


      Descriptive Name: my.vpn.remote.client
      Для дальнейшего удобства, лучше дать простое и понятное имя сертификата, отражающее его назначение.

      Method: Create an internal Certificate Authority

      Certificate authority: my.root.ca  [Тот CA сертификат, что был создан на первом шаге.]

      Digest Algorithm: SHA256

      Certificate Type: User Certificate

      Key Length: 2048 bits

      lifetime: 3650 days

      Distinguished Name
      Country Code: RU
      State or province: Russia
      City: Saint-Petersburg
      Organisation: Stanislaw Home VPN
      email Address: stanislaw@fake-mail-not-real.com
      common name: my.vpn.remote.client
      Для дальнейшего удобства, лучше дать простое и понятное имя сертификата, отражающее его назначение.


      Нажимаем на "Save".

      Обратите внимание!

      Мы получили два сертификата. один для VPN сервера и один для VPN клиента.


      2 Создаем VPN сервер.

      VPN -> OpenVPN  вкладка  Server

      http://192.168.1.1/vpn_openvpn_server.php

      Нажимаем "Плюс", [[i]add server]


      Server Mode: Remote Acces (SSL/TLS)
      Protocol: UDP
      Device mode: tun
      Interface: WAN
      Local port: 1194
      Description: My VPN
      Для красоты желательно дать простое и понятное имя службы сервера, отражающее его назначение.


      Peer Certificate Authority:  my.root.ca  [[i]тот самый первый созданный СА]
      Server Certificate: my.vpn.server [[i]тот самый сертификат, который мы создали вторым, для сервера]
      DH Parameters Length: 2048
      Encryption algorithm: BF-CBC
      Auth Digest Algorithm: SHA256


      IPv4 Tunnel Network: 192.168.2.0/24
      [[i]диапазон IP адресов. которые будут выдаваться клиентам и использоваться сервером VPN. Должен отличатся от используемых в локальной сети.]

      Compression: Enabled with Adaptive compression


      Dynamic IP: +  [ставим галочку]
      Address Pool: - [убираем галочку]

      Advanced:
      route 192.168.1.0 255.255.255.0;


      Нажимаем на "Save".

      Сервер создан.


      3 Создаем клиентское подключение.

      VPN -> OpenVPN  вкладка  Client Specific Override

      http://192.168.1.1/vpn_openvpn_csc.php

      Нажимаем "Плюс", [[i]add csc]


      Common name: my.vpn.remote.client    [[i]внимательно и аккуратно копипастим из нашего третьего сертификата, поле common name.  без пробелов. без лишних знаков.]

      Description: My laptop mobile client [[i]Для удобства заполняем описание, чтоб оптом через год вспомнить к кому это относится]


      Tunnel Network: 192.168.2.4/30  [закрепляем за этим клиентом IP адрес, для удобства]


      Нажимаем на "Save".

      Клиент создан.

      Теперь, удаленный клиент при соединении с нашим сервером, предъявив сертификат "my.vpn.remote.client" всегда будет получать адрес 192.168.2.6 
      что нам удобно для пинга и прочей диагностики.


      Если еще нету, устанавливаем пакет "OpenVPN Client Export Utility"  http://192.168.1.1/pkg_mgr.php


      4 Экспортируем настройки

      VPN -> OpenVPN  вкладка  Client Export.

      http://192.168.1.1/vpn_openvpn_export.php

      Выбираем наш VPN сервер (если их несколько)

      Remote Access Server: My VPN UDP:1194

      Host Name Resolution: Interface IP Address


      Client Install Packages:

      Скачиваем сконфигурированный установщик VPN клиента.

      Если у клиента уже установлен OpenVPN, можно скачать только конфиг.

      Я предпочитаю  Inline Configurations:  Others

      Вся конфигурация VPN клиента и необходимые сертификаты в одном файле.
      Для использования этой конфигурации с windows openvpn клиентом его достаточно перенести в папку "C:\Program Files\OpenVPN\config"


      5. Готово.

      Внезапно выясняем что "ничего не работает!"

      6. Firewall

      http://192.168.1.1/firewall_rules.php?if=openvpn

      По желанию создаем разрешающее правило "можно всем всё".

      Либо вручную разрешаем только трафик из сети VPN
      allow all  source 192.168.2.0/24 destination 192.168.1.0/24
      и обратно.
      allow all source 192.168.1.0/24 destination 192.168.2.0/24


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

      1.3 Добавляем сертификат для VPN клиента.

      Новому клиенту соответственно задаем новые уникальные "Descriptive Name" и "common name", для его идентификации.

      3 Создаем клиентское подключение.

      задаем соответствующую следующую свободную подсеть:
      192.168.2.8/30  (клиент получит адрес .10)
      192.168.2.12/30 (клиент получит адрес .14)
      192.168.2.16/30 (клиент получит адрес .18)
      192.168.2.20/30 (клиент получит адрес .22)
      192.168.2.24/30 (клиент получит адрес .26)
      192.168.2.28/30 (клиент получит адрес .30)
      192.168.2.32/30 (клиент получит адрес .34)
      192.168.2.36/30 (клиент получит адрес .38)
      192.168.2.40/30 (клиент получит адрес .42)
      192.168.2.44/30 (клиент получит адрес .46)
      192.168.2.48/30 (клиент получит адрес .50)
      и так далее..

      4 Экспортируем настройки


      Это черновик руководства. Исправления и уточнения будут приняты с благодарностью.

      Это базовая конфигурация. по памяти.

      В два клика можно разрешить обмен трафиком между клиентами.

      В два клика можно "завернуть" весь трафик клиента через VPN сервер. Так что и в интернет он будет идти не через имеющееся у него соединение, а через наш pfSense, с ip адреса pfSense. через squid.

      В два клика можно, на время соединения с vpn, запретить клиенту интернет, и оставить только соединение с офисом.

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

        Я так понимаю, возражений нет?

        Нужно ли добавить картинок?

        Сегодня или завтра разверну в лаборатории тестовую инсталяцию. Будут добавлены скрины. Скорректированы недочеты.

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

          Спасибо за инс-цию.

          Замечания :

          1. Нет маршрута в сеть за сервером для клиентов - push "route …" в Advanced configuration сервера или в настройках сервера - IPv4 Local Network/s . Ваша директива route … рисует роут для сервера в сеть клиента. Для того , чтобы машины за сервером попадали в сеть за клиентом исп-ся директива iroute <сеть за клиентом> в Client Specific Overrides

          2. В версии 2.2.х (или даже 2.1.х) необходимо явно нарисовать разрешающее правило в fw на LAN для того, чтобы машины за сервером попадали в сеть за клиентом. И поставить его повыше (или самым первым вообще). Уже многие здесь с этим столкнулись.

          3. Клиента для Win устанавливать от имени Админа, т.е. прав.кн.мыши "Запустить от имени Администратора". Иначе могут роуты не добавляться при поднятии туннеля. Рекомендуется и запускать от имени Админа (проверить этот момент)

          4. В конф. файле Win-клиента в самый верх после dev tun я добавляю :

          keepalive 5 10 # можно и увеличить время по желанию
          ping-timer-rem
          

          Иногда маршруты не добавляются. Помогает добавление директив в конец (под разные вер. Win пробовать одну из них) :

          route-delay 5 # задержка при добавлении роута в сек
          route-method exe  
          ip-win32 netsh
          

          И в самом конце :

          pull # не обязательно
          verb 3
          

          5.

          Server Mode: Remote Acces (SSL/TLS)
          Protocol: UDP
          Device mode: tun
          Interface: WAN
          Local port: 1194

          Я бы не исп. стандартный порт. Нет, конечно врядли кто-то сумеет подключиться без логин-пасс\сертификаты, но все же.
          Или исп. порт выше 10 000 или , если будете подключаться из корп. сети со злыми админами, то исп. порты 80\TCP,
          443\TCP, 53\TCP_UDP , порты почтовых служб - SMPTS, POP3S, IMAPS. Чаще всего описанные стандартные порты открыты во вне даже в сетях со строгими правилами.

          6.

          Создаем клиентское подключение.

          VPN -> OpenVPN  вкладка  Client Specific Override

          http://192.168.1.1/vpn_openvpn_csc.php

          Нажимаем "Плюс", [add csc]

          Common name: my.vpn.remote.client    [внимательно и аккуратно копипастим из нашего третьего сертификата, поле common name.  без пробелов. без лишних знаков.]

          Description: My laptop mobile client [Для удобства заполняем описание, чтоб оптом через год вспомнить к кому это относится]
          Tunnel Network: 192.168.2.4/30  [закрепляем за этим клиентом IP адрес, для удобства]

          Вами описан случай, когда один клиент - один сервер. Если же это подключение исп-ся десятками клиентов, к-ые исп. один и тот же конфиг, то делать так не стОит.

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