我有一个简单的设置,涉及 LXC 容器(debianstretch 主机、debianbuster 容器)中的 OpenVPN 服务器,我想在其中设置基于 nftables 的防火墙。
让我困惑的是,nftables 无法捕获 10.52.1.0/24 子网中任何流量的 Saddr,即使使用特定的 IP 或 /32 掩码也是如此。
我发现 nftables 将我的流量视为封装的,尽管我认为我已经将其设置为在 tap52 接口上监听(这纯粹是一个 openvpn 接口 10.52.0.0/16)
我做错了什么吗?
我的 nftables.conf 非常简单:
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain input_tap52 {
type filter hook input priority 0;
ip saddr 10.52.1.0/24 drop # This doesn't work
#drop # This works
meta nftrace set 1
}
chain forward_tap52 {
type filter hook forward priority 0; policy drop;
}
chain output_tap52 {
type filter hook output priority 0; policy accept;
}
}
nft 监视器跟踪给了我这个输出:
trace id beade08f inet filter input_tap52 rule nftrace set 1 (verdict continue)
trace id beade08f inet filter input_tap52 verdict continue
trace id beade08f inet filter input_tap52
trace id d46433ce inet filter input_tap52 packet: iif "eth0" ether saddr 00:16:3e:00:00:00 ether daddr 00:16:3e:c3:6d:fb ip saddr 46.134.**.** ip daddr 10.0.3.253 ip dscp cs0 ip ecn not-ect ip ttl 53 ip id 0 ip protocol udp ip length 42 udp sport 3423 udp dport openvpn udp length 22 @th,64,96 17369369003734387519951732736
答案1
好吧,所以我做了一些错误的假设:
1)我在某处读到,将接口名称附加到“input_”将自动过滤来自该接口的流量,这是错误的。
2)我确实看到了封装的流量,但也有一些有效的“10.52.0.0/16”数据包,具体来说是广播数据包。
所以最后我想起了这个: https://serverfault.com/questions/736274/openvpn-client-to-client
使能客户对客户制作小包无形的到内核。这就是我的案例中的问题。