我正在尝试使用 nftables 在 Debian 10 上设置 Linux 路由器。我遵循了一些教程并做了一些阅读,这增加了我对问题的困惑。我的路由器、WAN、管理和 LAN1 上有 3 个接口,我的基本设置按预期工作,但现在,我尝试在服务器上执行更新,但发现从 WAN 接口流出的本地流量被阻止。我的 nftable.conf 如下
#!/usr/sbin/nft -f
flush ruleset
table inet filter {
chain output {
type filter hook output priority 0; policy accept;
}
chain input {
type filter hook input priority 0; policy accept;
iif WAN ip protocol icmp accept
iif WAN drop
iif LAN1 ip protocol icmp accept
iif LAN1 udp dport {67, 68} accept
iif LAN1 counter drop
iif Management accept
}
chain forward {
type filter hook forward priority 0; policy drop;
iif LAN1 oifname WAN accept
iif WAN oifname LAN1 ct state related,established accept
}
}
table ip nat {
chain prerouting {
type nat hook prerouting priority 0; policy accept;
}
chain postrouting {
type nat hook postrouting priority 100; policy accept;
oif WAN masquerade
}
}
由于 icmp 规则,我能够通过 WAN 接口 ping ip 地址,但是一旦我引入“iif WAN drop”,因为我想阻止所有其他流量到 WAN 接口,规则我无法解析域名称,因为 DNS 服务器可通过 WAN 接口访问。
根据我的理解,输出规则应该允许从主机出站,因此不明白为什么主机流量被输入过滤器阻止。
通过我从连接到 LAN1 接口的客户端节点完成的一些测试,虽然流量没有限制,客户端可以浏览该主机。
如果有人可以指出我的错误或解释为什么这会影响主机流量。
谢谢
答案1
输入链中的规则会丢弃所有到达 WAN 并发往路由器本身的数据包(ICMP 数据包除外)。如果您希望路由器本身能够建立连接,则需要一条规则iff WAN ct state established,related accept
,类似于转发链中的规则。这个规则必须先来iff WAN drop
。为了更好地衡量,我还会为环回接口添加一个明确的接受规则。