OpenVPN server. Пример настройки.
-
Настройка 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. Нет маршрута в сеть за сервером для клиентов - 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 адрес, для удобства]Вами описан случай, когда один клиент - один сервер. Если же это подключение исп-ся десятками клиентов, к-ые исп. один и тот же конфиг, то делать так не стОит.