如何防止 TINC 中继 DHCP

如何防止 TINC 中继 DHCP

我在几个运行 Debian 7 Wheezy 的 NAT 路由器上运行 tinc,VPN 运行了几个月,但因为我已将其设置为交换机模式,所以它会通过整个 VPN 中继 DHCP 请求和应答。问题是主机 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 接口桥接,因为我的“云”的目的是使所有网络(A、B ..)中的所有主机都出现在同一个 LAN 中。

我正在寻找一个简单的解决方案来克服这个问题。尝试使用 iptables 和 physdev 以及指定 tinc 接口的 physdev-in,但这似乎不起作用。

还有其他解决办法吗?

PS:将 tinc 切换到路由器模式不是一个解决方案,因为我确实需要多播和其他不可路由的协议。

答案1

如果将 sysctl 变量 net.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

相关内容