Windows에서 VMware를 사용하여 iptables를 실행하는 가상 Linux 상자를 호스트하는 데 문제가 있습니까? 물리적 하드웨어에서는 작동하지만 VMware에서는 희박합니다.VMware 및 iptables
저는 VMware를 사용하여 Windows 2003 Server 호스트에서 가상 Linux 2.6.24 시스템을 실행하고 있습니다. 리눅스 응용 프로그램은 기본적으로 iptables
을 실행하는 NAT 공유 라우터입니다. nat
테이블의 규칙은 다음과 같습니다
Chain foo_pre
target prot opt in out source destination
LOG all -- * * 0.0.0.0/0 0.0.0.0/0 [options here]
LOG all -- * * 0.0.0.0/0 10.10.1.33 [options here]
DNAT all -- * * 0.0.0.0/0 10.10.1.33 tcp dpt:80 to:192.168.0.33:8080
Chain PREROUTING
target prot opt in out source destination
foo_pre all -- * * 0.0.0.0/0 0.0.0.0/0
하지만도, 내가 tcpdump
을 사용 10.10.1.33:80로 들어오는 패킷을보고 있어요, 첫 번째 LOG
메시지를 생성하는 DNAT
또는 두 번째 LOG
는 패킷이 등록 보여 패킷 카운터에서 두 번째 LOG
은 메시지를 생성하지 않으며 tcpdump
은 192.168.0.33에 대한 패킷을 표시하지 않습니다.
eth0
어댑터는 10.10.0.0/16 네트워크에 있으며 기본 게이트웨이는 10.10.1.1입니다. 보조 주소는 10.10.1.33/32입니다. /proc/sys/net/ipv4/config/eth0/forwarding
이 1로 설정됩니다.
VMware가 범인입니까, 아니면 뭔가 빠졌습니까? 감사!
업데이트 : 우리는 테스트 환경을 단순화했습니다. NAT 규칙이 전혀 없습니다. Win2k3 Server 호스트에서 실행되는 Linux VM입니다. 테스트 단계 :
VM은 호스트 NIC에 연결됩니다. VM과 호스트는 위와 동일한 기본 게이트웨이를 사용하여 동일한 서브넷에 있습니다.
VM은 서브넷 (ICMP, TCP, UDP)을 통해 장치와 통신합니다. 통신은 양방향입니다. 장비가 어떤 장비를 시작하는지는 중요하지 않습니다.
엔지니어가 시스템을 파킹하는 동안 기본 게이트웨이의 전원을 껐다 켭니다.
VM은 이제 에만의 서브넷에있는 장치와 통신합니다. 게이트웨이를 통해 동일한 장비 (단계 2 )에서 통신하려는 시도는 패킷을 유선에 넣지 못합니다. VM의 eth0에있는 tcpdump가 응답없는 나가는 패킷을 보여줍니다. 호스트의 WireShark는 실제 NIC에을 표시하지 않습니다.
VM을 중지하고 다시 시작해도 동작이 변경되지 않습니다. VM을 중지하고 다른 VM (적절한 IP 주소, 등)으로 바꾸면 동작이 변경되지 않습니다.
Win2k3 호스트는 계속 서브넷을 켜고 끄고 정상적으로 통신합니다.
나는 VM과 호스트 사이 : VMware 드라이버 또는 호스트의 네트워크 스택에서 "무언가"발생한다고 결론 지을 수 있습니다. 나는 웹을 다시 샅샅이 조사하기 위해 벗어났다 .... 우리가 이것을 처음으로 관찰했다고 상상하기는 어렵다.
올 때마다 업데이트됩니다. 생각과 토론에 감사드립니다.
죄송합니다. 실제 코드가 아니라 게시물에 오타를 입력하십시오. 나는 그것을 바로 잡았다. 위의 편집에 정보를 추가하십시오. 관심을 가져 주셔서 감사합니다. –