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. 이런 의미에서 나는 위의 예에서 두 번째 규칙의 역할을 이해합니다.SNAT

제가 이해하지 못하는 것은 [to :PORT_SPEC] 문입니다(문서 링크), 예(첫 번째 규칙):masquerade to :1024-65535

정확히 무엇을 masquerade to :1024-65535지정해야 합니까?
이 두 규칙은 기본적으로 동일합니까, 아니면 차이점이 있습니까?
localhost의 가상 스위치를 통해 가상 머신에서 인터넷으로 NAT하는 데 어느 것이 더 좋습니까?

답변1

iptables 대상에 대한 문서를 보면 상황이 더 명확해질 것이라고 생각합니다 MASQUERADE. ~에서iptables-extensions(8):

가장 무도회

[...]

  • --to-ports port[-port]

    이는 기본 SNAT 소스 포트 선택 휴리스틱(위 참조)을 재정의하여 사용할 소스 포트 범위를 지정합니다. 이는 규칙이 tcp, udp, dccp 또는 sctp 프로토콜 중 하나를 지정하는 경우에만 작동합니다.

NFT 규칙의 옵션은 to :PORT_SPEC동일한 작업을 수행합니다. 즉, 연결을 가장하는 데 사용되는 소스 포트를 지정합니다.

관련 정보