1. 개요
- KVM 가상화 환경에서 Isolated 네트워크를 생성하고 VM에 할당하는 방법을 설명합니다.
- Isolated 네트워크는 VM 간 통신은 가능하지만 외부 네트워크와는 완전히 단절된 환경을 제공합니다.
2. 버전
- Rocky Linux 9.5
3. 설명
3-1. Isolated 네트워크란?
- Isolated 네트워크는 KVM 가상화 환경에서 외부 네트워크(인터넷, LAN)와 완전히 단절된 네트워크를 의미합니다.
- 해당 네트워크에 연결된 VM들은 서로 간 통신은 가능하지만, 호스트 네트워크나 외부 네트워크와는 절대 통신할 수 없습니다.
3-2. Isolated 네트워크의 기술적 특징
항목 | 설명 |
---|---|
forward mode | none (외부 네트워크와 트래픽 전달 금지) |
외부 통신 | 불가능 (인터넷, LAN 접속 차단) |
내부 통신 | 동일 네트워크에 연결된 VM 간 통신 가능 |
브리지 | libvirt에서 가상 브리지 생성 |
IP 부여 | DHCP 또는 static 설정으로 내부 IP 할당 |
4. Isolated 네트워크 생성
4-1. Isolated 네트워크 XML 파일 생성
# vim isolated-net.xml
설정 예시:
<network> <name>isolated-net</name> <forward mode='none'/> <bridge name='virbr2' stp='on' delay='0'/> <ip address='192.168.200.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.200.100' end='192.168.200.200'/> </dhcp> </ip> </network>
항목 | 설정 값 | 설명 |
---|---|---|
<name> | isolated-net | 네트워크 이름 |
<forward mode> | none | 외부 통신 차단 (격리 모드) |
<bridge name> | virbr2 | 가상 브리지 이름 |
stp | on | 브리지 STP 활성화 |
delay | 0 | STP 딜레이 시간 |
<ip address> | 192.168.200.1 | 브리지 인터페이스 IP |
netmask | 255.255.255.0 | 서브넷 마스크 |
<dhcp range start> | 192.168.200.100 | DHCP 시작 IP |
<dhcp range end> | 192.168.200.200 | DHCP 끝 IP |
4-2. Isolated 네트워크 생성
# virsh net-define isolated-net.xml
4-3. Isolated 네트워크 생성 확인
# virsh net-list --all
출력 예시:
Name State Autostart Persistent --------------------------------------------------- isolated-net inactive no yes nat-net active yes yes
4-4. Isolated 네트워크 시작 및 확인
# virsh net-start isolated-net
# virsh net-list --all
출력 예시:
Name State Autostart Persistent ------------------------------------------------- isolated-net active no yes nat-net active yes yes
4-5. Isolated 네트워크 자동 시작 설정 및 확인
# virsh net-autostart isolated-net
# virsh net-list --all
출력 예시:
Name State Autostart Persistent ------------------------------------------------- isolated-net active yes yes nat-net active yes yes
4-6. Isolated Birdge 인터페이스 확인
# ifconfig virbr2
출력 예시:
virbr2: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.200.1 netmask 255.255.255.0 broadcast 192.168.200.255 ether 52:54:00:71:30:37 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
5. VM 설정
5-1. GUI(virt-manager)
5-1-1. Virt-manager 실행
# virt-manager
5-1-2. Isolated 네트워크 추가

- VM 선택 → Open 클릭

- 전구 아이콘

- Add Hardware

- Network → isolated-net 선택 → Finish

- 생성 확인
5-1-3. Isolated 네트워크 확인
# ifconfig
출력 예시:
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.200.159 netmask 255.255.255.0 broadcast 192.168.200.255 inet6 fe80::5054:ff:fe2b:e64e prefixlen 64 scopeid 0x20<link> ether 52:54:00:2b:e6:4e txqueuelen 1000 (Ethernet) RX packets 50 bytes 3968 (3.8 KiB) RX errors 0 dropped 32 overruns 0 frame 0 TX packets 17 bytes 2164 (2.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp7s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.100.213 netmask 255.255.255.0 broadcast 192.168.100.255 inet6 fe80::32ce:f8bc:aab5:4575 prefixlen 64 scopeid 0x20<link> ether 52:54:00:99:a5:b3 txqueuelen 1000 (Ethernet) RX packets 128 bytes 12743 (12.4 KiB) RX errors 0 dropped 31 overruns 0 frame 0 TX packets 83 bytes 10429 (10.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
5-2. CLI(virsh)
5-2-1. VM 확인
# virsh list --all
출력 예시:
Id Name State ----------------------------- 1 rocky9 running - rocky9-cli shut off
5-2-2. 인터페이스 추가
# virsh attach-interface --domain rocky9-cli --type network --source isolated-net --model virtio --config
5-2-3. 인터페이스 확인
# virsh domiflist rocky9-cli
출력 예시:
Interface Type Source Model MAC ------------------------------------------------------------------ - network nat-net virtio 52:54:00:52:76:7d - network isolated-net virtio 52:54:00:ec:25:f9
5-2-4. VM 부팅 및 NAT 네트워크 접속 확인
# virsh start rocky9-cli
# virsh domifaddr rocky9-cli
출력 예시:
Name MAC address Protocol Address ------------------------------------------------------------------------------- vnet2 52:54:00:52:76:7d ipv4 192.168.100.221/24 vnet3 52:54:00:ec:25:f9 ipv4 192.168.200.102/24
# ssh root@@192.168.200.102
# ifconfig
출력 예시:
enp1s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.200.102 netmask 255.255.255.0 broadcast 192.168.200.255 inet6 fe80::5054:ff:feec:25f9 prefixlen 64 scopeid 0x20<link> ether 52:54:00:ec:25:f9 txqueuelen 1000 (Ethernet) RX packets 1182 bytes 80758 (78.8 KiB) RX errors 0 dropped 894 overruns 0 frame 0 TX packets 210 bytes 33096 (32.3 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 enp7s0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 192.168.100.221 netmask 255.255.255.0 broadcast 192.168.100.255 inet6 fe80::c08e:726c:5a:6d80 prefixlen 64 scopeid 0x20<link> ether 52:54:00:52:76:7d txqueuelen 1000 (Ethernet) RX packets 1107 bytes 65591 (64.0 KiB) RX errors 0 dropped 894 overruns 0 frame 0 TX packets 206 bytes 17471 (17.0 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
5-2-5. VM 간 통신 확인
# ping -c 3 192.168.200.159