Я пытаюсь перенаправить трафик, входящий на определенный порт, на другой сервер, например: myserver.com:8081
-> externalserver.com:15081
.
Мой конкретный вариант использования - SSH, однако я настроил http://port81.helpfulseb.com:81
(без SSL )проверить с помощью решения в этот вопрос . Но это не сработало.
Вот именно те команды, которые я выполнил:
iptables -t nat -A PREROUTING -p tcp --dport 81 -j DNAT --to-destination 158.69.48.226:81
iptables -t nat -A POSTROUTING -p tcp -d 158.69.48.226 --dport 81 -j SNAT --to-source <my external IP address, i.e. 51.68...>
158.69.48.226
- это адрес port81.helpfulseb.com
Когда я пытаюсь подключиться к myserver.com:81
время ожидания запроса истекло. Вывод iptables -t nat -v -L
показывает несколько входящих пакетов, но ничего исходящего. Я предполагаю, что это контрольные пакеты, которые получены, но по какой-то причине ответ не маршрутизируется должным образом.
$ iptables -t nat -v -L -n --line-number
Chain PREROUTING (policy ACCEPT 16632 packets, 665K bytes)
num pkts bytes target prot opt in out source destination
1 27 1276 DNAT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:81 to:158.69.48.226:81
Chain INPUT (policy ACCEPT 16632 packets, 665K bytes)
num pkts bytes target prot opt in out source destination
Chain OUTPUT (policy ACCEPT 492 packets, 33023 bytes)
num pkts bytes target prot opt in out source destination
Chain POSTROUTING (policy ACCEPT 492 packets, 33023 bytes)
num pkts bytes target prot opt in out source destination
1 0 0 SNAT tcp -- * * 0.0.0.0/0 158.69.48.226 tcp dpt:81 to:<my external IP>
Я использую Ubuntu 18.04 LTS, если это помогает.
Если вы не привязаны к iptables, существует решение socat:
root@myserver.com# /usr/bin/socat TCP-LISTEN:8081,fork,reuseaddr TCP:externalserver.com:15081