Ubuntu má standardně naslouchání na portu 53 vyřešené systémem. Pokud chcete provozovat svůj vlastní server DNS, nemůžete, protože port 53 je již používán, takže se zobrazí chybová zpráva podobná této:„poslouchejte tcp 0.0.0.0:53:bind:adresa je již používána “.
Tento článek vysvětluje, jak zabránit systemd-resolved v používání portu 53 na Ubuntu. Návod byl testován na Ubuntu 20.04, ale měl by fungovat i na jiných verzích Ubuntu, např. Ubuntu 18.04, nadcházející Ubuntu 20.10, stejně jako distribuce Linuxu založené na Ubuntu, jako je Pop! _OS, Zorin OS, Elementary OS, Linux Mint a brzy. V zásadě to funguje na jakémkoli systému se systemd verze 232 nebo novější.
Chcete-li zjistit, zda je ve vašem systému použit port 53, použijte:
sudo lsof -i :53
Příklad s výstupem ukazujícím systemd-resolved používá port 53 na standardním systému Ubuntu 20.04:
$ 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)
Pokud nemáte žádný výstup, znamená to, že port 53 není používán.
Jak zastavit systemd-resolved v používání portu 53 na Ubuntu
Stojí za zmínku, že port 53 můžete sdílet pouhým zrušením komentáře DNSStubListener
a nastavte jej no
v /etc/systemd/resolved.conf
. Dalšími kroky je povolení serveru DNS – bez něj váš systém nedokáže rozlišit názvy domén, takže nemůžete navštěvovat webové stránky ve webovém prohlížeči atd.
1. Chcete-li upravit /etc/systemd/resolved.conf
otevřít pomocí textového editoru (jako root), např. pomocí textového editoru Nano Console:
sudo nano /etc/systemd/resolved.conf
A zrušte komentář (odstraňte #
zepředu) DNS=
Řádek a DNSStubListener=
Řízení. Dále změňte DNS=
Hodnota v tomto souboru pro server DNS, který chcete použít (např. 127.0.0.1 pro použití místního proxy, 1.1.1.1 pro použití Cloudflare DNS atd.) a také změňte DNSStubListener=
hodnotu yes
na no
.
Takto by měl soubor vypadat po provedení těchto změn (jako DNS server používám 1.1.1.1, Cloudflare DNS):
[Resolve]
DNS=1.1.1.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no
DNSStubListener=no
#ReadEtcHosts=yes
Chcete-li soubor uložit pomocí textového editoru nano, stiskněte Ctrl + x
a poté zadejte y
a stiskněte Enter
.
2. Vytvořte symbolický odkaz pro /run/systemd/resolve/resolv.conf
s /etc/resolv.conf
jako cíl:
sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Zde -s
se používá k vytvoření symbolického a nikoli pevného odkazu a -f
se používá k odstranění existujících cílových souborů (takže odstraní /etc/resolv.conf
je-li k dispozici).
3. Restartujte systém.
Port 53 by nyní měl být na vašem systému Ubuntu volný a již byste neměli dostávat chyby jako „poslouchejte tcp 127.0.0.1:53:bind:adresa se již používá“.
Zda je port 53 používán nebo ne, můžete zkontrolovat spuštěním sudo lsof -i :53
– Pokud není použit port 53, tento příkaz by neměl zobrazovat žádný výstup.
Mohlo by se vám líbit:
- Jak vymazat mezipaměť DNS v systému Linux (pro systemd-resolved, BIND, Dnsmasq nebo nscd)
- Jak trvale změnit adresu MAC v systému Linux
Jak vrátit změny zpět
Chcete vrátit zpět provedené změny podle pokynů v tomto článku? To je to, co musíte udělat.
1. Začněte upravovat /etc/systemd/resolved.conf
otevřít pomocí textového editoru (jako root), např. pomocí textového editoru Nano Console:
sudo nano /etc/systemd/resolved.conf
A okomentujte (přidejte #
před řádkem) DNS=
a DNSStubListener=no
pak soubor uložte. Chcete-li soubor uložit pomocí textového editoru nano, stiskněte Ctrl + x
a poté zadejte y
a stiskněte Enter
.
2 . Odstraňte /etc/resolv.conf
symbolický odkaz:
sudo rm /etc/resolv.conf
3 . Restartujte systém.