
다음과 같은 두 가지 iptables 규칙이 있습니다.
# vmbr0 - WAN bridge, vmbr1 - LAN bridge
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 3306 -j DNAT --to-destination 10.5.0.250
iptables -t nat -A POSTROUTING -o vmbr1 -p tcp --dport 3306 -d 10.5.0.250 -j SNAT --to-source 10.5.0.1
동일한 네트워크에 있는 한 컴퓨터(예: 10.5.0.10)가 다른 컴퓨터(예: 10.5.0.11)에 연결되면 이러한 규칙에 따라 주소가 10.5.0.1로 변환됩니다. 이것이 사실입니까?
이를 방지하고 로컬 트래픽을 그대로 유지하려면 어떻게 해야 합니까?
가상화(Proxmox)를 사용하고 있습니다. 가상화 호스트에는 vmbr0 브리지에 연결된 물리적 네트워크 eth0이 있습니다. 가상 머신과 컨테이너는 vmbr1에만 연결됩니다. 단일 공용 IP(브리지 vmbr0)가 있기 때문에 "LAN"에서 공용 네트워크로 서비스를 노출하려면 vmbr0과 vmbr1 사이에 NAT를 생성해야 합니다.
답변1
iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 3306 -j DNAT --to-destination 10.5.0.250
TCP 포트 3306으로 전송되는 모든 수신 트래픽의 vmbr0
대상 주소는 10.5.0.250으로 변경됩니다.
iptables -t nat -A POSTROUTING -o vmbr1 -p tcp --dport 3306 -d 10.5.0.250 -j SNAT --to-source 10.5.0.1
대상 IP가 10.5.0.250이고 대상 TCP 포트가 3306인 모든 나가는 트래픽의 vmbr1
소스 IP 주소는 10.5.0.1로 변경됩니다.
귀하의 "지역 교통"은 어느 다리에 연결됩니까?
어느 쪽이든 이러한 규칙에 따라 대상 포트가 3306/TCP인 트래픽만 NAT 처리되며 다른 대상 포트는 변경되지 않습니다.
vmbr1
10.5.0.* 네트워크가 구성된 대로 브리지에 연결되어 있는 경우 이러한 규칙은 다음과 같아야 합니다.전혀 효과 없음10.5.0.10과 10.5.0.11 사이의 모든 트래픽.