Tag: vmware

VMWare에서 hostonly vmnet간의 routing

VMWare를 사용하면서 뭔가 복잡한 네트워크 모델을 사용하려면 hostonly vmnet을 여러개 사용하게 됩니다. VMWare를 OpenStack 테스트 용으로 사용하고 있는 저는 현재 테스트 환경에서 hostonly vmnet을 4개 사용하고 있으며 실제 환경을 그대로 묘사하기 위해서 조만간 6~7개로 늘려서 테스트할 예정입니다.

그런데 처음에 잘 모르고 지나갔다가 낭패를 본게 hostonly로 네트웍을 구성하면 host-pc에서 vmnet간에 routing을 지원하지 않습니다. 정리하면 아래와 같습니다.

  • host-pc <--> vmnet: OK
  • vmnet <--> Internet: N/A
  • vnmet <-->  vmnet : N/A

당연히 되는지 알았는데, vmnet간에 NATing이 되고 있었던 것과 이로 인한 routering filter의 간섭이었죠. 이 상황을 알아채려면 상대방의 ip까지 확인 해야하는데, 그럴 일이 거의 없다가 문제가 발생해 추척하다 발견한 것이죠.. ㅎㅎ

어쨌든 vmnet간에 routing하는 방법은 VMWare 사이트에 잘 설명이 되어있습니다. 근데 여기서 방법 중에 host-pc에서 routing을 잡는 방법은 ubuntu에서 테스트하니 안됩니다. 그래서 routing을 담당하는 VM을 만들어 합니다.

간단히 정리하면

  1. hostonly network을 가지는 2개의 vm(10.20.1.10, 10.20.2.10)을 만든다. ==> 이하 internal vm
  2. 두 hostonly network을 가지는 router vm을 만든다. ==> 이하 router vm
    eth0: NAT network for external internet access
    eth1: 10.20.1.2
    eth2: 10.20.2.2
  3. 여기서 .2를 가지는 것은 .1은 host-pc에 연결하고 host-pc에서 management용으로 사용할 것이므로 .2를 사용한다.
  4. router vm에서 routing이 되도록 설정한다. 간단히
    $ systctl net.ipv4.ip_foward=1
  5. router vm에 internal vm이 외부 인터넷 접근을 위해 NATing을 설정한다. 외부 인터넷 접근 필요 하다면...
    $ iptables -t nat -A POSTROUTING -j MASQUERADE -o eth0
  6. internal vm의 default gateway를 .2번으로 설정한다.
  7. internal vm에서 tracepath <ip>를 통해서 각각의 vm을 router vm을 통해서 접근하는지 확인한다.
  8. internal vm에서 tracepath google.com으로 외부 인터넷 연결 확인
  9. 끝..

참고..

  • iptables rule 저장은 여기를 참고

vmware 사용중에 vmnet 간에 routing이 안되는 문제가 발생할 때…

OpenStack folsom + Quantum 구성을 vmware을 이용하여 테스트 하고 있습니다.

  • vmnet0: external network
  • vmnet1: control node network
  • vmnet2: compute node network
  • vmnet3: internal data network
  • vmnet4: network node network
  • vmnet5: storage network(not done)

이렇게 대략 6개 정도 사용하는데, 가상 머신이 만들어 내부 네트워킹을 시도하면 routing이 안되는 문제가 발생합니다. 물론 외부랑 정상적이고, 또한 host 컴퓨터에서도 해당 머신들에 정상적으로 ping 가는데도 말입니다..

결국은 리눅스 네트워크 전문가를 대동하여 약1시간에 걸쳐서 확인한 결과 iptables 쪽에서 막은 건 아니고 vmnet간의 routing이 안된다는 결론을 얻었고, rp_filter 기능을  사용하지 않으면 되는군요.

$ sysctl -a | grep vmnet | grep \\.rp_filter | awk '{print $1}' | \
  sudo xargs -L1 -I% sysctl %=0
  • \\ 두개입니다. 하나만 하면 arp_filter도 먹어버림...

VMWare에서 Xen설치할때 vmnet 어쩌구저쩌구..

Ubuntu에서 VMWare를 사용하고 있었습니다. 원래는 VirtualBox를 사용했었지만, 그녀석이 안의 가상머신에서는 가상화 기술(vmx or svm)을 지원해주지 않아서 말이죠..

그런데 VMware에 Xen을 설치하고 재부팅하면 네트웍 카드를 promiscuous로 허용하지 않는다고 메시지가 뜹니다. 보안때문이라나.. 간단히 아래처럼 하면 됩니다.

$ chmod a+rw /dev/vmnet*

이렇게하면 되기는 하는데, 시스템을 리부팅하면 /dev/vmnet*의 권한이 다시 재설정됩니다. ㅡㅡ 그래서 또 권한을 주고 udev에 등록을.~

$ cp -a /dev/vmnet* /lib/udev/devices

삽질 끝~


  • Copyright © 1996-2010 Your wish is my command. All rights reserved.
    iDream theme by Templates Next | Powered by WordPress