![端口转发 + 与 Ubuntu 共享连接](https://linux22.com/image/1239991/%E7%AB%AF%E5%8F%A3%E8%BD%AC%E5%8F%91%20%2B%20%E4%B8%8E%20Ubuntu%20%E5%85%B1%E4%BA%AB%E8%BF%9E%E6%8E%A5.png)
由于我的无线路由器的以太网端口有缺陷,我通过交叉以太网电缆从我的笔记本电脑(有 wifi)到我的 eMac(没有 wifi)建立了共享无线连接。笔记本电脑位于路由器后面192.168.1.131
,而 eMac 位于笔记本电脑后面10.42.43.1
。
笔记本电脑运行的是 Ubuntu 9.10(Karmic)。我通过 NetworkManager Applet 实现了共享连接。我右键单击右上角的网络图标,转到“编辑连接”,选择名为“Auto eth0”的有线连接,单击“编辑...”,转到“IPv4 设置”选项卡,然后选择方法“共享到其他计算机”。eMac 现在可以访问互联网了。
现在我想启用端口转发。我想玩一个游戏,需要转发端口 6112(TCP 和 UDP)才能托管游戏。我设置了路由器以启用192.168.1.131
(笔记本电脑)的端口转发,但 eMac 上仍然无法使用端口转发。
我想我需要将我的笔记本电脑当作路由器并在其上配置端口转发,指示笔记本电脑的传入连接 ( 192.168.1.131
) 应转发到共享连接 ( ) 上的 eMac 10.42.43.1
。因此,进入路由器端口 6112 的数据包将被重定向到笔记本电脑(由路由器重定向),然后重定向到 eMac(由笔记本电脑重定向)。
我的问题是,如何在 Ubuntu 上做到这一点(考虑到 NetworkManager 的存在)?另外,如果我无法让它工作,有人介意托管一个 comp stomp 吗?:D
答案1
对 Ubuntu 配置实用程序一无所知,但这是经典的方法:
echo 1 > /proc/sys/net/ipv4/ip_forward # enable forwarding
iptables -I FORWARD -p tcp -d 192.168.1.131 --dport 6112 -j ACCEPT #just to be sure firewall doesn't block
iptables -t nat -A PREROUTING -p tcp -i eth0 --dport 6112 -j DNAT --to 10.42.43.1 #actual forward
#same for UDP
iptables -I FORWARD -p udp -d 192.168.1.131 --dport 6112 -j ACCEPT
iptables -t nat -A PREROUTING -p udp -i eth0 --dport 6112 -j DNAT --to 10.42.43.1
您必须将 -i eth0 更改为您的 wlan 连接名称。通常
iptables -t nat -A PREROUTING [-p protocol] --dport [external port on router] -i ${WAN} -j DNAT --to [ip/port to forward to]
更多内容请查看Frozentux iptables 指南。
答案2
考虑安装 Shorewall 包来配置您的路由。您的转发规则将使用 DNAT 规则完成。我建议从示例 2 接口配置开始。