我如何防止TINC中继DHCP

我在运行Debian 7 Wheezy的几个NAT路由器上运行tinc,除了因为我已经在交换机模式下设置了它,它会中继DHCP请求并且通过所有的VPN来应答,所以VPN可以正常工作好几个月。 问题是主机A正在使用10.10.10.2-254的DHCP池,10.10.10.1作为网关(主机A),主机B使用10.10.10.2-254的池作为DHCP,10.10.20.1作为网关(主机B)等等。

请注意,tinc tap(以太网)接口桥接在物理LAN接口上,因为我的“云”的目的是使所有networking(A,B ..)中的所有主机出现在同一个局域网中。

我正在寻找一个简单的解决scheme来克服这一点。 尝试使用iptables与physdev和physdev-in指定tinc接口,但这似乎没有工作。

有没有其他的解决办法呢?

PS:切换到路由器模式不是一个解决scheme,因为我真的需要多播和其他非路由协议。

如果你有sysctlvariablesnet.bridge.bridge-nf-call-iptables设置为1,它应该与iptables -t mangle -m physdev一起工作。

sysctl -w net.bridge.bridge-nf-call-iptables=1 iptables -t mangle -I PREROUTING -m physdev --physdev-in vpn1 \ -p udp --dport 67:68 -j DROP 

你也可以用ebtables来阻止它:

 ## dont accept dhcp packets directed to the local machine ebtables -A INPUT --in-interface vpn1 --protocol ipv4 \ --ip-protocol udp --ip-destination-port 67:68 -j DROP ## dont forward dhcp packets coming in from vpn ebtables -A FORWARD --in-interface vpn1 --protocol ipv4 \ --ip-protocol udp --ip-destination-port 67:68 -j DROP ## dont send dhcp requests over vpn ebtables -A FORWARD --out-interface vpn1 --protocol ipv4 \ --ip-protocol udp --ip-destination-port 67:68 -j DROP