masqueradeの使い方と意味[to:PORT_SPEC]

masqueradeの使い方と意味[to:PORT_SPEC]

nftables以下は、仮想マシンからLANにIPをなりすます2つのサンプルNATルールを含む関連サンプルルールのセットです。

#!/usr/sbin/nft -f

add table nat_4

# Sees all packets after routing, just before they leave the local system
add chain nat_4 postrouting_nat_4 {
    type nat hook postrouting priority srcnat; policy accept;
    comment "Postrouting SNAT IPv4 traffic"
}

# Masquerade all packets going from VMs to the LAN/Internet
add rule nat_4 postrouting_nat_4 meta l4proto tcp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter masquerade to :1024-65535

# Same rule as above but without [to :PORT_SPEC]
add rule nat_4 postrouting_nat_4 meta l4proto tcp ip saddr 192.168.122.0/24 ip daddr != 192.168.122.0/24 counter masquerade

例IPアドレスは、192.168.122.0/24仮想マシンが実行されているネットワークアドレスです。

私が理解しているように、ソースIPをアウトバウンドインターフェイスIPに変更することによって行われますmasquerade。この意味で、私は上記の例の2番目のルールの役割を理解しています。SNAT

私が理解していないのは[to:PORT_SPEC]ステートメントです(ドキュメントリンク)、はい(最初のルール):masquerade to :1024-65535

正確に何をmasquerade to :1024-65535指定する必要がありますか?
これらの2つのルールは基本的に同じですか、それとも違いがありますか?
localhostの仮想スイッチを介して仮想マシンからインターネットにNATするのにどちらが良いですか?

答え1

iptablesターゲットのドキュメントを見ると、状況がより明確になると思いますMASQUERADE。 ~からiptables-extensions(8):

仮面舞踏会

[...]

  • --to-ports port[-port]

    これは、デフォルトのSNATソースポート選択ヒューリスティック(上記を参照)をオーバーライドして、使用するソースポートの範囲を指定します。これは、ルールが tcp、udp、dccp、または sctp プロトコルのいずれかを指定する場合にのみ機能します。

NFTルールのオプションはto :PORT_SPEC同じことを行います。つまり、接続を偽装するために使用されるソースポートを指定します。

関連情報