私は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を初めて使用します。これら2つのインターフェイスに対してこれらのルールが正しく機能するようにするにはどうすればよいですか?現在のアプローチにはどのような問題がありますか?
ベストアンサー1
まず、同じシステム以外のホストでテストします。通常、「同じホスト」トラフィックを「入力」として正しく分類するには、特別な設定が必要です。
また、WANとLANが同じネットワーク範囲にあることが奇妙に見えます。もちろん、IPネットワーキングには一般的な定義はありませんが、通常はNATの一部である「関連」と「確立」を使用しています。