nftables:HTTPトラフィックをNATの後ろのボックスに転送する

nftables:HTTPトラフィックをNATの後ろのボックスに転送する

ゲートウェイとしてDebianシステムがあります。私のnftables.confはとても簡単です。

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
        chain input {
                type filter hook input priority filter;
        }
        chain forward {
                type filter hook forward priority filter;
        }
        chain output {
                type filter hook output priority filter;
        }
}

table ip nat {
        chain prerouting {
                type nat hook prerouting priority filter; policy accept;
        }

        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                oifname "enp5s0" masquerade
        }
}

これで、インターネットからポート80に入るトラフィックを192.168.1.3ホストにリダイレクトするように変更したいと思います。

tcp dport 80 dnat to 192.168.1.3チェーンを追加しようとしましたが、発信トラフィックnat:preroutingもリダイレクトされます。追加がiffname "enp5s0"まったく機能しないようです。つまりこれは:

#!/usr/sbin/nft -f

flush ruleset

table inet filter {
        chain input {
                type filter hook input priority filter;
        }
        chain forward {
                type filter hook forward priority filter;
        }
        chain output {
                type filter hook output priority filter;
        }
}

table ip nat {
        chain prerouting {
                type nat hook prerouting priority filter; policy accept;
                iifname enp5s0 tcp dport 80 dnat to 192.168.1.3
        }

        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                #oifname "enp5s0" masquerade
                masquerade
        }
}

正しいアプローチが何であるかを知っていますか?グーグルしてもあまり役に立ちませんでした。

ありがとうございます!

答え1

着信トラフィックをリダイレクトするのはWAN1 つのアプローチですが、発信トラフィックNATも必要ですが、パケットが転送されるホストとしてのみ必要です。

saddrしたがって、そのホストにのみ適用されるように、バックルーティングチェーンの送信元アドレスを指定する必要があります。

table ip nat {
        chain prerouting {
                type nat hook prerouting priority filter; policy accept;
                iifname enp5s0 tcp dport 80 dnat to 192.168.1.3
        }

        chain postrouting {
                type nat hook postrouting priority srcnat; policy accept;
                # This will SNAT only that host but not outgoing traffic from localhost
                ip saddr 192.168.1.3 masquerade
        }
}

ボーナス:

事前ルーティングチェーンのdstnat優先順位はfilter次のとおりです。

        chain prerouting {
                type nat hook prerouting priority dstnat; policy accept;
                iifname enp5s0 tcp dport 80 dnat to 192.168.1.3
        

forward構成に構成しようとしているチェーンも欠けていることに注意してください。

関連情報