Убунту на бродяге и iptables
У меня есть рабочий стол Ubuntu 14.04, работающий на бродячей виртуальной машине (virtualbox).
Я пытаюсь перенаправить порт 25 на порт 2525, и я выполнил следующие команды:
sudo sysctl net.ipv4.ip_forward=1
sudo iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT --to-port 2525
sudo iptables -t nat -A POSTROUTING -j MASQUERADE
Команда:
cat /proc/sys/net/ipv4/ip_forward
возвращает 1.
Я могу открыть соединение через порт 2525:
vagrant@vagrant:~$ telnet localhost 2525
Trying ::1...
Connected to localhost.
Escape character is '^]'.
220 alfresco.com ESMTP SubEthaSMTP 3.1.6
но телнет на 25 порт не работает:
vagrant@vagrant:~$ telnet localhost 25
Trying ::1...
Trying 127.0.0.1...
telnet: Unable to connect to remote host: Connection refused
Я попытался также подключиться к локальному IP-адресу машины с теми же результатами.
телнет 10.0.2.15 2525
хорошо, но
телнет 10.0.2.15 25
возвращает то же самое (соединение отказано).
Команда:
iptables -t nat -L
возвращает:
Chain PREROUTING (policy ACCEPT)
target prot opt source destination
REDIRECT tcp -- anywhere anywhere tcp dpt:smtp redir ports 2525
REDIRECT tcp -- anywhere anywhere tcp dpt:2526 redir ports 2525
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
MASQUERADE all -- anywhere anywhere
Обновить
Для меня было бы достаточно, если бы кто-то мог предложить, по крайней мере, как устранить проблемы такого рода.
1 ответ
Вы можете использовать socat:
socat TCP-LISTEN:25,su=nobody,fork,reuseaddr TCP-CONNECT:127.0.0.1:2525
Это говорит socat прослушивать TCP-порт 25 и подключать его к локальному 2525. Он работает как пользователь nobody, для большей безопасности. Параметр fork означает, что он будет пересматривать входящий порт, чтобы он не блокировался.
Это основано на следующем посте: https://superuser.com/a/536295/621970