Убунту на бродяге и 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

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