Переадресация портов SSH-туннеля

Переадресация портов SSH-туннеля

У меня есть 2 ВМ, одна с частным IP-адресом (за NAT), а другая с публичным. Я сделал SSH-туннель с NAT. Цель — подключить публичную ВМ к сети за NAT и перенаправить через нее часть трафика. Суть в том, чтобы подменить приложение, работающее в этой сети, похожим на приложение на публичном сервере (в тестовых целях).

Поэтому я сделал что-то вроде этого:

Включить туннель

sudo ssh [email protected] -w 0:0

Адресация

ifconfig tun0 10.253.253.1/30 pointopoint 10.253.253.2 - Local

ifconfig tun0 10.253.253.2/30 pointopoint 10.253.253.1 - Remote

Добавление маршрута во внутреннюю сеть

ip route add 10.0.3.0/24 via 10.253.253.1

Для двусторонней связи (на самом деле не уверен насчет этого)

sudo arp -sD 10.253.253.1 ens18 pub

Переадресация порта на локальном компьютере

sudo sysctl -w net.ipv4.ip_forward=1
sudo iptables -I FORWARD 1 -s 10.253.253.1 -j ACCEPT
sudo iptables -I FORWARD 1 -d 10.253.253.1 -j ACCEPT
sudo iptables -t nat -A POSTROUTING -s 10.253.253.1 -j MASQUERADE

И на самом деле это почти работает, когда я отключаю службу приложений на локальном хосте, она перенаправляет трафик на удаленный. Но есть главная проблема - этот локальный сервер отправляет запросы на порт 4660, а другие (внутренние приложения) отвечают на порт 4661. Похоже, мне нужно дополнительное правило, чтобы перенаправлять весь входящий трафик на порт 4661 в туннельный интерфейс на порт 4660. Как с этим справиться? Я не очень хорошо знаком с iptables, но я пробовал что-то вроде этого, но это не работает:

iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4661 -j DNAT --to 10.253.253.1:4660
iptables -A FORWARD -p udp -d 10.253.253.1 --dport 4660 -j ACCEPT

решение1

Хорошо, я заставил это работать:

iptables -A PREROUTING -t nat -i eth0 -p udp --dport 4661 -j DNAT --to 10.253.253.2:4661(remote tun address)

Связанный контент