如何在 Ubuntu 下为其他机器映射/转发端口?(localhost 555 -> 192.168.0.21:555)

如何在 Ubuntu 下为其他机器映射/转发端口?(localhost 555 -> 192.168.0.21:555)

您知道如何在我的 Ubuntu 计算机上为远程 IP 创建一个“虚拟”监听端口吗?

我的意思是,像这样的事情。

当我写作时远程登录 127.0.0.1 555,我想连接到计算机192.168.0.21在港口555(我的服务器就在这里)。

任何想法?

答案1

我认为iptables就是您正在寻找的并且它应该已经与 Ubuntu 一起安装了。

这可能需要一些反复试验,但以下命令应该可以解决问题:

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 555 -j DNAT --to 192.168.0.21:555
iptables -A INPUT -p tcp -m state --state NEW --dport 555 -i eth1 -j ACCEPT

关于这些命令的更详细说明可以找到这里

另一种方法是使用一个名为rinetd可通过 synaptic 在 Ubuntu 中使用。

将 TCP 连接从一个 IP 地址和端口重定向到另一个。rinetd 是一个单进程服务器,可以处理与文件 /etc/rinetd.conf 中指定的地址/端口对的任意数量的连接。

有一个很好的指南介绍如何使用它这里

答案2

http://www.frozentux.net/iptables-tutorial/chunkyhtml/x4033.html

您认为现在应该足够了,事实确实如此,除非考虑整个场景的最后一个方面。如果防火墙本身尝试访问 HTTP 服务器,它会去哪里?现在看来,不幸的是,它会尝试访问自己的 HTTP 服务器,而不是驻留在 $HTTP_IP 上的服务器。为了解决这个问题,我们还需要在 OUTPUT 链中添加 DNAT 规则。按照上面的例子,这应该看起来像下面这样:

iptables -t nat -A OUTPUT --dst $INET_IP -p tcp --dport 80 -j DNAT --to-destination $HTTP_IP

答案3

相关内容