2008-11-09 5 views
-1

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입니다. 테스트 단계 :

  1. VM은 호스트 NIC에 연결됩니다. VM과 호스트는 위와 동일한 기본 게이트웨이를 사용하여 동일한 서브넷에 있습니다.

  2. VM은 서브넷 (ICMP, TCP, UDP)을 통해 장치와 통신합니다. 통신은 양방향입니다. 장비가 어떤 장비를 시작하는지는 중요하지 않습니다.

  3. 엔지니어가 시스템을 파킹하는 동안 기본 게이트웨이의 전원을 껐다 켭니다.

  4. VM은 이제 에만의 서브넷에있는 장치와 통신합니다. 게이트웨이를 통해 동일한 장비 (단계 2 )에서 통신하려는 시도는 패킷을 유선에 넣지 못합니다. VM의 eth0에있는 tcpdump가 응답없는 나가는 패킷을 보여줍니다. 호스트의 WireShark는 실제 NIC에을 표시하지 않습니다.

  5. VM을 중지하고 다시 시작해도 동작이 변경되지 않습니다. VM을 중지하고 다른 VM (적절한 IP 주소, 등)으로 바꾸면 동작이 변경되지 않습니다.

  6. Win2k3 호스트는 계속 서브넷을 켜고 끄고 정상적으로 통신합니다.

나는 VM과 호스트 사이 : VMware 드라이버 또는 호스트의 네트워크 스택에서 "무언가"발생한다고 결론 지을 수 있습니다. 나는 웹을 다시 샅샅이 조사하기 위해 벗어났다 .... 우리가 이것을 처음으로 관찰했다고 상상하기는 어렵다.

올 때마다 업데이트됩니다. 생각과 토론에 감사드립니다.

답변

1

두 번째 로그 라인이 10.10.1.33으로 보낸 패킷을 일치 시키려고 시도했지만 위의 행에서 대상 주소를 192.168.0.33으로 변경했습니다.

아직 tcpdump에서 보내는 패킷이 보이지 않는 이유가 확실하지 않습니다. 나는 당신이 리눅스 VM 자체에 tcpdump를 실행하고 있다고 가정한다. VM이받는 인터페이스와 동일한 인터페이스에서 패킷을 보내고 있습니까? 아니면 두 번째 가상 이더넷 어댑터가 있습니까? 10.10.1.33 이외의 다양한 IP 주소가 할당 된 기계.

관련 업데이트 : DHCP를 사용하고 있지 않습니다. 사람들은 일반적으로 고정 IP 주소를 사용할 때 걱정하지 않습니다. 또한 게이트웨이가 두 개의 IP 주소를 사용하는 하나의 NIC를 보는 것처럼 들립니다. 일반적으로 괜찮을 것입니다.하지만 항상 당신을 얻는 세부 사항입니다.

게이트웨이가 하나의 IP 주소 만 NIC에 할당하고 VM의 트래픽을 무시할 수 있습니까?

+0

죄송합니다. 실제 코드가 아니라 게시물에 오타를 입력하십시오. 나는 그것을 바로 잡았다. 위의 편집에 정보를 추가하십시오. 관심을 가져 주셔서 감사합니다. –

0

편집 후 실험을 제안합니다. 물리적 컴퓨터에서 모든 하드웨어 가속을 사용하지 않도록 NIC를 구성하십시오.

+0

잘 모르겠습니다. 체크섬이나 다른 것을 오프로드하는 것을 막을 수 있습니까? 시험하고 싶은 의심이 뭐니? 감사! –

+0

하드웨어가 자신의 이익을 위해 너무 똑똑 할 수도 있습니다. 물리적 호스트와 게이트웨이 간의 통신에 대한 일부 설정을 다시 생성하고 완료되었다고 가정합니다. 하드웨어가 아무것도하지 말라고하면 물리적 인 장치와 게스트 장치의 드라이버가 제어 할 수 있습니다. –

+0

체크섬 만 사용 가능한 하드웨어 최적화라면 문제는 아니며 실험은 쓸모가 없습니다. –