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 dạng này (chẳng hạn Pi-Hole) bạn sẽ cần đến nó. Tuy vậy, 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
.
Sự hoạt động của systemd-resolve
có thể được kiểm chứng bằng câu lệnh sudo lsof -i :53
:
$ sudo lsof -i :53
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 610 systemd-resolve 12u IPv4 19377 0t0 UDP localhost:domain
systemd-r 610 systemd-resolve 13u IPv4 19378 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
:
[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 máy tính, chạy thử sudo lsof -i :53
, command 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.