Добрый день! Есть сервер OpenVPN, сеть туннеля 10.8.0.0/24, к серверу подключены два клиента, клиент А 10.8.0.2 и клиент B 10.8.0.3. Оба клиента Windows, сервер Ubuntu 18. У клиента А есть локальная сеть 192.168.1.0/24 и у клиента B есть локальная сеть 192.168.31.0/24. Подскажите, как прописать маршрутизацию, чтобы был доступ в локальные сети клиентов A и В и между собой они могли связываться из локальных сетей? Клиенты друг друга видят, но выхода в их локальные сети нет.
клиент А 10.8.0.2 и клиент B 10.8.0.3
Это невозможно. OVPN так работает, что он выделяет /30 подсеть на каждого клиента. Первый клиент будет иметь адрес 10.8.0.4, второй будет 10.8.0.8, третий 10.8.0.12 и так далее.
mureevms, Это лишь настройка по умолчанию, которую можно и нужно изменить.
Я обычно использую topology subnet - это создает "обычную" ВПН подсеть, при этом ВПН серверу присваивается первый адрес из этой подсети, а клиентам распределяются остальные. У автора, возможно, настроено так же.
К слову топология по умолчанию объявлена deprecated с версии OpenVPN 2.3.
Evgeniy Garkov, Вариант добавления маршрутов в конфиги зависит от типа конфигурирования клиентов.
Вы используете опцию client-config-dir в конфиге сервера и есть ли у вас файлы конфигурации клиентов в каталоге, указанном в этой опции?
res2001,
Конфиг сервера у меня следующий:
port 443
proto tcp
dev tun
user nobody
group nogroup
persist-key
persist-tun
keepalive 10 120
topology subnet
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 1.1.1.1"
push "dhcp-option DNS 1.0.0.1"
push "redirect-gateway def1 bypass-dhcp"
dh none
ecdh-curve prime256v1
tls-crypt tls-crypt.key
crl-verify crl.pem
ca ca.crt
cert server_qiNCTIzVLhsmuPSh.crt
key server_qiNCTIzVLhsmuPSh.key
auth SHA256
cipher AES-256-GCM
ncp-ciphers AES-256-GCM
tls-server
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
client-config-dir /etc/openvpn/ccd
client-to-client
#status /var/log/openvpn/status.log
push "route 192.168.1.0 255.255.255.0"
И конфиг одного из клиента:
client
proto tcp-client
remote хх.хх.хх.хх 443
dev tun
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verify-x509-name server_qiNCTIzVLhsmuPSh name
auth SHA256
auth-nocache
cipher AES-256-GCM
tls-client
tls-version-min 1.2
tls-cipher TLS-ECDHE-ECDSA-WITH-AES-256-GCM-SHA384
ignore-unknown-option block-outside-dns
setenv opt block-outside-dns # Prevent Windows 10 DNS leak
verb 3
Тогда вопрос сформулирую так: как открыть хотя бы локальную сеть 192.168.1.0 что бы можно было пинговать устройства с сервера?
push route - это го же не достаточно?
Evgeniy Garkov, В конфиге сервера у вас используется опция client-config-dir, следовательно в /etc/openvpn/ccd должны быть файлы конфигурации клиентов. В этом случае для конфигурации сети за клиентом А нужно добавить в его файл конфигурации (в каталоге /etc/openvpn/ccd) опцию: iroute 192.168.1.0 255.255.255.0
Эта опция добавит маршрут на ВПН сервер до сети за клиентом А при подключении клиента. push "route 192.168.31.0 255.255.255.0"
Эта опция добавит маршрут клиенту А до сети за клиентом В.
По идее тут же должна быть опция для назначения статического адреса клиенту А: ifconfig-push 10.8.0.2 255.255.255.0
Без постоянных адресов, настраивать маршрутизацию в других сетях проблематично.
Аналогичные настройки надо сделать и для клиента В.
После добавления этих опций и перезагрузке ВПН в таблицах маршрутизации клиентов и сервера должны добавиться соответствующие маршруты.
Следующий этап - настройка клиентских сетей.
Если клиент А или В каждый в своей сети является шлюзом по умолчанию, то никакой дополнительной настройки сети не нужно.
Если же клиент А или В в своей сети не является шлюзом по умолчанию, то нужно любым доступным способом на все компы сети добавить маршрут к сети соседа через своего клиента. Конечно этот маршрут на самого клиента добавлять не надо. Например для компов в сети за клиентом А нужно добавить маршрут до сети 192.168.31.0/24 шлюзом будет выступать клиент А. Аналогично для сети за клиентом В.
Массово раздать маршрут можно несколькими способами, например: как опция при раздаче IP адресов в DHCP сервере, другой вариант - с помощью GPO, если в сети развернута AD, и т.п.
Кроме того, стоит аналогичным образом добавить маршрут для ВПН (10.8.0.0/24) сети в обоих сетях.
После подобных настроек доступ из одной сети в другую должен работать. Так же должен быть доступ с ВПН сервера в обе сети.
Не забываем про настройку фаерволов как локальных на каждом компе в клиентских подсетях так и на клиенте А/В и на ВПН сервере. Для тестов есть смысл выбрать пару компов внутри сетей и отключить фаерволы на них. После того как маршрутизация заработает, включаем фаерволы и настраиваем правила так, что бы ВПН трафик не блокировался.