Dlaczego tu jesteś?
Prawdopodobnie napotkałeś problem z zajętym portem 53.
Dlaczego port jest zajęty w ubuntu?
W systemie Ubuntu domyślnym serwerem DNS jest systemd-resolved. I zwykle to jego nie spodziewacie się w tym miejscu, ponieważ instalowany on jest standardowo z systemem. Ale jeżeli nie jesteś pewien możesz to sprawdzić wpisując komendę:
sudo lsof -i :53
W przypadku wspomnianego wyżej systemd-resolved wynik wygląda tak:
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
Jak rozwiązać ten problem (jeżeli odpowieada za to systemd-resolved)?
Zaczniemy od edycji pliku konfiguracyjnego systemd-resolved /etc/systemd/resolved.conf
ja użyję do tego edytora nano, nie zapomnijcie też o sudo chyba że robicie to z konta root:
sudo nano /etc/systemd/resolved.conf
Zawartość tego pliku powinn wyglądać mniej więcej tak:
[Resolve]
#DNS=
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no
DNSStubListener=yes
#ReadEtcHosts=yes
Pierwszą rzeczą jaką musimy się zająć jest linijka #DNS=
, znak # odpowiada za to że jest ona zakomentowana (czyli nie działa) musimy usunąć ten znak, a po zanku =
wpisać ip serwera dns którego serwer będzie używać np. 1.1.1.1 (należy do CloudFlare), 8.8.8.8 (należy do Google) po zmiane ta linijka powinna wyglądać np. DNS=1.1.1.1
.
Kolejną linijką którą musimy zmienić jest linijka DNSStubListener=yes
, ta już nie jest zakomentowana jedyne co musimy zrobić to yes
zamienić na no
. Aby wyglądało to w ten sposób DNSStubListener=no
, to właśnie przez tą linijkę nasz port 53 jest używany.
Dodatkową linijką którą możesz zedytować jest #FallbackDNS=
odpowiada ona za zapasowy serwer dns gdyby był jakiś problem z tym który podałeś w linijce DNS=1.1.1.1
. Linijka powinna wyglądać np. FallbackDNS=8.8.8.8
.
Więc cały plik po edycji powinien wyglądać mniej więcej tak:
[Resolve]
DNS=1.1.1.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no
DNSStubListener=no
#ReadEtcHosts=yes
Zapisywanie pliku w nano robi się kombinacją CTRL + O
później nano zapyta czy plik ma się nazywac tak jak do tej pory, my potwierdzamy to tylko wciskając Enter
i później używamy kombinacji CTRL + X
żeby wyjść z nano.
Musimy teraz użyć komendy:
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Odpowiada ona za to żeby utworzyć łącze symboliczne i ponownie z sudo
chyba że robicie to jako root.
Jedyne co nam pozostało żeby zwolnić port 53 to restart systemu robimy to komendą:
sudo reboot now
jeżeli to by nie zadziałało można też wymusić komendą:
sudo reboot -f
Po restarcie systemu port 53 powinen być wolny żeby to sprawdzić możemy ponownie użyć komendy:
sudo lsof -i :53
Która jeżeli port nie jest zajęty nie wyświetli nam żadnego wyniku.
Źródła:
linuxuprising.com