[iptables] 如何用iptables管理桥接模式下的设备

 

场景:qemu虚拟机通过tap设备与host的物理网卡通过bridge桥接上网。

如下:

[root@host100 ~]# brctl show
bridge name     bridge id               STP enabled     interfaces
br0             8000.001700010000       yes             eth0
                                                        tap200-0

 

虚拟机里有一个client外连一个指定的tcp端口获取服务,因为它是不可配置的,所以它默认链接 169.254.169.254的1600端口。

配置根据不同的部署情况在host主机上做,方法是用DNAT,置换掉169.254.169.254:1600为指定的ip和端口。

 

通常情况下nat的配置这样写:

iptables -t nat -A PREROUTING -p tcp -d 169.254.169.254 -m tcp --dport 1600 -j DNAT --to-destination 192.168.7.129:10001

但是,并不好使。因为bridge的情况比较特殊(但是我并不知道为啥特殊。。。。)

 

所以,需要这样写:

iptables -t nat -A PREROUTING -p tcp -d 169.254.169.254 -m tcp --dport 1600 -m physdev --physdev-in tap200-0 -j DNAT --to-destination 192.168.7.129:10001

 

当时即使这样,依然也不一定好使。因为还需要另一个重要的配置:

echo 1 > /proc/sys/net/ipv4/ip_forward

至于这个配置的深层定义,我还没有理解。待续~~~

 

参考:http://bwachter.lart.info/linux/bridges.html

 

posted on   toong  阅读(1261)  评论(0编辑  收藏  举报

编辑推荐:
· 敏捷开发:如何高效开每日站会
· 为什么 .NET8线程池 容易引发线程饥饿
· golang自带的死锁检测并非银弹
· 如何做好软件架构师
· 记录一次线上服务OOM排查
阅读排行:
· 欧阳的2024年终总结,迷茫,重生与失业
· 在 .NET 中使用 Tesseract 识别图片文字
· Bolt.new 30秒做了一个网站,还能自动部署,难道要吊打 Cursor?
· 敏捷开发:如何高效开每日站会(Daily Stand-up Meeting)
· C#/.NET/.NET Core技术前沿周刊 | 第 20 期(2025年1.1-1.5)
历史上的今天:
2017-10-23 [daily][centos][sudo] sudo 报错

统计

点击右上角即可分享
微信分享提示