Вот моя инфраструктура:
dns of mydomain.com:
vpn A 90.90.90.1
vpn A 90.90.90.2
client vpn config:
client
dev tun
proto udp
nobind
remote vpn.mydomain.com 1394
server1
net.ipv4.ip_forward = 1
iptables:
FORWARD defaults to ACCEPT
vpn config:
dev tun
topology subnet
port 1394
proto udp
server 10.10.1.0 255.255.255.0
push "route 10.90.90.0 255.255.255.0"
interfaces:
ifpub: 90.90.90.1/24
ifpriv: 10.90.90.1/24
ifvpn: 10.10.1.1/24
routes:
10.10.1.0/24 src 10.10.1.1 dev ifvpn
10.10.2.0/24 via 10.90.90.2 dev ifpriv
server2
net.ipv4.ip_forward = 1
iptables:
FORWARD defaults to ACCEPT
vpn config:
dev tun
topology subnet
port 1394
proto udp
server 10.10.2.0 255.255.255.0
push "route 10.90.90.0 255.255.255.0"
interfaces:
ifpub: 90.90.90.2/24
ifpriv: 10.90.90.2/24
ifvpn: 10.10.2.1/24
routes:
10.10.1.0/24 via 10.90.90.1 dev ifpriv
10.10.2.0/24 src 10.10.2.1 dev ifvpn
Проблема в том, что с моего клиента я могу пинговать сервер OpenVPN, к которому я подключен, но не другой сервер в подсети 10.90.90.0/24.
tcpdump
показывает, что ICMP-запрос отправляется с ifvpn
на ifpriv
тот же сервер, но затем пакет ICMP-запроса не передается дальше.
Добавление логирования в iptables также показывает, что пакет запроса ICMP переходит в состояние POSTROUTING, не отбрасываясь, но затем пакет так и не доходит до места назначения, и я не знаю, что здесь происходит, у меня нет решений.
Я знаю, что могу маскировать свои пакеты, но не хочу этого делать, потому что это не рекомендуется (https://community.openvpn.net/openvpn/wiki/NatHack), иначе это будет мое самое последнее решение.
решение1
Если удаленный сервер «открывает подсеть», у вас должен быть каталог, ccd
содержащий файлы с iroute
директивами, как это подробно описано в документации OpenVPN. У вас также должны быть route
директивы, переданные клиентам.
Когда все работает правильно:
- Клиент отправляет пинг.
- В операционной системе клиента есть команда маршрутизации, которая отправляет этот трафик на локальный сервер OpenVPN.
- Информация
ccd
сообщает OpenVPNк которому подключен пультдля отправки трафика на доставку. - Транспортное средство появляется на этом удаленном участке и следует к месту назначения.
- Для обратного пути удаленная система должнатакжеиметь маршрут операционной системы, который будет отправлять трафик обратноегоOpenVPN-сервер.