virsh)와 GUI(virt-manager) 모두를 활용한 방법을 다룹니다.| NAT 종류 | 설명 | KVM에서 사용 여부 |
|---|---|---|
| SNAT (출발지 NAT) | 내부에서 외부로 나갈 때 출발지 IP를 변환 | ✅ 기본 NAT 네트워크 |
| DNAT (목적지 NAT) | 외부에서 내부로 들어올 때 목적지 IP를 변환 | ❌ 추가 설정 필요 |
| PAT (포트 주소 변환) | 하나의 공용 IP에 여러 내부 포트를 매핑 | ✅ KVM NAT 내부적으로 사용 |
| Full NAT | 출발지와 목적지 IP 모두 변환 | ❌ 기본에는 없음 |
# 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> | nat | NAT 방식으로 외부 통신 지원 |
<bridge name> | virbr1 | 가상 브리지 이름 |
stp | on | 브리지 STP(스패닝 트리) 활성화 |
delay | 0 | STP 딜레이 시간 |
<ip address> | 192.168.100.1 | 브리지 인터페이스 IP |
netmask | 255.255.255.0 | 서브넷 마스크 |
<dhcp range start> | 192.168.100.100 | DHCP 시작 IP |
<dhcp range end> | 192.168.100.254 | DHCP 끝 IP |
# virsh net-define nat-net.xml
# virsh net-list --all
출력 예시:
Name State Autostart Persistent ---------------------------------------------- default active yes yes nat-net inactive no yes
# virsh net-start nat-net
# virsh net-list --all
출력 예시:
Name State Autostart Persistent -------------------------------------------- default active yes yes nat-net active no yes
# virsh net-autostart nat-net
# virsh net-list --all
출력 예시:
Name State Autostart Persistent -------------------------------------------- default active yes yes nat-net active yes yes
# 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 # virt-manager
nat-net 선택 → Finish# 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
# virsh list --all
출력 예시:
Id Name State ----------------------------- - rocky9 shut off - rocky9-cli shut off
# virsh attach-interface --domain rocky9-cli --type network --source nat-net --model virtio --config
# 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
# virsh detach-interface --domain rocky9-cli --type network --mac 52:54:00:3b:03:32 --config
# virsh domiflist rocky9-cli
출력 예시:
Interface Type Source Model MAC ------------------------------------------------------------- - network nat-net virtio 52:54:00:52:76:7d
# 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<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 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
# virsh net-list --all
출력 예시:
Name State Autostart Persistent -------------------------------------------- default active yes yes nat-net active yes yes
# virsh net-autostart default --disable
# virsh net-list --all
출력 예시:
Name State Autostart Persistent -------------------------------------------- default active no yes nat-net active yes yes
# virsh net-destroy default
# virsh net-list --all
출력 예시:
Name State Autostart Persistent ---------------------------------------------- default inactive no yes nat-net active yes yes
# virsh net-undefine default
# virsh net-list --all
출력 예시:
Name State Autostart Persistent -------------------------------------------- nat-net active yes yes
https://youtu.be/n8-wlkZiqio 1. 개요 NFS(Network File System)를 설치하고, rw/ro 및 root_squash 옵션에 따른 접근 제어와 성능을 테스트하는 방법을 정리한 가이드입니다.…
https://youtu.be/4MVxzmepY3s 1. 개요 리눅스에서 정기적으로 실행되는 작업(백업, 로그 정리, 모니터링 등)은 cron 서비스를 통해 자동화할 수 있습니다.…
https://youtu.be/vPfxWFBE1yc 1. 개요 리눅스 서버를 운영할 때 사용자 계정 생성, 비밀번호 설정, 권한 부여, 계정…
https://youtu.be/Gvp2XwBfoKw 1. 개요 리눅스 서버에서는 시스템 시간(OS 시간) 과 하드웨어 시간(RTC, Real-Time Clock) 을 동기화하는 것이 매우 중요합니다. 클러스터…
https://youtu.be/pt9qhawl8LY 1. 개요 리눅스 서버에서는 시스템 시간(OS 시간) 과 하드웨어 시간(RTC, Real-Time Clock) 을 모두 관리할 수 있습니다. 운영체제의…
https://youtu.be/iPdHGXh7DUg 1. 개요 서버 운영 시 시스템 시간이 올바르게 설정되어 있지 않으면 로그 분석, 모니터링,…