더북(TheBook)

route 명령으로 라우팅 테이블을 확인해봅시다. 내부 네트워크 10.0.0.0으로 나가는 패킷은 eth1을 통해 전송하고 10.0.10.0으로 나가는 패킷은 eth2를 통해 전송하고 있습니다. 이렇게 해서 test05는 모든 게스트와 연결이 가능합니다.

administrator@test05:~$ 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
10.0.10.0       *              255.255.255.0   U     0      0      0   eth2
192.168.122.0   *              255.255.255.0   U     0      0      0   eth0

연결 상태를 확인하기 위해 호스트로 돌아와서 모든 게스트를 시작합니다.

shinjaehun@losttemple:~$ virsh start test01
shinjaehun@losttemple:~$ virsh start test02
shinjaehun@losttemple:~$ virsh start test03
shinjaehun@losttemple:~$ virsh start test04
shinjaehun@losttemple:~$ virsh list

Id 이름                   상태
----------------------------------
 1 test05                 실행중
 2 test01                 실행중
 3 test02                 실행중
 4 test03                 실행중
 5 test04                 실행중

test05에서 ping으로 연결 상태를 확인해봅시다. 모든 게스트에 이상 없이 접속 가능한 상태입니다.

administrator@test05:~$ ping 10.0.0.1
administrator@test05:~$ ping 10.0.0.2
administrator@test05:~$ ping 10.0.10.1
administrator@test05:~$ ping 10.0.10.2

그럼 다른 게스트에서 접속 상태는 어떨까요? test01에서 test05의 eth1에 할당한 IP 주소 10.0.0.254는 정상적으로 응답하지만, test05의 네트워크 인터페이스 eth2에 할당된 IP 주소 10.0.10.254는 응답하지 않습니다. test05를 거쳐 연결될 것으로 기대했던 test03(10.0.10.1)도 응답하지 않습니다. 물리적으로는 test05를 거쳐 연결된 상태지만 서로 다른 네트워크로 패킷을 전송하지는 못하는 상태입니다.

administrator@test01:~$ ping 10.0.0.254
PING 10.0.0.254 (10.0.0.254) 56(84) bytes of data.
64 bytes from 10.0.0.254: icmp_seq=1 ttl=64 time=0.235 ms
64 bytes from 10.0.0.254: icmp_seq=2 ttl=64 time=0.322 ms
^C
--- 10.0.0.254 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
administrator@test01:~$ ping 10.0.10.1
PING 10.0.10.1 (10.0.10.1) 56(84) bytes of data.
^C
--- 10.0.10.1 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5000ms
administrator@test01:~$ ping 10.0.10.254
PING 10.0.10.254 (10.0.10.254) 56(84) bytes of data.
^C
--- 10.0.10.254 ping statistics ---
6 packets transmitted, 0 received, 100% packet loss, time 5000ms

리눅스 시스템을 게이트웨이로 사용하기 위해 패킷 전달 기능을 활성화시켜야 합니다. ‘sysctl.conf’ 파일을 편집기로 엽니다.

administrator@test05:~$ sudo vi /etc/sysctl.conf

패킷 포워딩을 허용하는 net.ipv4.ip_forward=1 항목 앞의 주석 표시(#)를 삭제합니다.

# Uncomment the next line to enable packet forwarding for IPv4 
net.ipv4.ip_forward=1

sysctl -p로 패킷 전달 기능을 바로 활성화시킵니다.

administrator@test05:~$ sudo sysctl -p
net.ipv4.ip_forward=1

test05는 게이트웨이 장치로 동작합니다. 하지만, 192.168.122.1이라는 게이트웨이가 존재하는데 test05를 또 다른 게이트웨이로 사용한다면 패킷을 어디로 보내야할지 결정하지 못하는 문제가 발생합니다. 따라서 각 게스트의 게이트웨이를 test05로 수정해야 합니다.

먼저 test01에서 게이트웨이를 수정합니다. route del 명령으로 라우팅 테이블에서 기본 게이트웨이 정보를 삭제합니다. route 명령으로 기본 게이트웨이가 사라진 상태를 확인할 수 있습니다.

administrator@test01:~$ sudo route del default gw 192.168.122.1
administrator@test01:~$ route
Kernel IP routing table
Destination     Gateway        Genmask        Flags Metric Ref   Use Iface
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
신간 소식 구독하기
뉴스레터에 가입하시고 이메일로 신간 소식을 받아 보세요.