가상머신 브리지 네트워크 설정

1. 호스트에 bridge 네트워크 생성

가상머신에 bridge 네트워크를 적용하려면, 먼저 호스트 서버에 bridge 인터페이스를 생성해야 합니다.

  • 호스트의 네트워크 대역 확인
1
ip route
1
2
3
4
5
6
7
8
9
10
11
# 출력
default via 192.168.0.254 dev enp1s0 proto static 
192.168.0.0/24 dev enp1s0 proto kernel scope link src 192.168.0.55 
...

######## 출력 해석 ########
# > 게이트웨이는 192.168.0.254
# > 네트워크 대역은 192.168.0.0/24 대역임
# > 호스트의 IP는 192.168.0.55
# > 물리 NIC 이름은 enp1s0
# NIC : Network Interface Controller
  • netplan 설정 (위 출력의 게이트웨이, 네트워크대역, 물리 NIC 이름에 맞춰 입력)
1
sudo vi /etc/netplan/01-br0-static.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
network:
  version: 2
  renderer: networkd # 실제 네트워크를 적용하는 백엔드 엔진
  
  ethernets: # 물리 네트워크 카드 정의 영역
    enp1s0: # ----------------------------- (1) NIC 이름
      dhcp4: no # IPv4 DHCP 사용 여부
      dhcp6: no # IPv6 DHCP 사용 여부
      
  bridges: # Linux 브리지 정의 영역
    br0: # 브리지 이름
      interfaces: [enp1s0] # --------------- (2) 이 브리지에 어떤 물리 NIC를 묶을지
      addresses:
        - 192.168.0.55/24 # --------------- (3) 호스트의 IP 주소 (직접 설정)
      routes:
        - to: default
          via: 192.168.0.254 # ------------- (4) 기본 게이트웨이 (보통 공유기 IP) 외부 인터넷으로 나갈 때 사용
      nameservers: # DNS 설정 블록
        addresses:
          - 8.8.8.8
  • netplan 적용
1
sudo netplan apply
  • 적용 확인
1
ip addr
1
2
3
4
5
6
...
4: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ...
    link/ether ...
    inet 192.168.0.55/24 brd 192.168.0.255 scope global br0
...

2. Cockpit 에서 bridge 네트워크 확인

호스트 서버에 정상적으로 bridge가 추가되었다면, Cockpit의 “네트워킹” 메뉴에서도 확인하실 수 있습니다.

3. VM 네트워크 설정

만들었던, 혹은 새로 만들 VM 의 네트워크를 새로 만든 bridge(br0)로 바꿔줍니다.

  • VM 목록에서 bridge 네트워크를 적용할 VM 선택

  • 네트워크 연결장치 추가 혹은 기존 네트워크 편집

  • 연결장치 유형, 소스, 방식을 아래와 같이 선택

4. VM 고정 IP 로 설정하기

DHCP로 동적 IP를 할당받아 사용해도 문제는 없지만, 실행 위치를 알아야 하는 특정 서비스를 VM 위에서 실행하는 경우 등에는 고정 IP를 설정해두는 게 좋습니다.

고정 IP를 설정하는 방법은, VM이라고 해서 특별할 것은 없습니다. 리눅스라면 netplan 등에서 자신의 IP를 고정으로 설정하며, 윈도우에서는 네트워크 설정 메뉴에서 IP를 설정할 수 있습니다.

아래는 Ubuntu 운영체제의 예시입니다.

  • (VM 안쪽에서) 네트워크 인터페이스 이름과 네트워크 대역대 확인
1
ip a
1
2
3
4
5
# 출력
...
enp1s0: <BROADCASE,MULTICASE,UP,LOWER_UP>...    # --- VM에서 사용중인 네트워크 이름 enp1s0
    inet 192.168.0.5/24 brd 192.168.0.255 scope global enp1s0 # --- 현재 VM의 IP : 192.168.0.5
                                                              # --- 서브넷 마스크 255.255.255.0(/24)
  • netplan 수정
1
sudo vi /etc/netplan/00-installer-config.yaml
1
2
3
4
5
6
7
8
9
10
11
12
network:
  version: 2
  ethernets:
    enp1s0: # --- (1) 네트워크 인터페이스
      addresses:
      - "192.168.0.90/24" # ---- (2) VM 의 IP 지정
      nameservers:
        addresses:
        - 8.8.8.8
      routes:
      - to: "default"
        via: "192.168.0.254" # --- (3) 게이트웨이
  • 적용
1
sudo netplan apply
  • 확인
1
ip a
1
2
3
4
# 출력
...
enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP>...    # --- VM에서 사용중인 네트워크 이름 enp1s0
    inet 192.168.0.90/24 brd 192.168.0.255 scope global enp1s0 # --- 현재 VM의 IP : 192.168.0.90

5. 호스트에서 bridge 네트워크 확인

호스트 서버에서 brctl show 명령어를 통해 VM들이 정상적으로 bridge 네트워크에 포함되었는지 확인할 수 있습니다.

1
$ brctl show
1
2
3
4
5
# 출력
bridge name	  bridge id   STP enabled   interfaces
br0           ....	      no		        enp1s0
							                          vnet0 # ------- VM1
							                          vnet1 # ------- VM2
  • 또한, 호스트에서 VM 의 IP 에 ping 을 날리면 정상적으로 통신이 되는 것을 볼 수 있습니다.
1
ping 192.168.0.90
1
2
3
4
5
PING 192.168.0.90 (192.168.0.90) 56(84) bytes of data.
64 bytes from 192.168.0.90: icmp_seq=1 ttl=64 time=0.466 ms
64 bytes from 192.168.0.90: icmp_seq=2 ttl=64 time=0.231 ms
64 bytes from 192.168.0.90: icmp_seq=3 ttl=64 time=0.155 ms
...

Comments