Ubuntu 18.04 systemd-resolved SERVFAIL 문제
ubuntu 17 부터인지
ifupdown 대신 netplan 이 네트워크 설정을 담당하고,
기본 nameserver 로는 127.0.0.53, systemd-resolved 가 작동하면서 알아서 질의한다.
같은 시기에 설치한 ubuntu 18 서버 두대 중 한대가 dns 질의가 안되었는데,
$ nslookup google.com
Server: 127.0.0.53
Address: 127.0.0.53#53
** server can't find google.com: SERVFAIL
$ sudo journalctl -u systemd-resolved -f
Jun 26 18:53:46 hostname systemd-resolved[688]: Got packet on unexpected IP range, refusing.
대충 이런 상황...?
원인을 찾아보니 황당하게도 iptables 설정 문제.
포트 포워딩을 하면서 SNAT 을 위해 아래와 같이 설정해두었는데 이게 문제였다.
# iptables -t nat -A POSTROUTING -j MASQUERADE
로컬 인터페이스에 대해서도 SNAT 이 걸려서 뭔가 문제라고 판단을 하였고,
# iptables -t nat -A POSTROUTING -o eno1 -j MASQUERADE
이렇게 네트워크 인터페이스를 지정해주고 문제 해결.
참고로 네트워크 인터페이스 지정을 안해주니 sudo 도 hostname 을 제대로 못찾아서 에러를 낸다.
127.0.1.1 주소를 /etc/hosts 파일에 hostname 과 연결해주면 해결되지만, (또 그렇게 연결해두라고 하지만)
SNAT 설정을 안해두면 애초에 이 문제가 발생하지 않음.
여튼 해결.