Чи існує спосіб використання певного DNS для конкретного домену?


29

На роботі ми використовуємо OpenDNS, і він неправильно заблокував irc.freenode.net для зловмисного програмного забезпечення. Як я можу переконатися, що будь-який запит на * .freenode.net надходить на 8.8.8.8 та 8.8.4.4 (DNS Google).

Я спробував це зробити, обмінюючись резолюцією.conf на Ubuntu, але мені не вдалося зайти занадто далеко. Також є простий спосіб зробити це для систем Mac і Windows (у мене є кілька колег, які використовують ці ОС, і вони також хочуть використовувати IRC).


4
Будьте обережні - спроби обійти контроль безпеки можуть отримати одного супроводу з деяких компаній. Також можливо заблоковано інші сервери DNS.
uSlackr

Відповіді:


15

Linux не підтримує використання доменних серверів DNS через resolv.conf. Можна потенційно обійти це, запустивши кеш-сервер імен (наприклад, BINDабо dnsmasq) локально, а потім налаштувавши явних пересилачів для кожного домену.

В ОС X подібний параметр відносно простий за допомогою scutilкоманди. Загальним випадком використання для цієї конфігурації є пересилання DNS-запитів на підключення VPN до специфічних для VPN серверів DNS, тому ви часто зустрічаєтеся з цим, наприклад, OpenVPN. У цьому документі йдеться про scutilкоманду, як це робиться , і пошук Google openvpnі scutilдасть більше результатів.

Я не впевнений у Windows. Ви, мабуть, можете використовувати рішення локального сервера DNS для всіх трьох платформ, якщо потрібно.


1
Це все-таки правда у systemd-resolvedсвіті? (Так, я розумію, що Вашій відповіді 7 років)
Поні

35

Це неможливо зробити зі стандартною роздільною здатністю DNS, наданою * nix (та Windows AFAIK), для цього вам потрібен власний DNS-сервер. On * nix dnsmasq - найкращий вибір для цього, і ви можете або запустити це на кожній робочій станції, або запустити його на сервері і налаштувати всі робочі станції для цього.

/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
Це абсолютно можна зробити за допомогою стандартної роздільної здатності DNS, наданої деякими операційними системами. Тільки не від Linux.
larsks

Щоб контролювати, який інтерфейс використовувати, я додав @vpn0 кінець DNS-серверів. Це може бути корисно використовувати лише тоді, коли VPN працює.
Олексій


5

Я зробив це на Fedora, встановивши локальний DNS-сервер.

спочатку встановіть прив'язку:

sudo dnf install bind

крок 1: додайте рядок до /etc/named.conf(як корінь):

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

крок 2: створіть файл зони /etc/named/freenode.net.conf(як root):

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

тепер перезапустіть ім’я:

sudo service named restart

тепер переконфігуруйте свої параметри lan, щоб використовувати 127.0.0.1 як DNS-сервер, а не хости, призначені DCHP.


3

Для цього можливо використовувати варіант firejail --dns. Наприклад:

firejail --dns=8.8.8.8 firefox

Таким чином dns-сервер можна встановити для програми, а не для домену. Тож це може бути кращим рішенням за деяких обставин.


Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.