[Linux] Rocky Linux 9.5 KVM NAT 네트워크 생성, VM 할당, 기본 네트워크 제거






1. 개요

  • KVM 환경에서 NAT 네트워크를 생성하고 VM에 할당하는 방법을 설명합니다.
  • CLI(virsh)와 GUI(virt-manager) 모두를 활용한 방법을 다룹니다.



2. 버전

  • Rocky Linux 9.5



3. 설명




3-1. NAT (Network Address Translation)란?

  • NAT(Network Address Translation)는 내부 네트워크의 IP 주소를 외부 네트워크와 통신할 때 변환해주는 기술입니다.
  • 사설 네트워크(Private Network)에 속한 서버나 VM이 외부 네트워크(인터넷 등)와 통신할 수 있도록 도와줍니다.



3-2. NAT의 종류

  • NAT는 사용 목적에 따라 여러 형태로 나뉩니다.
  • KVM에서는 주로 출발지 NAT(SNAT) 형태가 기본으로 적용됩니다.


NAT 종류설명KVM에서 사용 여부
SNAT (출발지 NAT)내부에서 외부로 나갈 때 출발지 IP를 변환✅ 기본 NAT 네트워크
DNAT (목적지 NAT)외부에서 내부로 들어올 때 목적지 IP를 변환❌ 추가 설정 필요
PAT (포트 주소 변환)하나의 공용 IP에 여러 내부 포트를 매핑✅ KVM NAT 내부적으로 사용
Full NAT출발지와 목적지 IP 모두 변환❌ 기본에는 없음



4. NAT 네트워크 생성




4-1. NAT 네트워크 XML 파일 생성

# vim nat-net.xml


설정 예시:

<network>
    <name>nat-net</name>
    <forward mode='nat'/>
    <bridge name='virbr1' stp='on' delay='0'/>
    <ip address='192.168.100.1' netmask='255.255.255.0'>
        <dhcp>
            <range start='192.168.100.100' end='192.168.100.254'/>
        </dhcp>
    </ip>
</network>


항목설정 값설명
<name>nat-net네트워크 이름
<forward mode>natNAT 방식으로 외부 통신 지원
<bridge name>virbr1가상 브리지 이름
stpon브리지 STP(스패닝 트리) 활성화
delay0STP 딜레이 시간
<ip address>192.168.100.1브리지 인터페이스 IP
netmask255.255.255.0서브넷 마스크
<dhcp range start>192.168.100.100DHCP 시작 IP
<dhcp range end>192.168.100.254DHCP 끝 IP



4-2. NAT 네트워크 생성

# virsh net-define nat-net.xml



4-3. NAT 네트워크 생성 확인

# virsh net-list --all


출력 예시:

 Name      State      Autostart   Persistent
----------------------------------------------
 default   active     yes         yes
 nat-net   inactive   no          yes



4-4. NAT 네트워크 시작 및 확인

# virsh net-start nat-net


# virsh net-list --all


출력 예시:

 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes
 nat-net   active   no          yes



4-5. NAT 네트워크 자동 시작 설정 및 확인

# virsh net-autostart nat-net


# virsh net-list --all


출력 예시:

 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes
 nat-net   active   yes         yes



4-6. NAT Bridge 인터페이스 확인

# ifconfig virbr1


출력 예시:

virbr1: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500
        inet 192.168.100.1  netmask 255.255.255.0  broadcast 192.168.100.255
        ether 52:54:00:44:30:1b  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. NAT 네트워크 추가

  • VM 선택 → Open 클릭


  • 전구 아이콘


  • Add Hardware


  • Network → nat-net 선택 → Finish


  • 생성 확인


5-1-3. Default NAT 삭제

  • NIC(Default NAT) → Remove


  • 삭제 확인


5-1-4. NAT 네트워크 확인

# ifconfig


출력 예시:

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 71  bytes 5994 (5.8 KiB)
        RX errors 0  dropped 34  overruns 0  frame 0
        TX packets 45  bytes 4434 (4.3 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


# ping -c 3 google.com



5-2. CLI(virsh)



5-2-1. VM 확인

# virsh list --all


출력 예시:

 Id   Name         State
-----------------------------
 -    rocky9       shut off
 -    rocky9-cli   shut off


5-2-2. 인터페이스 추가

# virsh attach-interface --domain rocky9-cli --type network --source nat-net --model virtio --config


5-2-3. 인터페이스 확인

# virsh domiflist rocky9-cli


출력 예시:

 Interface   Type      Source    Model    MAC
-------------------------------------------------------------
 -           network   default   virtio   52:54:00:3b:03:32
 -           network   nat-net   virtio   52:54:00:52:76:7d


5-2-4. Default NAT 삭제

# virsh detach-interface --domain rocky9-cli --type network --mac 52:54:00:3b:03:32 --config


5-2-5. NAT 네트워크 확인

# virsh domiflist rocky9-cli


출력 예시:

 Interface   Type      Source    Model    MAC
-------------------------------------------------------------
 -           network   nat-net   virtio   52:54:00:52:76:7d


5-2-6. VM 부팅 및 NAT 네트워크 접속 확인

# virsh start rocky9-cli


# virsh domifaddr rocky9-cli


출력 예시:

 Name       MAC address          Protocol     Address
-------------------------------------------------------------------------------
 vnet1      52:54:00:52:76:7d    ipv4         192.168.100.221/24


# ssh root@192.168.100.221


# ifconfig


출력 예시:

enp7s0: flags=4163&lt;UP,BROADCAST,RUNNING,MULTICAST&gt;  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&lt;link&gt;
        ether 52:54:00:52:76:7d  txqueuelen 1000  (Ethernet)
        RX packets 682  bytes 373306 (364.5 KiB)
        RX errors 0  dropped 66  overruns 0  frame 0
        TX packets 415  bytes 60106 (58.6 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


# ping -c 3 google.com



6. NAT 네트워크 생성




6-1. 네트워크 확인

# virsh net-list --all


출력 예시:

 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   yes         yes
 nat-net   active   yes         yes



6-2. Default 네트워크 자동 시작 비활성화

# virsh net-autostart default --disable



6-3. Default 네트워크 자동 시작 비활성화 확인

# virsh net-list --all


출력 예시:

 Name      State    Autostart   Persistent
--------------------------------------------
 default   active   no          yes
 nat-net   active   yes         yes



6-4. Default 네트워크 종료

# virsh net-destroy default



6-5. Default 네트워크 종료 확인

# virsh net-list --all


출력 예시:

 Name      State      Autostart   Persistent
----------------------------------------------
 default   inactive   no          yes
 nat-net   active     yes         yes



6-6. Default 네트워크 삭제

# virsh net-undefine default



6-7. Default 네트워크 삭제 확인

# virsh net-list --all


출력 예시:

 Name      State    Autostart   Persistent
--------------------------------------------
 nat-net   active   yes         yes



댓글 남기기