Ubuntu, systemd-networkd 전환하기
Ubuntu 16.04 로 넘어오면서 SysV 의 Init 이 Systemd 로 변경되었다. 이런 변화에는 Network 관리에도 적용되고 있는데, 이에 대해서 알아보자.
기존의 Network 관련된, 정확하게는 Network Interface 와 관련된 일은 NetworkManager 가 담당했다. Network Interface 가 무엇인지, 아이피는 DHCP 혹은 Static 인지 등이 그것이다.
하지만 Ubuntu 16.04 로 넘어오면서 시스템에 관련된 일체가 systemd 로 통합되면서 네트워크 관련 작업도 systemd 로 통합되어지게 되는데, 이것이 systemd-networkd 이 이다.
하지만 Ubuntu 18.04 로 넘어온 시점에서도 NetworkManger 는 이전과 호환을 위해서 살려뒀고 살려둔김에 지금도 기본적인 네트워크 설정 프로그램으로 활약(?) 하고 있다.
Network Manager
Network Manager 의 동작은 다음의 명령어로 이루어진다.
1 |
]# systemctl start/stop/status NetworkManger |
관련 설정은 /etc/NetworkManger/NetworkManger.conf 파일이다. 위 프로그램을 실행하게 되면 기본적으로 이 파일을 읽게 되어 있다.
그리고 netplan 설정에서도 NetworkManager 를 기본으로 지정하도록 되어 있다.
1 2 3 4 |
# 1-network-manager-all.yaml network: version: 2 renderer: NetworkManager |
Network Manager 비활성화
비활성화는 다음과 같이 하면 된다.
1 2 3 |
]# systemctl stop NetworkManager ]# systemctl disable NetworkManager ]# systemctl mask NetworkManager |
이렇게 하면 네트워크가 비활성화 됨으로 절대로 원격지 서버에서 하면 안된다.
systemd-networkd 활성화
1 2 3 |
]# systemctl unmask systemd-networkd.service ]# systemctl enable systemd-networkd.service ]# systemctl start systemd-networkd.service |
netplan
systemd-networkd 를 활성화하면 이제 네트워크 작업은 netplan 명령어를 통해서 이루어진다. 이 netplan 명령어는 기본적으로 ‘/etc/netplan’ 디렉토리에 파일을 읽어서 네트워크 설정을 적용해 준다.
‘/etc/netplan’ 디렉토리에 설정파일은 기본적으로 yaml 파일형식을 가진다. 예를 들면 다음과 같다.
1 2 3 4 5 6 7 |
# 1-network-manager-all.yaml network: version: 2 renderer: networkd ethernets: enp4s0: dhcp4: yes |
파일을 수정한 후에는 다음과 같이 명령어만 주면 적용이 된다.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 |
/etc/netplan# netplan --debug apply ** (generate:6597): DEBUG: 01:21:41.764: Processing input file /etc/netplan/1-network-manager-all.yaml.. ** (generate:6597): DEBUG: 01:21:41.764: starting new processing pass ** (generate:6597): DEBUG: 01:21:41.764: enp4s0: setting default backend to 1 ** (generate:6597): DEBUG: 01:21:41.765: Configuration is valid ** (generate:6597): DEBUG: 01:21:41.765: Generating output files.. ** (generate:6597): DEBUG: 01:21:41.765: NetworkManager: definition enp4s0 is not for us (backend 1) DEBUG:netplan generated networkd configuration changed, restarting networkd DEBUG:no netplan generated NM configuration exists DEBUG:enp4s0 not found in {} DEBUG:Merged config: network: bonds: {} bridges: {} ethernets: enp4s0: dhcp4: true vlans: {} wifis: {} DEBUG:Skipping non-physical interface: lo DEBUG:device enp4s0 operstate is up, not changing DEBUG:{} DEBUG:netplan triggering .link rules for lo DEBUG:netplan triggering .link rules for enp4s0 |
‘–debug’ 는 제외해도 된다.