Я пытаюсь перенаправить некоторый трафик с одного экземпляра клиента OpenVPN на другой. как изображено здесь
Я хочу перенаправить трафик с некоторых портов и оставить другие на экземпляре VPN1.
Все правила, которые я применяю, относятся к VPN1, поскольку клиенту не нужно заботиться о том, будет ли перенаправлен его трафик, а также VPN2 не нужно заботиться о том, "кто" запросил запрос. Итак, вот правила, которые я использую прямо на экземпляре VPN1:
Чтобы клиент мог добраться до сети 10.8.0.0/24, я добавил в файл server.conf
который добавил:
push "route 10.8.0.0 255.255.255.0"
route 10.8.0.0 255.255.255.0
Для пересылки трафика с tun0
на tun1
я добавляю следующие правила:
iptables -t nat -A POSTROUTING -o tun1 -j MASQUERADE
iptables -A FORWARD -i tun0 -j ACCEPT #forward traffic
Для подключения к интернету по первому туннелю у меня также есть:
iptables -t nat -A POSTROUTING -s 10.8.100.0/24 -j MASQUERADE
Итак, вот где я начинаю терпеть неудачу. По этой ссылке я добавил следующее:
echo "1 nextHop" >> /etc/iproute2/rt_tables
ip route add default via 10.8.0.1 dev tun1 table nextHop
ip rule add from all fwmark 0x1 lookup nextHop
iptables -t mangle -I PREROUTING -p tcp --dport 80 -j MARK --set-mark 1 ## or whatever port I want to forward.
Когда я добавляю последнее правило iptables, трафик идет от tun0
на клиенте, к tun0
на VPN1, к tun1
на VPN1, на tun0
на VPN2 и достигает Интернета. Тем не менее, ответ tun0
на tun0 в VPN2 и перенаправляется на tun1
на VPN1, но НЕ tun0
на tun0 на VPN1, чтобы достичь tun0
на клиенте. Я видел это с tcpdump
.
Я пробовал много разных подходов, используя DNAT
и SNAT
но я все еще не могу переслать ответ обратно клиенту.
Как я могу перенаправить некоторые порты из VPN1 в VPN2 и получить ответы обратно клиенту?