nftables 规则不阻止流量

nftables 规则不阻止流量

我正在测试 NFtables,并尝试在具有 ens37 和 ens38 2 个接口的 Linux 计算机上设置基本路由防火墙。这是这 2 个接口的 ifconfig 输出。

ens37: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.3  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 00:0c:29:74:33:e7  txqueuelen 1000  (Ethernet)
        RX packets 20  bytes 2524 (2.4 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 156  bytes 9952 (9.7 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

ens38: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.4  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 00:0c:29:74:33:f1  txqueuelen 1000  (Ethernet)
        RX packets 147  bytes 9340 (9.1 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 18  bytes 1672 (1.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

我想将 ens38 模拟为 WAN 端口,并阻止所有非 LAN 发起的入站流量,但允许 LAN 流量出站。

我在以下位置设置了这些规则/etc/nftables.conf

#!/usr/sbin/nft -f

flush ruleset

table ip filter {
    # allow all packets sent by the firewall machine itself
    chain output {
        type filter hook output priority 100; policy accept;
    }

    # allow LAN to firewall, disallow WAN to firewall
    chain input {
        type filter hook input priority 0; policy accept;
        iifname "ens37" accept
        iifname "ens38" drop
    }

    # allow packets from LAN to WAN, and WAN to LAN if LAN initiated the connection
    chain forward {
        type filter hook forward priority 0; policy drop;
        iifname "ens37" oifname "ens38" accept
        iifname "ens38" oifname "ens37" ct state related,established accept
    }
}

为了测试规则是否成功,我使用 netcat 设置一个侦听器:

nc -lp 80 -s 192.168.0.3

然后我使用 netcat 从另一个接口进行连接:

nc 192.168.0.3 80 -s 192.168.0.4

我的问题是这些 nftables 规则不会阻止来自模拟 WAN 端口的流量。 netcat 连接双向工作得非常好,这不是我想要的。

如果我运行nft list table filter,我会得到我期望看到的输出规则。

我是 nftables 的新手,如何才能让这些规则针对这两个接口正确运行?我目前的方法有什么问题?

答案1

首先,我会从另一台主机而不是同一台机器进行测试,您通常需要进行特殊配置才能将“同一主机”流量正确分类为“输入”。

另外,您的 WAN 和 LAN 位于同一网络范围内似乎很奇怪,当然 IP 网络中没有正常的定义,但您使用的是“相关”和“已建立”,它们通常是 NAT 的一部分。

相关内容