지금까지 나는 해결책을 찾지 못했습니다. 저는 IPTables에 대한 경험이 많지 않으므로 귀하가 제공할 수 있는 지원에 크게 감사하겠습니다.
가상 머신이 있는 서버가 있습니다. 마스터 노드에는 원격 IP와 서브넷이 있습니다. 각 가상 머신은 Linux 가상화 및 라우팅된 네트워킹을 사용하여 생성되며 로컬 IP가 할당됩니다. 그런 다음 IP 테이블을 사용하여 개인 원격 IP의 모든 트래픽을 로컬 IP로 전달함으로써 원격 IP를 할당합니다. 이는 대부분 작동하는 것으로 보이지만 각 VM에서 나오는 모든 트래픽은 VM에 전달하는 원격 IP가 아닌 노드 마스터 IP에서 나오는 것 같습니다.
내 IPTables 규칙은 다음과 같습니다.
iptables -t nat -A POSTROUTING -s 192.168.123.0/24 ! -d 192.168.123.0/24 -j MASQUERADE
iptables -A FORWARD -d 192.168.123.0/24 -o virbr1 -m state --state RELATED,ESTABLISHED -j ACCEPT iptables -A FORWARD -s 192.168.123.0/24 -i virbr1 -j ACCEPT iptables -A FORWARD -i virbr1 -o virbr1 -j ACCEPT
그런 다음 각 가상 머신에 대해 다음을 수행합니다.
iptables -t nat -A PREROUTING -d {Their-remote-IP} -j DNAT --to-destination 192.168.123.3
iptables -A FORWARD -p tcp -d 192.168.123.3 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m udp -p udp -d 192.168.123.3 -j ACCEPT
iptables -A FORWARD -m icmp -p icmp -d 192.168.123.3 -j ACCEPT
설정예
Primary Node IP: X.X.X.172
Additional IP X.X.X.173 1 (NATed to VM 1) to local address 192.168.123.2
Additional IP X.X.X.174 1 (NATed to VM 2) to local address 192.168.123.3
Additional IP X.X.X.175 1 (NATed to VM 3) to local address 192.168.123.4
그러나 가상 머신의 모든 아웃바운드 트래픽은 XXX172를 통과합니다.
귀하가 제공할 수 있는 조언은 크게 감사하겠습니다.
답변1
그것이 바로 그 일 MASQUERADE
입니다. 원래 소스 주소를 패킷이 떠나려고 하는 인터페이스의 주소로 덮어씁니다. 원래 주소를 유지하려면 스푸핑을 사용하지 마세요.