Настройка openVPN для схемы с сервером и клиентом
Задача:
Построить туннель и обеспечить взаимную доступность адресов из одной локальной сети в другую. Для решения этой задачи мы настроим один роутер как сервер, второй – в качестве клиента.
В данном случае лишь роутеру, выступающему в роли сервера, необходим внешний или «белый» IP адрес. Клиент может использовать «серый» и находиться за NAT-ом.
В этом примере роутер R1 выступает в роли сервера и имеет внешний IP 200.1.1.1 и локальную сеть с адресами из подсети 192.168.2.0/24.
Клиентский роутер R2 имеет локальную сеть с адресами в диапазоне 192.168.3.0/24.
|
Настройка OpenVPN предполагает наличие на роутере установленных сертификатов для клиента и сервера. Инструкцию как создать, экспортировать и импортировать сертификаты в iRZos смотрите в отдельной статье. Сертификаты могут быть созданы как с помощью отдельной инфраструктуры PKI (например, easy-rsa), так и в интерфейсе роутера. |
Настройка R1 (сервер)
-
Перейдите в раздел /service → openvpn-server.
Схема 2. Настройка сервераПараметры сервера Поле
Значение
Dey-Type
Tun
Protocol
UDP (по умолчанию)
Port
1194 (по умолчанию)
Tunel IP
10.8.0.1/24
Pool
10.8.0.10-10.8.0.20
Clipher
AES-256-CBC (по умолчанию)
Auth
SHA1 (по умолчанию)
TA Key
Ca
Имя файла нашего CA (в примере это CA)
Cert
Имя сертификата сервера (в примере это server)
Keepalive
10 60
Push To Client
topology=subnet (по умолчанию); route=192.168.2.0/24 (клиенту будет передан маршрут до локальной сети роутера R1); route-gateway=10.8.0.1 (шлюзом к передаваемому маршруту назначается туннельный адрес роутера R1)
Flag
duplicate-cn (по умолчанию)
-
Нажмите Apply, чтобы применить внесенные настройки.
-
Перейдите в раздел /service → client.
-
Нажмите Add и задайте Username.
Username должен полностью соответствовать common name сертификата пользователя, который будет подключаться к серверу OpenVPN в качестве клиента!
Схема 3. Создание клиентской записи -
Настройте параметры для подключаемого клиента:
-
В поле Service выберите openvpn.
-
В поле Tunnel IP можно указать туннельный IP адрес с маской (из диапазона Pool), который будет привязан к данному клиенту. Если оставить это поле пустым, адрес будет назначен автоматически.
-
В поле Route укажите локальную подсеть роутера R2, которую нужно сделать доступной с роутера R1. В данном примере это 192.168.3.0/24.
-
Нажмите Apply для применения настроек.
-
Если нужно подключить к OpenVPN несколько разных клиентов, создайте соответствующие записи в разделе /service → client с различными Username, идентичными CN соответствующих сертификатов. Если нужно предоставить доступ к локальным сетям данных клиентов, укажите их подсети в поле Route для данного клиента.
Теперь запустите сервер OpenVPN в разделе /service → openvpn-server, сняв галочку напротив Disabled и нажав Apply. Статус туннеля изменится на running.
Настройка роутера R2 (клиент)
-
Перейдите в /tunnel → openvpn.
Схема 5. Настройка клиентаПараметры клиента Поле
Значение
Local IP
WAN
Remote IP
200.1.1.1
Tunnel IP
Device Type
tun
Protocol
udp
Encryption
tls
Cipher
AES-256-CBC
Auth
SHA1
TA Key
Не используется в примере
Ca
Имя файла сертификата CA (CA.pfx_0)
Cert
Имя файла сертификата клиента (client.pfx_0)
Username
Не используется в примере
Password
Не используется в примере
Flag
Pull (по умолчанию)
Extra Parameters
Не используется в примере
Ca и Сert имеют иные наименования в связи с тем, что были созданы на роутере-сервере irzOS и экспортированы, при этом изменись имена файлов. Чтобы импортировать сертификаты на роутер, их необходимо загрузить в разделе /storage → file. А затем воспользоваться функцией импорта в разделе /storage → certificate → cert import. Подробнее в статье. -
Для завершения настройки снимите галочку напротив Disabled и нажмите Apply.
Как только туннель поднимется, это отобразится в его статусе.
Схема 6. Статус туннеля
Туннель поднялся, а клиент получил IP адрес 10.8.0.15/24, как и было задано.
Убедитесь в том, что клиент получил нужные маршруты от сервера с помощью списка маршрутов /ip → routes → list.
Отобразились маршрут №1 для туннельного интерфейса и №3 – до локальной сети R1 через туннельный интерфейс.
| По умолчанию весь трафик для туннельных интерфейсов разрешен. При необходимости, настройки правил файрволла доступны в разделе /firewall! |
Настройка сервера и клиента в режиме CLI
Обратите внимание, в силу необходимости использования предварительно созданных сертификатов, настройка в консоли может быть сложнее, чем в Web-версии, хотя оба варианта используют одни и те же параметры.
Настройка для роутера-сервера R1
Создание конфигурации OpenVPN сервера.
/service openvpn-server
auth -
auth SHA1
ca СA
cert server
cipher -
cipher AES-256-CBC
dev-type tun
disabled -
extra -
flag -
flag duplicate-cn
keepalive 10 60
pool 10.8.0.10-10.8.0.20
port 1194
protocol udp
push -
push route-gateway=10.8.0.1,route=192.168.2.0/24,topology=subnet
ta-key -
tunnel-ip 10.8.0.1/24
/service openvpn-server apply
/
Создание учетной записи для клиента. Username должен соответствовать CN (common name) сертификата клиента. Tunnel-ip – задайте фиксированный IP адрес клиенту только при необходимости.
/service client add username=client
disabled -
password -
route -
route 192.168.1.0/24
service -
service openvpn
tunnel-ip 10.8.0.15/24
apply
/
Настройка для клиента R2
/tunnel openvpn add name=ovpn1
auth -
auth SHA1
ca ca.crt
cert client-bundle.pem
cipher -
cipher AES-256-CBC
dev-type tun
disabled -
encryption tls
extra -
flag -
flag pull
local-ip auto
password -
protocol udp
remote-ip -
remote-ip 200.1.1.1
ta-key -
tunnel-ip -
username -
apply
/
Дополнительная настройка в режиме "звезда"
На текущий момент в irzOS нет возможности передавать клиентам множественные маршруты, поэтому в некоторых ситуациях требуется ручная настройка.
Задача:
Подключить одновременно двух (и более) клиентов к серверу OpenVPN с необходимостью обеспечения их взаимного доступа к локальным сетям.
Решение:
Допустим, что локальная сеть Клиента №2 – это 192.168.4.0/24.
-
Создайте сертификат клиента №2 (условный роутер R3) на роутере-сервере R1 или в той системе, в которой создаются сертификаты. Это может быть роутер irzOS, выступающий в роли сервера, или отдельная система PKI.
-
В разделе /service → client создайте дополнительного клиента и укажите там его LAN подсеть.
-
Настройте на втором клиенте подключение к OpenVPN аналогично инструкции выше.
-
Клиент №2 получит от сервера маршрут до подсети сервера (192.168.2.0/24). Роутер-сервер R1 будет иметь маршрут до клиента R3 (192.168.4.0/24) из его клиентской записи, поле Route.
-
Дополнительно пропишите маршруты:
-
На клиенте R3 до локальной сети клиента R2 укажите маршрут 192.168.3.0/24 через туннельный интерфейс OpenVPN. Шлюз: 10.8.0.1.
Схема 9. Создание маршрута на клиенте R3 до R2
Схема 10. Создание маршрута на клиенте R3 до R2. Продолжение/ip route list add dst-addr=192.168.3.0/24 interface=ovpn1 disabled - gateway 10.8.0.1 metric - src-addr - table main type unicast apply / -
На клиенте R2 до локальной сети клиента R3 укажите маршрут 192.168.4.0/24 через туннельный интерфейс OpenVPN. Шлюз: 10.8.0.1.
Схема 11. Создание маршрута на клиенте R2 до R3
Схема 12. Создание маршрута на клиенте R2 до R3. Продолжение
/ip route list add dst-addr=192.168.4.0/24 interface=OVPN disabled - gateway 10.8.0.1 metric - src-addr - table main type unicast apply / -
Теперь каждый из трех участников (и устройства локальной сети) имеет возможность говорить с локальной сетью другого участника.