Ubuntu 19, 20, 22 에서 netplan 으로 네트워크 설정
1. netplan 을 이용한 설정방법
다음과 같이 /etc/netplan
디렉토리로 이동해서 편집기로 50-cloud-init.yaml
파일을 연다.
$ cd /etc/netplan $ sudo vi 50-cloud-init.yaml
vi 가 설치되어 있지 않은 경우 nano 로 연다.
$ sudo nano 50-cloud-init.yaml
이더넷 장치의 이름이 enp0s25 라고 가정하고, IP 주소 등(192.168.0.100 / 192.168.0.1 / 8.8.8.8)을 다음과 같이 설정한다.
network: ethernets: enp0s25: addresses: - 192.168.0.100/24 gateway4: 192.168.0.1 nameservers: addresses: - 8.8.8.8 version: 2
네임서버를 여러 개 지정하려면 다음과 nameservers:
부분을 다음과 같이 변경한다.
nameservers: addresses: [8.8.8.8, 8.8.4.4]
적용은 다음과 같다.
$ sudo netplan apply
2. 관련 주제
2.1. /etc/netplan/50-cloud-init.yaml
파일의 상단에 subiquity 에 의해 작성되었다는 안내문구가 있는 경우
다음의 안내문구는 Ubuntu 설치 프로그램인 subiquity 이 작성했다는 의미이므로 무시하면 된다.
# This is the network config written by 'subiquity'
2.2. /etc/netplan/50-cloud-init.yaml
파일의 상단에 datasource 에서 제공된 정보로 generated 했다는 안내문구가 있는 경우
/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg
파일도 같이 편집한다.
# This file is generated from information provided by # the datasource. Changes to it will not persist across an instance. # To disable cloud-init's network configuration capabilities, write a file # /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following: # network: {config: disabled}
/etc/netplan/50-cloud-init.yaml
파일은
다음과 같은 명령으로
/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg
파일로부터 생성되었다는 의미이다.
$ sudo cloud-init clean $ sudo cloud-init init
cloud-init init
를 실행할 일은 없다.
/etc/cloud/cloud.cfg.d/50-curtin-networking.cfg
파일도 같이 편집해서 혹시나cloud-init init
명령이 실행되면서/etc/netplan/50-cloud-init.yaml
의 변경 사항이 날라가는 일을 대비할 필요는 있겠다.
다만, /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg
파일을 먼저 편집한 다음에
cloud-init init
명령을 실행해서 /etc/netplan/50-cloud-init.yaml
파일을 다시 생성하는 방법은 신중할 필요가 있는데,
이유는 다음과 같다.
cloud-init init
명령을 실행하면 서버의public/private rsa key pair
가 다시 생성(Generating) 되고, ssh 접속할 때, ECDSA 혹은 RSA host key 와 관련된 에러 가 발생할 수 있다.