더북(TheBook)

virsh edit를 다시 실행해서 test01 장치의 설정 값을 확인해보면 internal1에 연결할 네트워크 어댑터의 <mac address><address>가 자동으로 추가된 것을 확인할 수 있습니다. 사용자가 직접 하드웨어 주소 값을 할당할 필요가 없습니다.

<interface type='network'>
  <mac address='52:54:00:14:e2:e4'/>
  <source network='internal1'/>
  <model type='virtio'/>
  <address type='pci' domain='0x0000' bus='0x00' slot='0x06' function='0x0'/>
</interface>
이렇게 하세요!

test02에 네트워크 인터페이스를 추가하려면 다음과 같이 합니다.

1. test02를 종료한 상태에서 게스트 정보를 수정합니다.

shinjaehun@losttemple:~$ virsh shutdown test02
shinjaehun@losttemple:~$ virsh edit test02

2. 내부 네트워크 인터페이스 internal1을 추가합니다.

<interface type='network'>
  <source network='internal1' />
  <model type='virtio' />
</interface>

같은 방법으로 test02에도 internal1에 연결할 네트워크 인터페이스를 추가합니다. 가상 시스템의 속성을 변경했으면 이를 적용하기 위해 libvirt-bin 서비스를 재시작해야 합니다.

shinjaehun@losttemple:~$ sudo service libvirt-bin restart

다음으로 각 게스트에 접속해서 추가된 네트워크 인터페이스에 IP 주소 정보를 설정합니다. test01을 시작하고 가상 콘솔에 접속해서 로그인합니다.

dmesg는 시스템이 부팅하면서 발생하는 여러 정보를 보여주는 명령입니다. grep et를 파이프로 넘겨서 부팅 과정에서 eth와 관련된 정보가 발생했는지 확인해봅시다. 기본 네트워크 인터페이스 eth0외에 eth1이 추가로 검색되었습니다.

administrator@test01:~$ dmesg | grep eth
[   1.240597] IPv6: ADDRCONF(NETDEV_UP): eth0: link is not ready
[   1.240602] IPv6: ADDRCONF(NETDEV_UP): eth1: link is not ready

추가된 네트워크 인터페이스 eth1에 IP 주소 정보를 입력합니다. 우분투에서 /etc/network/interface를 vi로 엽니다.

administrator@test01:~$ sudo vi /etc/network/interface

새로 추가한 네트워크 인터페이스 eth1에 할당할 사설 IP 주소 정보 (IP 주소, 네트워크 ID, 넷마스크, 브로드캐스트 주소)를 입력합니다.

# The primary network interface
auto eth0
iface eth0 inet static
   address 192.168.122.101
   network 192.168.122.0
   netmask 255.255.255.0
   broadcast 192.168.122.255
   gateway 192.168.122.1
   dns-nameservers 8.8.8.8 8.8.4.4

auto eth1
iface eth1 inet static
   address 10.0.0.1
   network 10.0.0.0
   netmask 255.255.255.0
   broadcast 10.0.0.255

변경된 값을 적용해서 eth1을 활성화시킵니다.

administrator@test01:~$ sudo ifup eth1

ifconfig 명령으로 네트워크 인터페이스에 사설 IP 주소 정보가 제대로 할당되었는지 확인합니다.

administrator@test01:~$ ifconfig
eth0      Link encap:Ethernet HWaddr 52:54:00:b9:d0:89
          inet addr:192.168.122.101 Bcast:192.168.122.255 Mask:255.255.255.0
          inet6 addr: fe80::5054::ff::feb9::d089/64 Scope:Link
          UP BROADCAST MULTICAST MTU:1500 Metric:1
          RX packets:142 errors:0 dropped:7 overruns:0 frame:0
          TX packets:76 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:13723 (13.7 KB) TX bytes:8734 (8.7 KB)

eth1      Link encap:Ethernet HWaddr 52:54:00:14:e2:e4
          inet addr:10.0.0.1 Bcast:10.0.0.255 Mask:255.255.255.0
          inet6 addr: fe80::5054::ff::fe14::e2e4/64 Scope:Link
          UP BROADCAST MULTICAST MTU:1500 Metric:1
          RX packets:65 errors:0 dropped:65 overruns:0 frame:0
          TX packets:3 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:3380 (3.3 KB) TX bytes:238 (238.0 B)
...

route를 입력해서 라우팅 테이블을 확인하면 10.0.0.0으로 나가는 패킷은 eth1을 통해 전송합니다. 패킷은 호스트의 가상 네트워크 인터페이스 virbr1을 거쳐서 test02의 eth1에 도착할 것입니다.

administrator@test01:~$ route
Kernel IP routing table
Destination     Gateway      Genmask        Flags Metric Ref    Use Iface
default         losttemple   0.0.0.0        UG    0      0      0 eth0
10.0.0.0        *            255.255.255.0  U     0      0      0 eth1
192.168.122.0   *            255.255.255.0  U     0      0      0 eth0

게스트 test02를 시작해서 로그인합니다. 같은 방법으로 네트워크 인터페이스 eth1을 추가하고 IP 주소를 할당합니다. test02의 eth1에 대한 IP 주소 정보는 다음과 같습니다.

auto eth1
iface eth1 inet static
   address 10.0.0.2
   network 10.0.0.0
   netmask 255.255.255.0
   broadcast 10.0.0.255
Tip

네트워크 내 같은 IP 주소를 사용하면 IP 주소 충돌 현상이 발생합니다. test01의 eth1에는 10.0.0.1을, test02의 eth1에는 10.0.0.2를 할당해야 합니다.

이제 ping으로 연결 상태를 확인해봅시다. test01에서 test02(10.0.0.2)로, test02에서 test01 (10.0.0.1)로 ping을 실행한 결과 서로 정상적으로 응답하는 것을 확인할 수 있습니다.

administrator@test01:~$ ping 10.0.0.2

administrator@test02:~$ ping 10.0.0.1
이렇게 하세요!

호스트에서 test01의 eth0에 부여된 IP 주소 192.168.122.101로는 패킷을 보낼 수 있지만 test01의 eth1에 부여된 IP 주소 10.0.0.1로는 패킷을 보낼 수 없습니다. 새로 추가한 가상 네트워크 internal1은 test01과 test02를 직접 연결하는 네트워크이기 때문입니다.

shinjaehun@losttemple:~$ ping 192.168.122.101
PING 192.168.122.101 (192.168.122.101) 56(84) bytes of data.
64 bytes from 192.168.122.101: icmp_seq=1 ttl=64 time=0.235 ms
64 bytes from 192.168.122.101: icmp_seq=2 ttl=64 time=0.322 ms
^C
--- 192.168.122.101 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1000ms
rtt min/avg/max/mdev = 0.235/0.278/0.322/0.046 ms
shinjaehun@losttemple:~$ ping 10.0.0.1
PING 10.0.0.1 (10.0.0.1) 56(84) bytes of data.
^C
--- 10.0.0.1 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5000ms
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.