KVM에 Bridge Network 설정
CentOS 6 에는 가상화로 KVM만 지원합니다. Xen은 빼버렸습니다. 가상화로 KVM을 하게되면 사용할 수 있게됩니다. 그런데, KVM을 활성화하게 되면 virbr0 라는 가상의 이더넷이 생성이되는데 이것이 NAT로 동작하게 됩니다. 그러니까 KVM의 게스트들은 virbr0 의 NAT를 이용해서 인터넷을 하게 되는 것입니다.
그런데 제가 집에서 사용하는 인터넷 사용환경은 공유기를 이용해서 각 피시에서 private ip 주소를 할당해서 사용합니다. 그래서 KVM의 게스트들도 직접 공유기로 부터 private ip 주소를 할당 받기를 원했습니다. 그렇게 하기위해서는 virbr0 를 NAT를 정지시키고 br0 을 만들어서 eth0와 br0를 Bridged 시키면 됩니다.
이 문서는 이것을 설명한 것입니다.
처음 KVM을 설치해서 보면 다음과 같이 나옵니다. NAT로 동작하고 있다는 증거입니다.
1 2 3 4 5 6 7 8 9 |
# ifconfig virbr0 virbr0 Link encap:Ethernet HWaddr 00:00:00:00:00:00 inet addr:192.168.122.1 Bcast:192.168.122.255 Mask:255.255.255.0 inet6 addr: fe80::200:ff:fe00:0/64 Scope:Link UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 RX packets:0 errors:0 dropped:0 overruns:0 frame:0 TX packets:39 errors:0 dropped:0 overruns:0 carrier:0 collisions:0 txqueuelen:0 RX bytes:0 (0.0 b) TX bytes:7921 (7.7 KiB) |
Bridged 로 바꿔보겠습니다. 절차는 다음과 같습니다.
- virbr0 를 지웁니다.
- eth0 에 dhcp 기능을 지우고 br0 로 Bridged 한다.
- br0 만드는데, dhcp 로 아이피를 새로 받도록 한다. TYPE 를 Bridged 로 해준다.
Virbr0 를 지운다.
버추얼쉘(virsh) 명령어를 이용해 네트워크 리스트를 봅니다.
1 2 3 4 |
# virsh net-list Name State Autostart ----------------------------------------- default active yes |
버추얼 네트워크 이름이 ‘default’로 나오네요. 이것을 지우겠습니다.
eth0 의 dhcp 를 지우고 br0 로 Bridged 한다.
다음과 같이 합니다.
1 2 3 4 5 6 7 |
cat > ifcfg-eth0 < DEVICE=eth0 HWADDR=00:16:76:D6:C9:45 ONBOOT=yes BRIDGE=br0 NM_CONTROLLED=no EOF |
br0 를 만든다.
다음과 같이 합니다.
1 2 3 4 5 6 7 8 |
# cat > ifcfg-br0 < DEVICE=br0 TYPE=Bridge BOOTPROTO=dhcp ONBOOT=yes DELAY=0 NM_CONTROLLED=no EOF |
위과정을 거치면 설정은 끝납니다. 한가지 더 있는데, 리눅스의 NetworkManager 데몬을 꺼주고 network 서비스를 다시 올려줍니다.
1 2 3 4 |
# chkconfig NetworkManager off # chkconfig network on # service NetworkManager stop # service network restart |
이제 virt-manager 로 KVM 게스트를 설치할 다음과 같이 이더넷을 설정해 주면 됩니다.
cat > ifcfg-eth0 <
명령어시 아래의 에러 문구가 뜹니다.
bash: syntax error near unexpected token `newline'