KVM 설치
1
2
sudo apt install -y qemu-kvm virt-manager \
libvirt-daemon-system virtinst libvirt-clients bridge-utils
이후 일반 사용자 권한으로 VM을 관리할 수 있도록 다음과 같이 사용자 그룹을 추가해준다.
1
2
sudo usermod -aG kvm $USER
sudo usermod -aG libvirt $USER
가상머신 생성
GUI 환경이라면
virt-install
대신 Virtual Machine Manager 사용을 권장한다.
1
2
3
4
5
6
7
8
9
10
# https://manpages.debian.org/testing/virtinst/virt-install.1.en.html
sudo virt-install \
--name vm-server-1 \
--ram 2048 \
--vcpus 2 \
--disk size=64 \
--network bridge=virbr0,model=virtio \
--graphics none \
--location /var/lib/libvirt/images/ubuntu-22.04.2-desktop-amd64.iso
.iso 파일은
/var/lib/libvird/
하위에 두는 것을 권장한다. 참고자료: virt-install cannot use ISO file as location
--name
: 가상머신 이름.vm-server-1
로 설정--ram
: 메모리 용량(MB), 2기가 할당--vcpus
: 가상 CPU 코어 수, 2코어 할당--disk
: 디스크 설정(GB), 64G 할당--network
: 네트워크 설정, 네트워크 브릿지virbr0
인터페이스로 설정--graphics
: 그래픽(디스플레이) 관련 설정, 터미널 환경에서 작업하므로none
--location
: OS 이미지 파일 위치 혹은 원격지 URI
VM 생성 시 virsh
를 활용해 VM을 관리할 수 있으며 virsh
vm관리 명령어들은 해당 포스팅에서 다루진 않는다.
(나중에 따로 정리할 생각이다.)
포트포워딩
외부에서 VM에 SSH로 접속하기 위해 22번 포트를 포워딩 하려고한다.
시스템 정보는 다음과 같이 구성되어 있으며
- 호스트 IP: 192.168.1.2
- VM IP:192.168.122.245
iptables
를 활용하여 포트포워딩 하는 것이 일반적이지만, 개인적으로는 Nginx를 사용하는것을 더 선호한다. (nginx 설정 만지는게 더 직관적인듯)
1
2
3
4
5
6
7
8
9
stream {
upstream vm1-ssh {
server 192.168.122.245:22;
}
server {
listen 4000;
proxy_pass vm1-ssh;
}
}
http
블록에 포함되지 않도록 유의하자 (/etc/nginx/conf.d/
에 작성 금지)