VirtualBox 에 Vyatta 라우터로 VM 가상 네트워크 구성하기
노트북에 서로 다른 사설IP 대역(노트북의 랜카드와 동일한 브리징 네트워크의 IP가 아닌, 내부 사설 네트워크)로 가상네트워크를 구성해서 VM을 만들 경우가 있다. 이 경우 대개 고정IP와 함께 고정된 default gateway를 설정하게 되는데, 사무실과 집을 오가다 보면 매번 VM들의 default gateway를 변경해 주어야 한다.
이런 번거로움을 피하기 위해 VirtualBox 내에 Vyatta Router VM을 만들고, 각 VM들의 사설 IP대역에 맞는 interface(eth1, eth2, eth3, ...)를 각각 설정한 다음, VM에서는 Vyatta Router의 interface IP를 default gateway 로 설정해 둔다. 물론 Vyatta Router의 eth0는 인터넷이 가능한 IP 대역으로 Bridged Network로 구성하고, eth1/eth2/eth3 으로부터 eth0로 라우팅을 해 주어야 각 VM에서 Vyatta Router를 통해 외부로 접속이 가능할 것이다.
이 방법을 응용한다면 VMWare용 Vyatta Router Virtual Appliance나 다른 가상화 솔루션들을 사용할 경우나, Vyatta Router를 사용한 간단한 내부 네트워크를 동적으로 구성할 때도 도움이 될 만 하겠다.
아래에 그 방법에 대해 정리해 둔다.
Vyatta Router VM의 설치
- Vyos.io 사이트에서 http://packages.vyos.net/iso/release/1.1.7/ 로 접속하여 iso 파일(vyos-1.1.7-amd64.iso)을 다운로드
- 필요에 따라 다른 iso를 골라서 설치 사용하거나 ova 파일 자체를 appliance로 올려서 쓸수도 있다
- Virtual Box에서 linux 머신(OtherLinux/64bit, CPU1, Ram 512, Disk 2GB)을 생성하고 ISO파일을 CD에 장착하고 vyos 로그인 후, 'install images'로 Vyatta OS를 설치
- VirtualBox에서의 VM 생성과 설치 방법에 대해서는 따로 설명하지 않는다
- 사용할 네트워크에 맞게 네트워크 장치(NIC)를 생성한다. 위 그림에서와 같이 작업을 하려면 다음의 구성정보와 그림을 참고한다
- 어댑터1: 브리지 어댑터 또는 NAT 네트워크, 무작위 모드: 모두 허용
- 어댑터2, 3, 4: 호스트 전용 어댑터(사전에 만든 호스트 전용 네트워크 이름 지정, vboxnet0/MacOS 또는 Host-Only Ethernet Adapter/Windows 등), 무작위 모드: 모두 또는 가상머신에 허용, 어댑터종류:아무거나...반가상네트워크도 가능)
어댑터2,3,4는 모두 동일하게 설정
Vyatta Router Interface 및 라우팅 설정
- Vyos 설치가 완료되면 Vyatta VM을 끄고, VirtualBox 저장소의 iso 이미지를 제거하고 리부트한 후, 기본 설정된 관리자 계정 vyos(암호: vyos) 로 로그인한다
- 초기 설정에 대해 configure, set 등의 명령으로 각각 인터페이스 생성과 설정을 수행하고 확인한다. configure 이후의 설정을 저장하려면 commit 다음에 save 를 반드시 하여야 한다
- IP 변경 후, 네트워크가 작동하지 않는다면 VirtualBox의 VM Network 설정의 MAC 주소를 확인하여 VyOS의 /config/config.boot 의 hw-id 부분을 맞추고 VyOS를 리부트해야 할 수도 있다
vyos@vyos:~$ configure
vyos@vyos# set interfaces ethernet eth0 description OUTSIDE
vyos@vyos# set interfaces ethernet eth0 address 192.168.0.201/16
vyos@vyos# set system gateway-address 192.168.0.1
vyos@vyos# set system domain-name test.local
vyos@vyos# set service ssh port '22'
vyos@vyos# commit
vyos@vyos# save
Saving configuration to '/config/config.boot'...
vyos@vyos# exit
vyos@vyos# save
Saving configuration to '/config/config.boot'...
vyos@vyos# exit
- 내부 사설망과 연결되는 개별 router 포트(eth1, eth2, eth3) 에 대해 다음과 같이 설정하고 저장한다
내부 사설망과 연결되는 개별 router port(eth1, 2, 3)에 대해 다음과 같이 설정한다
vyos@vyos:~$ configure
vyos@vyos# set nat source rule 10 source address 10.255.10.0/24
vyos@vyos# set nat source rule 10 outbound-interface eth0
vyos@vyos# set nat source rule 10 protocol 'all'
vyos@vyos# set nat source rule 10 translation address masquerade
vyos@vyos# set nat source rule 20 source address 10.255.20.0/24
vyos@vyos# set nat source rule 20 outbound-interface eth0
vyos@vyos# set nat source rule 20 protocol 'all'
vyos@vyos# set nat source rule 20 translation address masquerade
vyos@vyos# set nat source rule 30 source address 10.255.30.0/24
vyos@vyos# set nat source rule 30 outbound-interface eth0
vyos@vyos# set nat source rule 30 protocol 'all'
vyos@vyos# set nat source rule 30 translation address masquerade
vyos@vyos# commit
vyos@vyos# save
Saving configuration to '/config/config.boot'...
vyos@vyos# show nat source rule 10
outbound-interface eth0
protocol all
source {
address 10.255.10.0/24
}
translation {
address masquerade
}
[edit]
vyos@vyos# exit
- Router의 정상작동은, 내부 사설망을 사용할 VM(네트워크 어댑터는 호스트 전용, Vyatta Router 의 eth1 등과 동일한 방식의 어댑터)을 생성하고 default gateway를 10.255.10.1 등 Router port의 IP로 설정하여 외부 인터넷으로 ping 이 도달되는지 확인해 보면 된다
- Vyatta Router를 재시작하기 위해서는 명령어 상태에서 reboot 명령어를, 끄기 위해서는 단순히 poweroff 명령어를 실행한다
사설망 외부에서 내부로의 직접 접근(Port Forwarding)
- 공유기를 통한 외부에서 내부로의 접근 방식과 동일한 개념으로 Port fordwarding을 설정하면 된다
- 설정 방법과 과정을 예로 들어보면 아래와 같다(192.168.0.201:65022 -> 10.255.10.100:22, TCP/UDP DNAT 포워딩)
네트워크 대역에 DHCP 설정하기
한 걸음 더...
- 노트북을 사용하는 네트워크 환경이 바뀌었는데 Vyatta Router의 eth0 주소와 각 포트의 라우팅 정보를 수시로 바꿔 주어야 하는 것은 상당히 불편하고 귀찮은 일일 것이다. 사실 본 글의 라우팅 구조를 생각해 낼 떄부터 이 내용을 결론으로 쓰기 위한 것이었는데 ......
- VirtualBox VM관리 화면에서 Vyatta Router VM을 끈 후 복제(Vyatta Router Home 등의 다른 이름으로)
- 복제할 때 Mac 주소를 자동생성하게(default이지만, 확인 필요) 설정, 단 다음 단계에서 링크가 아닌 '완전한 복제' 실행
- 새로 만들어진 Vyatta Router VM에 로그인하여, 앞서 수행했던 configure 과정과 비슷한 내용을 다시 수행하는 것이 아니라 vi등의 편집기로 /config/config.boot 내용 중 원하는 부분(외부와 연결되는 eth0 네트워크 정보, default gateway, 4개의 NIC에 대한 MAC 주소-VirtualBox에서 자동할당한 MAC 주소)를 수정하고 reboot 하면 된다. 참고로 아래에 config.boot 파일의 수정해야 할 부분을 붉은 글씨로 따로 표시하였다
vyos@vyos:~$ cat /config/config.boot
interfaces {
ethernet eth0 {
address 192.168.219.201/24
description OUTSIDE
duplex auto
hw-id 08:00:27:8e:73:7a
smp_affinity auto
speed auto
}
ethernet eth1 {
address 10.255.10.1/24
description 10-NETWORK
duplex auto
hw-id 08:00:27:b5:91:0e
smp_affinity auto
speed auto
}
ethernet eth2 {
address 10.255.20.1/24
description 20-NETWORK
duplex auto
hw-id 08:00:27:6b:38:52
smp_affinity auto
speed auto
}
ethernet eth3 {
address 10.255.30.1/24
description 30-NETWORK
duplex auto
hw-id 08:00:27:60:d7:dd
smp_affinity auto
speed auto
}
loopback lo
...
}
nat {
destination {
rule 100 {
description PORT_FORWARD_TEST
destination {
address 192.168.219.201
port 65022
}
inbound-interface eth0
protocol tcp_udp
translation {
address 10.255.10.100
port 22
}
}
rule 101 {
description FORWARD_OSMASTER
destination {
address 192.168.219.201
port 60160
}
inbound-interface eth0
protocol tcp_udp
translation {
address 10.255.10.160
port 22
}
}
...
}
source {
rule 10 {
outbound-interface eth0
protocol all
source {
address 10.255.10.0/24
}
translation {
address masquerade
}
}
rule 20 {
outbound-interface eth0
protocol all
source {
address 10.255.20.0/24
}
translation {
address masquerade
}
}
rule 30 {
outbound-interface eth0
protocol all
source {
address 10.255.30.0/24
}
translation {
address masquerade
}
}
}
}
service {
ssh {
port 22
}
}
system {
config-management {
commit-revisions 20
}
domain-name test.local
gateway-address 192.168.219.1
host-name vyos
...
vyos@vyos:~$
- 이렇게 한다면, 업무 환경의 네트워크에 따라 Vyatta Router만 바꿔서 사용하므로, 수시로 업무 환경에 따라 VM의 네트워크 정보를 바꿔 주어야 했던 불편함은 깔끔하게 해결되지 않을까 한다
- Barracuda -