设置 nftables 仅允许通过 VPN 进行连接并阻止所有 ipv6 流量

设置 nftables 仅允许通过 VPN 进行连接并阻止所有 ipv6 流量

我正在尝试在我的 archlinux 发行版上设置一个 nftables 防火墙,该防火墙仅允许通过 vpn 的流量(并阻止所有 ipv6 流量以防止任何 ipv6 泄漏)

我已经使用它有一段时间了,最​​终得到了一个可以让我浏览网页的配置,尽管据我到目前为止对 nftable 的了解,它不应该让我这样做。规则集非常短,如下所示:

table inet filter {
    chain input {
            type filter hook input priority 0; policy drop;
            jump base_checks
            ip saddr VPN_IP_ADRESS udp sport openvpn accept
    }

    chain forward {
            type filter hook forward priority 0; policy drop;
    }

    chain output {
            type filter hook output priority 0; policy drop;
            ip daddr VPN_IP_ADRESS udp dport openvpn accept
            oifname "tun0" accept
    }

    chain base_checks {
            ct state { related, established} accept
            ct state invalid drop
    }
}

我试图通过反复试验找到自己的方法,并且其中还有许多其他规则,但仅此而已,我就可以先连接到 VPN 服务器,然后浏览网页。一旦我从 outout 链中删除最后一条规则,它就不会再让我浏览网页了。

我对此完全陌生,几乎一无所知,正在尝试学习。不幸的是,关于 nftables 的文档并不是那么广泛,所以我现在有点陷入困境。

据我目前的了解,此设置应该允许连接到 VPN,但不应允许任何其他传入流量 - 但我可以毫无问题地浏览网页。

有谁知道它为什么起作用以及我应该如何继续设置 nftables 以获得更完整的设置?

答案1

state related您可以使用和允许传入流量established。 HTTP 流量由客户端发送请求发起,响应将按照established输出链中的规则进行匹配。假设您的路由通过 VPN,则您的规则接受初始流量oif "tun0" accept

相关内容