VPNを介したトラフィックのみを許可し(そしてipv6漏洩を防ぐためにすべてのipv6トラフィックをブロックする)、私のArchlinuxディストリビューションでnftablesファイアウォールを設定しようとしています。
私はしばらくそれを使用してきましたが、最終的にWebを閲覧するための設定を得ました。今まで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サーバーに接続してからWebを閲覧するだけです。アウトアウトチェーンから最後のルールを削除すると、Webを閲覧できなくなります。
私はこれについて完全に初めてで、何も知らず、学習しようとしています。残念ながら、nftablesのドキュメントはそれほど広範囲ではなく、今は少し停滞しています。
これまで私が理解しているように、この設定はVPNへの接続を許可する必要がありますが、他の着信トラフィックは許可しないでください。ただし、問題なくWebを閲覧できます。
なぜ動作するのか、そしてより完全な設定のためにnftables設定をどのように進めるべきかを知っている人はいますか?
答え1
state
related
着信トラフィックを使用して許可できますestablished
。 HTTP トラフィックは要求を送信するクライアントによって開始され、応答はestablished
出力チェーンの規則に従って一致します。ルートがVPNを通過すると仮定すると、ルールは初期トラフィックを許可しますoif "tun0" accept
。