본문으로 바로가기

[Ubuntu 20.04] Router setup using the KVM

category ETC... 2021. 2. 4. 22:01

Ubuntu 20.04가 되면서 Network setting의 많은 부분이 변경되었다.

 

이번 블로그에서는 Ubuntu 20.04 환경에서 KVM을 이용해 router를 구축하는 방법에 대해 소개한다.

 

 

Network description

 

구성하려는 Network의 모식도는 다음과 같다.

 

 

Network configuration

 

Router를 사용하는 네트워크 구성은 총 3 단계로 구성된다.

 

단계 1: Host와 Router 사이의 Bridge 설정

이 과정은 router와 router에 연결된 VM1, VM2가 router를 통해 인터넷을 사용할 수 있도록 Host와 router를 bridge로 연결한다.

 

KVM 환경에서 Host와 가상머신 사이의 bridge 설정은 아래 URL에 정리되어 있다.

 

marcokhan.tistory.com/244

 

[Ubuntu 18.04/20.04] Ubuntu Host, KVM network bridge setting

네트워크 환경(Interface)를 확인하기 위해 아래의 명령을 실행한다. $ ifconfig 인터페이스 이름이 ens33 으로 설정된 것을 확인할 수 있다. 꼭 ens33이 아닐 수 있으니, ethernet과 flag의 를 확인하면 된다.

marcokhan.tistory.com

 

단계 2: Router 설정

 

Network description에서 본 모식도처럼 Router는 3개의 NIC interface를 가지고 있다.

 

단계 1에서 bridge 설정을 하면 Br0 network interface가 생기고, default Virtual Network가 존재하기 때문에 한 개의 Virtual Network 만 추가 설정 해주면 된다.

 

아래 명령어로 Virtual Machine Manager를 띄운다.

$ sudo virt-manager

 

아래와 같은 화면을 볼 수 있다.

 

 

상단 Edit -> Connection Details를 선택하면 아래와 같은 화면을 볼 수 있다.

 

 

왼쪽 하단의 + 버튼을 이용해 Virtual Network 추가를 할 수 있다.

되도록이면 추천해주는 Network 대역을 사용하길 권장한다.

 

이제 3개의 Virtual Network를 설정했으니 Router에서 두 개의 NIC interface를 추가하고 각각 다른 netowrk 대역을 할당한다.

 

 

 

자. 이제 Router VM을 실행시켜 IP 설정을 해주자.

Router의 IP는 host number가 1이 된다. 즉, C class에서 192.168.100.1/24 등이 될 수 있다.

 

Ubuntu 20.04에서는 아래와 같은 경로에서 IP 설정이 가능하다.

 

$ sudo vi /etc/netplan/01-network-manager-all.yaml

 

아래와 같이 설정 파일을 작성하자.

일반적으로 router는 gateway4가 필요없다.

 

closed network를 만들기 위해서 gateway4를 설정하면 되고,

open network를 구성하기 위해서 gateway4를 삭제하면 된다.

# Let NetworkManager manage all devices on this system
#network:
#  version: 2
#  renderer: NetworkManager

network:
  version: 2
  renderer: networkd
  ethernets:
    enp1s0:
      dhcp4: true
    enp6s0:
      dhcp4: false
      addresses: [192.168.122.1/24]
      nameservers:
       addresses: [8.8.8.8,8.8.4.4]
    enp7s0:
      dhcp4: false
      addresses: [192.168.100.1/24]
      nameservers:
       addresses: [8.8.8.8,8.8.4.4]

 

설정을 적용하기 위해서 아래의 명령어를 주어야한다.

 

$ sudo netplan apply

 

enp1s0는 network를 위한 NIC interface이고, enp6s0, enp7s0는 각각 VM1, VM2와 연결된 NIC interface이다. 

모두 C class network를 사용하고, host number가 1이라는 것을 알아두자.

 

추가적으로 router OS가 아닌 일반 OS는 default로 ip forward 기능이 disabled 되어 있다.

 

다음과 같이 설정하여 ubuntu 20.04의 ip forward 기능을 enable 시키자.

 

sudo vi /etc/sysctl.conf
net.ipv4.ip_forward=1

sudo sysctl net.ipv4.ip_forward
sudo sysctl -p
sudo sysctl net.ipv4.ip_forward

 

ipv4.ip_forward가 1로 설정된 것을 확인해야 forwarding 기능이 정상 작동한다.

 

단계 3: VM 설정

 

마지막으로 단계 3에서는 VM들의 NIC interface를 각각 enp6s0, enp7s0와 각각 같은 network에 존재할 수 있도록 설정하면 된다.

 

 

최종 Network configuraiton은 다음과 같다.