您知道如何在我的 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
使用 redir 代替 iptables:http://manpages.ubuntu.com/manpages/lucid/man1/redir.1.html