运行 Ubuntu 14.04LTS 家庭服务器。我有一台小型 IOT 设备,它将 HTTP 帖子发送到远程 Web 服务器,我想将其重定向到本地进程(基本上是拦截它发送到我自己的本地进程的帖子)。服务器使用 eth0(内置以太网端口),IOT 设备位于 eth1 上,这是一个 USB 以太网适配器。我在 /etc/network/interfaces 中创建了一个桥接
auto eth0
iface eth0 inet dhcp
auto eth1
iface eth1 inet manual
auto br0
iface br0 inet dhcp
bridge_ports eth0 eth1
我使用以下 iptables 规则将桥接流量重定向到本地端口 22041。效果很好。
iptables -t nat -A PREROUTING -i br0 -p tcp --dport 80 -j REDIRECT --to-port 22041
问题是,当 LAN 上的任何设备尝试访问网页时,它似乎还会将端口 80 流量重定向到服务器。如果我运行“firefoxhttp://127.0.0.1/页' 从服务器运行,一切正常。如果我从 LAN 上的另一台机器运行“firefox httpt://server_ip/page”,它会被重定向到端口 22041。
我以为“-i br0”只会将此规则应用于来自网桥的流量,但显然情况并非如此。如何阻止 iptables 将外部流量重定向到端口 22041?
提前致谢,TD
答案1
我相信我在另一篇文章中找到了我自己的答案。如果我使用 physdev 来匹配 eth1,而不是在桥上匹配,它似乎可以工作并且不会阻止我的常规流量。
iptables -t nat -A PREROUTING -m physdev --physdev-in eth1 -p tcp --dport 80 -j REDIRECT --to-port 22041