Jak ustawić rozdzielczość domeny z symbolami wieloznacznymi (127.0.0.1) w dniu 18.04?

18

W systemie Ubuntu 14.04 używam dnsmasq do rozwiązywania znaków wildcard example.com na komputerze lokalnym (komputer stacjonarny w domu).

Po wielu lekturach nie mogę na całe życie rozwiązać tego samego na czystej instalacji 18.04.

W tej chwili chcę tylko:

  • dla ping example.com polecenia ping 127.0.0.1, a nie 93.184.216.34;
  • dla ping anysubdomain.example.com również pingowania 127.0.0.1;
  • i ping google.com do pingowania prawdziwego google.com za pośrednictwem routera / IP DNS.

Z pewnością to musi być proste, a nawet trywialne?

Ale jestem zakłopotany. Mogę uzyskać rozwiązanie example.com, ale tylko kosztem zepsucia wszystkiego innego.

W jaki sposób mogę to zrobić?

Nick Rice
źródło
1
Dlaczego po prostu nie zainstalować dnsmasq, tak jak 14.04?
vidarlo
1
@vidarlo Cóż, oczywiście, to była pierwsza rzecz, którą zrobiłem, jak wskazałem w moim pytaniu. Jednak w przeciwieństwie do 14.04 powoduje błąd „nie udało się utworzyć gniazda nasłuchującego dla portu 53: Adres już używany”. Odpowiedź, którą zaakceptowałem, działa dobrze bez jawnej instalacji dnsmasq.
Nick Rice

Odpowiedzi:

30

Oto kroki dla Ubuntu 18.04. Minęło trochę czasu, ponieważ systemd-resolvednie jest zbyt dobry w NetworkManagerkonfiguracji z dnsmasq.

Nadal jednak polecam zacząć dnsmasqod NetworkManager, ponieważ zmiany w łączności sieciowej (WIFI, przewodowe, ...) będą obsługiwane w przejrzysty sposób.

Włącz dnsmasq w NetworkManager

Edytuj plik /etc/NetworkManager/NetworkManager.confi dodaj linię dns=dnsmasqdo [main]sekcji, będzie to wyglądać następująco:

[main]
plugins=ifupdown,keyfile
dns=dnsmasq

[ifupdown]
managed=false

[device]
wifi.scan-rand-mac-address=no

Pozwól NetworkManager zarządzać /etc/resolv.conf

sudo rm /etc/resolv.conf ; sudo ln -s /var/run/NetworkManager/resolv.conf /etc/resolv.conf

Konfiguruj example.com

echo 'address=/.example.com/127.0.0.1' | sudo tee /etc/NetworkManager/dnsmasq.d/example.com-wildcard.conf

Załaduj ponownie NetworkManageri przetestuj

NetworkManager powinien zostać ponownie załadowany, aby zmiany odniosły skutek.

sudo systemctl reload NetworkManager

Następnie możemy zweryfikować, czy możemy dotrzeć do zwykłej strony:

dig askubuntu.com +short
151.101.129.69
151.101.65.69
151.101.1.69
151.101.193.69

Na koniec sprawdź, example.comczy subdomeny są rozwiązane jako 127.0.0.1:

dig example.com askubuntu.example.com a.b.c.d.example.com +short
127.0.0.1
127.0.0.1
127.0.0.1
pim
źródło
co masz na myśli mówiąc „systemd-resolved nie działa zbyt dobrze z NetworkManager”?
Sebastian Stark
1
Gdy NetworkManager używa dns = dnsmasq, powinien powiedzieć systemd-resolved, aby używał dnsmasq, może to być automatyczne.
pim
1
Dziękuję, działało idealnie! Wygląda na to, że nie mogę dać ci nagrody za kolejną godzinę, a ponieważ minęła już jedna rano, idę teraz do łóżka i zrobię to, kiedy wrócę jutro.
Nick Rice
2
Niesamowite. Przeczytałem wiele różnych technik. Ten w końcu zadziałał.
Redsandro
3
Dla tych, którzy wolą wrócić do systemu rozwiązanego, domyślnie /etc/resolv.confwskazuje /run/systemd/resolve/stub-resolv.conf.
Pothi Kalimuthu
2

Najpierw upewnij się, że w /etc/NetworkManager/NetworkManager.confnastępującym wierszu nie ma ani nie skomentował:

dns=dnsmasq

Uruchom ponownie NetworkManager:

sudo systemctl restart NetworkManager

Upewnij się, że kontrolowany przez NetworkManager dnsmasq już nie działa, albo poprzez zabicie procesu, albo ponowne uruchomienie systemu.

Następnie zainstaluj dnsmasq:

sudo apt install dnsmasq

Dodaj następujące elementy /etc/dnsmasq.d/example.com:

address=/example.com/127.0.0.1

Uruchom ponownie dnsmasq:

sudo systemctl restart dnsmasq

Teraz powinieneś zastąpić dns wieloznacznym na przykład.com.

Sebastian Stark
źródło
1
Nie mogłem tego uruchomić. Natychmiast po czystej instalacji minimalnej (z opcją „wymaż dysk”) sudo apt install dnsmasqpojawia się błąd „nie udało się utworzyć gniazda nasłuchującego dla portu 53: Adres już używany”. I tak kontynuowałem do końca, na wypadek, gdyby jakiś krok rozwiązał ten problem, ale to nie zadziałało i to nie działało.
Nick Rice
Następnie dnsmasq, który został uruchomiony przez NetworkManager, nadal działał. Dlatego należy go najpierw dezaktywować, ostatecznie zabić, a dopiero potem zainstalować pakiet dnsmasq.
Sebastian Stark
Dzięki, Sebastian. Jednak już zaakceptowałem odpowiedź pima, która działała bezbłędnie, więc mogę teraz przejść dalej, nie bawiąc się nią.
Nick Rice
@NickRice Nie ma z tym problemu, ale może inni chcą spróbować
Sebastian Stark
Tak, oczywiście, Sebastian. Najpierw wypróbowałem twoją odpowiedź, ponieważ była najprostsza, a jeśli wszystko, czego potrzebuje, to dodatkowy krok początkowy, to jest bardzo dobry.
Nick Rice,
0

To nie będzie tak proste jak edycja pliku hosts. Masz kilka opcji:

To proxy DNS python, które będzie obsługiwać symbole wieloznaczne w / etc / hosts

Korzystanie z DNSmasq

Harikrishnan R.
źródło
Dzięki. Twój link do pytania DNSmasq jest tym, co robię w 14.04. Robienie tego samego w świeżej instalacji 18.04 nie działa z powodu konfliktu portów. Więc po wyjęciu z pudełka coś jeszcze trzeba zrobić w porównaniu z tym. Patrząc na cały ten kod potrzebny do serwera proxy Python DNS, nie mogę uwierzyć w to, co jest konieczne. Nie było wcześniej, chyba, że ​​dla tych, którzy nalegali na użycie / etc / hosts.
Nick Rice
Czy możesz zrobić, netstat -tulpnaby sprawdzić, co korzysta z portu? EDYCJA: Nieważne, zobaczyłem zaakceptowaną odpowiedź. problem dotyczy rozwiązania systemowego.
Harikrishnan R