Port 53 được sử dụng cho các dịch vụ phân giải tên miền. Nếu bạn có ý định vận hành một ứng dụng chạy port mặc định 53 ví dụ như dịch vụ phân giải tên miền như Bind9 thì bạn sẽ cần đến nó. Trên server Ubuntu, port này được chiếm dụng bởi dịch vụ systemd-resolve, nếu bạn cố gắng bind port 53, bạn sẽ nhận được thông báo listen tcp 0.0.0.0:53: bind: address already in use.
$ lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 917 systemd-resolve 12u IPv4 13267 0t0 UDP localhost:domain
systemd-r 917 systemd-resolve 13u IPv4 13268 0t0 TCP localhost:domain (LISTEN)
Cách giải quyết là không có cách nào khác, cần vô hiệu hóa systemd-resolve một cách an toàn. Cụ thể, bước đầu tiên cần tắt daemon.
sudo systemctl stop systemd-resolved
Sau đó edit tập tin /etc/systemd/resolved.conf , bổ sung khóa DNS=127.0.0.1 hoặc DNS=1.1.1.1, tùy bạn muốn sử dụng DNS server nào; và đặt khóa DNSStubListener thành no. Nội dung đầy đủ của file /etc/systemd/resolved.conf sau khi chỉnh sủa bạn xem ở dưới.
[Resolve]
DNS=127.0.0.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#Cache=yes
DNSStubListener=no
Mồi tập tin này cho systemd-resolve bằng cách tạo một symbolic link tới /etc/resolv.conf
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Khởi động lại dịch vụ systemd-resolved.
systemctl restart systemd-resolved
Chạy thử sudo lsof -i :53 và kết quả không cho ra bất cứ output nào, thể hiện rằng port 53 không còn bị chiếm dụng nữa.