如何使用iptables创build一个双向桥接

设置:我有一台三星液晶电视,通过eth0连接到运行Ubuntu 10.10的无线连接到家庭路由器的T41 Thinkpad。

我试图让三星的遥控器应用程序在我的iPad上工作,但该应用程序不会允许我input一个IP地址,只发现电视,如果它在与iPad(跛脚)相同的子网。

所以我需要笔记本电脑将数据包从eth0路由到无线接口(wlan0),并且我需要将wlan0接口上的3个端口转发到三星电视。

希望这一切都有道理。 我一直在搞iptables和三星现在能够通过笔记本电脑无线访问互联网,但从wlan0映射回三星电视是躲过我。

这个Ubuntu无线网桥howto包含一些信息。 特别是你需要:

  • 使用apt-get install bridge-utils安装bridge-utils软件包
  • 修改/etc/network/interfaces (添加br0接口,将你的无线设备设置为主模式)。
  • 添加iptables防火墙规则以启用伪装
  • 在/etc/sysctl.conf中打开ip转发。

桥接networking的经典方式不在IP层面,而在以太网层面。 你可以build立一个桥梁( brctl )并查看ebtables来防火墙。 这将桥接所有的数据包(所以你可能需要在桥的两端相同的IP范围)。 这就像直接插入电缆一样,它也会照顾到三星正在发生的任何发现魔术。

如果您只需要转发3个IP端口,则可以使用带有DNAT目标的iptables:

 iptables -t nat -A PREROUTING -p tcp (-i eth0) -d xxx.xxx.xxx.xxx --dport zz -j DNAT --to yy.yy.yy.yy:zz 

或更简单(无需桥接),也许是足够的:一个TCP代理:

 simpleproxy -d -L zz -R yy.yy.yy.yy:zz