Как я могу прозрачно перенаправить трафик с одного IP на другой?

Я хотел бы перенаправить весь входящий трафик через порт 1111, снова на другой сервер через порт 1111, выступая в качестве прозрачного прокси. Погуглив, я попытался использовать iptables, но это не работает, как ожидалось.

root@glider:~# sysctl net.ipv4.ip_forward=1
net.ipv4.ip_forward = 1

root@glider:~# iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination 10.2.4.44:1111

root@glider:~# iptables -t nat -A POSTROUTING -j MASQUERADE

root@glider:~# telnet localhost 1111
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused

root@glider:~# telnet 10.2.4.44 1111
Trying 10.2.4.44...
Connected to 10.2.4.44.
Escape character is '^]'.

Я использую Kubuntu 14.04 LTS.

1 ответ

Решение

PREROUTING цепочка используется для входящих пакетов, но не для локально сгенерированных пакетов. Чтобы проверить это, вы не должны подключаться к localhost. Вместо этого вы должны проверить соединение с другого хоста.

применение nat Правила для всех интерфейсов потенциально проблематичны. Я бы порекомендовал вам ограничить применение правил только на интерфейсе, где они вам нужны.

DNAT Правило должно иметь -i <interface name> или же -d <ip address>, MASQUERADE Правило должно иметь -o <interface name>,

Другие вопросы по тегам