multipass에서 고정ip사용하기
[multipass
VM
]
서론
예전에는 윈도우즈에서 우분투를 사용하려면 WSL을 사용했었는데 생각보다 좀 불편했다. 왜 그런가 하면..
- 네트웍 문제.. : 호스트 PC와 동일한 IP를 사용하기 떄문에 별도 서버를 상정한 테스트를 하기가 어렵다.
- 2대 이상의 우분투 설치가 어려움
그래서 이의 훌륭한 대안이 multipass 이다. OS가 우분투만 된다는 점만 빼면 복수개의 OS를 설치하고 복수개의 내부 IP를 쓸 수 있다는 점이 좋다.
그런데 기본적으로 multipass의 우분투는 DHCP를 사용한다. 다시 말해 서버를 stop했다가 start하면 처음 할당되었던 IP가 바뀌어 버린다. 이를 고정 IP로 쓸 수 있도록 설정하는 방법을 찾 아 여기에 기록한다.
multipass의 호스트PC는 기본적으로 각 우분투 OS내 eth0 를 통해 통신을 하는 것 같다(이 부분은 나도 확실치 않다. 그냥 나의 추측일 뿐…). 각우분투 내의 eth0네트워크를 건드리면 호스트에서 접속이 불가능해지는 현상이 발생한다. 그래서 우분투 내에 eth1이라는 새로운 네트워크 어뎁터를 설정하는데, 이 어뎁터의 게이트웨이를 호스트 PC의 가상 네트워크 스위치에 맞춘다. (여기에서는 Windowns의 HyperV를 사용한다)
HyperV에서 가상 스위치 생성
- 가상 스위치를 만든다 여기서는 multipass 라는 이름으로 만들었다.
- 이 때 스위치는 ‘외부 네트워크’ 로 잡는다.
호스트PC multipass에서 우분투 설치
호스트 PC에서 multipass로 우분투를 설치한다.
> multipass launch -n ubuntu_test -c 2 -m 2G -d 10G --network name=multipass,mode=manual
-n ubuntu_test: ubuntu_test을 이름으로 우분투 서버를 설치(여러분의 서버 이름 -c 2 : 2CPU -m 2G : 2G메모리 -d 10G: 10G 디스크 –network=multipass,mode=manual : multipass네트워크, 수동 모드로 설치
설치가 끝나면 ubuntu_test에 접속함
> multipass shell ubuntu_test
우분투 설정 파일 변경
ubuntu_test에 접속하여 /etc/netplan 디렉토리로 가면 어떤 yaml파일이 보일 것이다.. 이를 sudo vi
로 열어보면 다음과 비슷할 것이다.
network:
ethernets:
eth0:
dhcp4: true
match:
macaddress: 52:54:00:f1:f0:e8
set-name: eth0
version: 2
여기에 eth1을 추가한다.
network:
ethernets:
eth0:
dhcp4: true
match:
macaddress: 52:54:00:f1:f0:e8
set-name: eth0
eth1:
addresses: [192.168.0.33/24]
routes:
- to: default
via: 192.168.0.1
nameservers:
addresses: [8.8.8.8, 1.1.1.1]
version: 2
- addresses : 사용하고자 하는 IP/NetMask. IP는 HOSTPC에서 접근가능해야 한다.
- route via : HOSTPC가 사용하는 Gateway
- nameservers : 사용할 DNS
수정 후에 sudo netplan apply
를 실행하면 반영이 되며, 이후 ifconfig등으로 eth1이 추가 반영된 것을 볼 수 있다.
ubuntu@:/etc/netplan$ ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.26.206.76 netmask 255.255.240.0 broadcast 172.26.207.255
inet6 fe80::5054:ff:fef1:f0e8 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:f1:f0:e8 txqueuelen 1000 (Ethernet)
RX packets 2741 bytes 459553 (459.5 KB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 897 bytes 138028 (138.0 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.0.33 netmask 255.255.255.0 broadcast 192.168.0.255
inet6 fe80::5054:ff:fe87:5e23 prefixlen 64 scopeid 0x20<link>
ether 52:54:00:87:5e:23 txqueuelen 1000 (Ethernet)
RX packets 64965 bytes 90553308 (90.5 MB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 12142 bytes 934644 (934.6 KB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
고정 IP 테스트는 호스트 PC에서 설정한 IP로 ping등을 날려 보면 된다.
PS C:\Users\S> ping 192.168.0.33
Ping 192.168.0.33 32바이트 데이터 사용:
192.168.0.33의 응답: 바이트=32 시간<1ms TTL=64
192.168.0.33의 응답: 바이트=32 시간<1ms TTL=64
192.168.0.33의 응답: 바이트=32 시간<1ms TTL=64
192.168.0.33의 응답: 바이트=32 시간<1ms TTL=64
192.168.0.33에 대한 Ping 통계:
패킷: 보냄 = 4, 받음 = 4, 손실 = 0 (0% 손실),
왕복 시간(밀리초):
최소 = 0ms, 최대 = 0ms, 평균 = 0ms