Czy istnieje sposób użycia określonego DNS dla określonej domeny?


29

W pracy używamy OpenDNS, który nieprawidłowo zablokował irc.freenode.net pod kątem złośliwego oprogramowania. Jak mogę się upewnić, że każde żądanie * .freenode.net trafia do wersji 8.8.8.8 i 8.8.4.4 (DNS firmy Google).

Próbowałem to zrobić, bawiąc się plikiem resolv.conf na Ubuntu, ale nie byłem w stanie dostać się za daleko. Czy jest też łatwy sposób to zrobić na komputerach Mac i Windows (mam kilku kolegów używających tych systemów operacyjnych i chcieliby również używać IRC).


4
Bądź ostrożny - próba obejścia kontroli bezpieczeństwa może doprowadzić do eskorty niektórych firm. Możliwe też, że inne serwery DNS są zablokowane.
uSlackr

Odpowiedzi:


15

Linux nie obsługuje używania serwerów DNS specyficznych dla domeny za pośrednictwem resolv.conf. Możesz potencjalnie obejść ten problem, uruchamiając buforujący serwer nazw (np. BINDLub dnsmasq) lokalnie, a następnie konfigurując jawne usługi przesyłania dalej dla każdej domeny.

W systemie OS X takie ustawienie jest stosunkowo łatwe przy użyciu scutilpolecenia. Typowym przypadkiem użycia tej konfiguracji jest przekazywanie żądań DNS połączenia VPN do serwerów DNS specyficznych dla VPN, dlatego często omawia się to wspólnie z np. OpenVPN. Ten dokument mówi o scutilpoleceniu, podobnie jak to , a wyszukiwanie w Google openvpni scutilprzyniesie więcej wyników.

Nie jestem pewien co do systemu Windows. W razie potrzeby można prawdopodobnie użyć lokalnego serwera DNS dla wszystkich trzech platform.


1
Czy to wciąż prawda na systemd-resolvedświecie? (Tak, zdaję sobie sprawę, że twoja odpowiedź ma 7 lat)
Pointy

35

Nie można tego zrobić ze standardową rozdzielczością DNS zapewnianą przez * nix (i Windows AFAIK), do tego potrzebny jest własny serwer DNS. Na * nix dnsmasq jest najlepszym wyborem do tego, możesz to uruchomić na każdej stacji roboczej lub uruchomić na serwerze i skonfigurować wszystkie stacje robocze, aby tego używały.

/etc/resolv.conf:

nameserver 127.0.0.1
nameserver 208.67.222.222
nameserver 208.67.220.220

/etc/dnsmasq.conf:

server=/freenode.net/8.8.8.8
server=/freenode.net/8.8.4.4

2
Można to absolutnie zrobić przy użyciu standardowej rozdzielczości DNS zapewnianej przez niektóre systemy operacyjne. Po prostu nie przez Linuksa.
larsks

Aby kontrolować, którego interfejsu użyć, dodałem @vpn0 na końcu serwerów DNS. Może to być przydatne, aby używać go tylko wtedy, gdy VPN jest włączony.
Alex


5

Zrobiłem to na Fedorze, instalując lokalny serwer DNS.

pierwsza instalacja wiąże:

sudo dnf install bind

krok 1: dodaj linię do /etc/named.conf(jako root):

include "/etc/named/freenode.net.conf";

krok 2: utwórz plik strefy /etc/named/freenode.net.conf(jako root):

zone "freenode.net" {
    type forward;
    forwarders { 8.8.8.8; };
};

teraz uruchom ponownie o nazwie:

sudo service named restart

teraz ponownie skonfiguruj ustawienia sieci LAN, aby używały 127.0.0.1 jako serwera DNS zamiast hostów przydzielonych przez DCHP.


3

Można do tego użyć opcji firejail --dns. Na przykład:

firejail --dns=8.8.8.8 firefox

W ten sposób serwer dns można ustawić dla aplikacji zamiast dla domeny. W niektórych okolicznościach może to być lepsze rozwiązanie.


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.