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
동일한 작업을 수행합니다. 즉, 연결을 가장하는 데 사용되는 소스 포트를 지정합니다.