/etc/resolv.conf 를 손으로 고쳐 두었는데 재부팅하거나 네트워크가 재협상되면 DHCP 가 준 네임서버로 되돌아간다. RHEL 8 · 9 와 Rocky · Alma 처럼 NetworkManager 가 기본인 배포판에서 생긴다.
전역으로 관리를 끈다. NetworkManager 가 resolv.conf 를 아예 건드리지 않게 한다.
sudo vi /etc/NetworkManager/conf.d/90-dns-none.conf
[main]
dns=none
sudo systemctl reload NetworkManager
이후 /etc/resolv.conf 는 사람이 관리한다.
search example.com
nameserver 10.0.0.53
nameserver 10.0.0.54
options timeout:2 attempts:2
dns=none 으로 바꾸기 전에 기존 파일을 백업해 둔다. 잘못 쓰면 이름 해석이 전부 막혀 패키지 설치조차 안 된다.
연결 하나에서만 DHCP DNS 를 무시한다. 다른 인터페이스는 그대로 두고 싶을 때 쓴다. 이쪽이 전역 설정보다 부작용이 적다.
nmcli connection modify ens192 ipv4.ignore-auto-dns yes
nmcli connection modify ens192 ipv4.dns "10.0.0.53 10.0.0.54"
nmcli connection modify ens192 ipv4.dns-search "example.com"
nmcli connection up ens192
우선순위만 조정한다. 여러 인터페이스가 각각 DNS 를 물고 올 때, 특정 연결의 DNS 를 앞에 세우려면 ipv4.dns-priority 에 더 작은 값을 준다.
nmcli device show ens192 | grep -i dns
cat /etc/resolv.conf
resolvectl status
systemd-resolved 가 함께 떠 있는 환경이면 /etc/resolv.conf 가 /run/systemd/resolve/stub-resolv.conf 로 향하는 심볼릭 링크일 수 있다. 이때는 파일을 고쳐도 소용이 없고, resolvectl 이나 systemd-resolved 설정 쪽을 본다.