iptables는 WAN에서 VM으로 전달하지 않습니다.

iptables는 WAN에서 VM으로 전달하지 않습니다.

두 개의 네트워크 인터페이스를 갖춘 게이트웨이처럼 작동하는 컴퓨터가 있습니다.

  • eth0랜: 192.168.1.0/24
  • eth1WAN: XXX.XXX.XXX.XXX(내 공개 IP)

이 머신에는 virtualbox에 3개의 VM 게스트가 있습니다. 이들 모두에는 브리지된 네트워크가 있으며 DNS에서 제공하는 고정 IP가 있습니다.

나는 다음과 같은 iptables를 가지고 있습니다

*filter
    -A FORWARD -i eth1 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
    -A FORWARD -i eth0 -o eth1 -m state --state NEW,RELATED,ESTABLISHED -j ACCEPT

# Rules a webserver VM
*nat
    -A POSTROUTING -o eth1 -j MASQUERADE
    -A PREROUTING -d XXX.XXX.XXX.XXX/32 -i eth1 -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.100
    -A POSTROUTING -s 192.168.1.100/32  -j SNAT --to-source XXX.XXX.XXX.XXX

LAN에서는 가상 머신에 액세스할 수 있지만 WAN에서 가상 머신에 액세스하려고 하면 작동하지 않습니다. 뭐가 문제 야?

답변1

필터 테이블의 FORWARD에 대한 기본 정책이 DROP이라고 가정하는 것이 맞습니까? (그렇지 않은 경우 어쨌든 모든 것을 수락하므로 이 두 가지 필터링 규칙은 의미가 없습니다.)

이 가정이 맞다면 문제는 새 패킷을 가상 머신에 전달하는 ACCEPT 규칙이 누락된 것입니다. 다음 규칙을 추가하세요.

iptables -A FORWARD -i eth1 -o eth0 -p tcp -d 192.168.1.100 --dport 80 -j ACCEPT

그런데 VM에서 들어오는 패킷에 대한 SNAT 규칙은 중복됩니다. 이미 eth1을 통해 나가는 모든 패킷을 스푸핑하고 있습니다.

관련 정보