Я пытаюсь настроить прозрачный VPN-шлюз для удаленной сети, в удаленной сети есть сервер OpenVPN, а в локальной сети - клиент OpenVPN, выполняющий роль шлюза.
Диаграмма показывает IP и маршруты для каждого хоста, зеленым цветом я отметил маршруты, которые я добавил, чтобы все работало, я хочу сделать NAT на сервере VPN, поэтому никаких дополнительных маршрутов на каждом сервере этой сети не требуется ( сервер с именем Destination является примером сервера в этой сети).
Отредактировано, чтобы добавить пояснения:
Моя проблема живет только на сервере с надписью «VPN-клиент», я могу заставить установку работать, настроив NAT на этом сервере, как описано ниже, но я хочу, чтобы он направлял пакеты на «VPN-сервер» без NAT, NAT будет выполнен "VPN-сервером".
Насколько я понимаю, пинг с компьютера, помеченного как "рабочая станция", на сервер, помеченный как "назначение", должен работать, но он не работает, такой же пинг с клиента VPN работает, как и ожидалось, только с одним NAT, выполняемым на сервере VPN.
Если я открою tcpdump на tun0 с обеих сторон, я смогу увидеть ping-пакеты с рабочей станции до места назначения на VPN-клиенте, но ничего на VPN-сервере, вот вывод tcpdump на VPN-клиенте:
$ sudo tcpdump -i tun0 'icmp'
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on tun0, link-type RAW (Raw IP), capture size 262144 bytes
16:07:11.391614 IP 10.1.110.7 > 192.168.1.63: ICMP echo request, id 10871, seq 49, length 64
16:07:12.404989 IP 10.1.110.7 > 192.168.1.63: ICMP echo request, id 10871, seq 50, length 64
Если я добавлю правило маскарада на VPN-клиенте, пинг достигнет пункта назначения и отправит ответ:
$ iptables -t nat -A POSTROUTING -o tun0 -j MASQUERADE
Но с этой настройкой я буду выполнять NAT дважды, я хочу, чтобы VPN-клиент пересылал пакеты без наттинга.
Политика пересылки брандмауэра настроена на принятие:
$ sudo iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
И нет правил NAT, которые могли бы помешать:
$ sudo iptables -L -t nat
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
Chain POSTROUTING (policy ACCEPT)
target prot opt source destination
Переадресация IP включена:
$ cat /proc/sys/net/ipv4/ip_forward
1
Чего мне не хватает?