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 의 동작은 다음의 명령어로 이루어진다.
]# systemctl start/stop/status NetworkManger
관련 설정은 /etc/NetworkManger/NetworkManger.conf 파일이다. 위 프로그램을 실행하게 되면 기본적으로 이 파일을 읽게 되어 있다.
그리고 netplan 설정에서도 NetworkManager 를 기본으로 지정하도록 되어 있다.
# 1-network-manager-all.yaml
network:
version: 2
renderer: NetworkManager
Network Manager 비활성화
비활성화는 다음과 같이 하면 된다.
]# systemctl stop NetworkManager
]# systemctl disable NetworkManager
]# systemctl mask NetworkManager
이렇게 하면 네트워크가 비활성화 됨으로 절대로 원격지 서버에서 하면 안된다.
systemd-networkd 활성화
]# 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-network-manager-all.yaml
network:
version: 2
renderer: networkd
ethernets:
enp4s0:
dhcp4: yes
파일을 수정한 후에는 다음과 같이 명령어만 주면 적용이 된다.
/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’ 는 제외해도 된다.