Ubuntu 上的 vagrant 和 iptables

Ubuntu 上的 vagrant 和 iptables

我有一个在 vagrant VM(virtualbox)上运行的 ubuntu 桌面 14.04。

我正在尝试将端口 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 上的 telnet 不起作用:

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

相关内容