可能为Linux桥拦截stream量?

我有一个Linux机器设置作为客户端和服务器之间的梁;

brctl addbr0 brctl addif br0 eth1 brctl addif br0 eth2 ifconfig eth1 0.0.0.0 ifconfig eth2 0.0.0.0 ip link set br0 up 

我也有一个应用程序在本机的端口8080上侦听。 是否有可能将目的地为80端口的stream量传递给我的应用程序? 我已经做了一些研究,看起来可以使用ebtablesiptables来完成。

这是我的其他设置:

 //set the ebtables to pass this traffic up to ip for processing; DROP on the broute table should do this ebtables -t broute -A BROUTING -p ipv4 --ip-proto tcp --ip-dport 80 -j redirect --redirect-target DROP //set iptables to forward this traffic to my app listening on port 8080 iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --on-port 8080 --tproxy-mark 1/1 iptables -t mangle -A PREROUTING -p tcp -j MARK --set-mark 1/1 //once the flows are marked, have them delivered locally via loopback interface ip rule add fwmark 1/1 table 1 ip route add local 0.0.0.0/0 dev lo table 1 //enable ip packet forwarding echo 1 > /proc/sys/net/ipv4/ip_forward 

然而,没有什么是我的申请。 我错过了什么? 我的理解是,路由器BROUTING链上的目标DROP会将其推送到iptables进行处理。

其次,我还有其他的select吗?

编辑:IPtables得到它在nat PREROUTING,但它看起来像下降之后; INPUT链(在mangle或filter中)不会看到数据包。

我决定保持桥接行为。 我将使用ebtables来阻止我想拦截的stream量,并让我的应用程序使用原始套接字拦截这些数据包。 似乎有点混乱,但似乎工作。