Apakah ada cara untuk menggunakan DNS spesifik untuk domain tertentu?

29

Di tempat kerja kami menggunakan OpenDNS dan telah memblokir irc.freenode.net dengan salah untuk malware. Bagaimana saya dapat memastikan bahwa permintaan untuk * .freenode.net menuju 8.8.8.8 dan 8.8.4.4 (DNS Google).

Saya mencoba melakukan ini dengan mengutak-atik resolv.conf di Ubuntu, tetapi saya tidak bisa melangkah terlalu jauh. Juga, apakah ada cara mudah untuk melakukan ini untuk sistem Mac dan Windows (Saya punya beberapa rekan yang menggunakan OS tersebut dan mereka ingin menggunakan IRC juga).

vivin
sumber
4
Berhati-hatilah - berusaha menyiasati kontrol keamanan dapat membuat seseorang dikawal dari beberapa perusahaan. Juga, ada kemungkinan server DNS lain diblokir.
uSlackr

Jawaban:

15

Linux tidak mendukung penggunaan server DNS khusus domain via resolv.conf. Anda berpotensi mengatasi ini dengan menjalankan server nama caching (seperti BINDatau dnsmasq) secara lokal dan kemudian mengonfigurasi penerusan eksplisit untuk setiap domain.

Di bawah OS X, pengaturan semacam ini relatif mudah menggunakan scutilperintah. Kasus penggunaan umum untuk konfigurasi ini adalah untuk meneruskan permintaan DNS untuk koneksi VPN ke server DNS khusus VPN, jadi Anda akan menemukan ini sering dibahas bersama dengan, misalnya, OpenVPN. Dokumen ini berbicara tentang scutilperintah seperti ini , dan pencarian Google untuk openvpndan scutilakan menghasilkan lebih banyak hasil.

Saya tidak yakin tentang Windows. Anda mungkin bisa menggunakan solusi server DNS lokal untuk ketiga platform jika perlu.

larsks
sumber
1
Apakah ini masih benar di systemd-resolveddunia? (Ya, saya sadar jawaban Anda berusia 7 tahun)
Pointy
35

Ini tidak dapat dilakukan dengan resolusi DNS standar yang disediakan oleh * nix (dan Windows AFAIK), Anda memerlukan server DNS Anda sendiri untuk melakukan ini. Pada * nix dnsmasq adalah pilihan terbaik untuk ini, dan Anda dapat menjalankan ini di setiap workstation atau menjalankannya di server dan mengkonfigurasi semua workstation untuk menggunakan ini.

/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
Mgorven
sumber
2
Ini benar-benar dapat dilakukan dengan menggunakan resolusi DNS standar yang disediakan oleh beberapa sistem operasi. Hanya tidak dengan Linux.
larsks
Untuk mengontrol antarmuka mana yang digunakan, saya menambahkan @vpn0 di akhir server DNS. Ini bisa bermanfaat untuk menggunakannya hanya ketika VPN menyala.
Alex
8

Di dalam OS X Anda dapat menggunakan file seperti /etc/resolver/example.com dengan konten:

nameserver 172.16.5.5

untuk meneruskan permintaan dns untuk * .example.com ke 172.16.5.5

http://hints.macworld.com/article.php?story=2004062902195410

Alek_A
sumber
Apakah ini berlaku untuk High Sierra?
Tolsadus
1
Ini masih berfungsi pada Mojave
byte255
5

Saya melakukan ini pada Fedora dengan menginstal server DNS lokal.

pasang bind terlebih dahulu:

sudo dnf install bind

langkah 1: tambahkan baris ke /etc/named.conf(sebagai root):

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

langkah 2: buat file zona /etc/named/freenode.net.conf(sebagai root):

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

sekarang restart dinamai:

sudo service named restart

sekarang konfigurasi ulang pengaturan lan Anda untuk menggunakan 127.0.0.1 sebagai server DNS, bukan host yang dialokasikan DCHP.

Richard Hodges
sumber
3

Dimungkinkan untuk menggunakan opsi firejail --dns untuk ini. Sebagai contoh:

firejail --dns=8.8.8.8 firefox

Dengan cara ini server dns dapat disetel per aplikasi, bukan per domain. Jadi itu mungkin solusi yang lebih baik dalam beberapa keadaan.

mrlotfi
sumber