Bagaimana cara menegakkan dnsmasq untuk menggunakan server upstream dns hanya untuk beberapa nama domain tertentu?

15

Saat ini saya sudah mendapatkan baris berikut di dnsmasq.conf, yang menangani dengan baik semua permintaan ( /#/cocok dengan domain apa pun; ini diperlukan):

address=/#/127.0.0.1

Namun, ada beberapa domain yang perlu diselesaikan ke alamat IP selain 127.0.0.1.

Sebagai solusi sementara mereka telah ditambahkan ke /etc/hosts:

209.85.148.95   ajax.googleapis.com
207.97.227.245  underscorejs.org
72.21.194.31    s3.amazonaws.com

Sayangnya ini adalah solusi yang sangat sementara: itu akan berhenti berfungsi segera setelah alamat IP dari setiap perubahan domain target.

Pertanyaan saya adalah: bagaimana menegakkan dnsmasq untuk menggunakan server dns hulu untuk menyelesaikan alamat IP dari beberapa nama domain (ditentukan)?

nrph
sumber

Jawaban:

28

Anda dapat melakukan ini dengan menggunakan server=arahan mis

server=/ajax.googleapis.com/8.8.8.8

akan meminta server DNS publik google untuk domain ajax.googleapis.com, sama

server=/amazonaws.com/209.244.0.3

akan meminta server DNS publik Level3 untuk domain amazonaws.com.

Anda dapat mengelompokkan beberapa domain secara bersamaan

server=/co.uk/com/8.8.4.4

Akan mengirim domain .co.uk dan .com ke server DNS di 8.8.4.4

Anda dapat memiliki banyak server=arahan juga

−S, --server = [/ [<domain>] / [domain /]] [<ipaddr> [# <port>] [@ <source> [# <port>]]]

Tentukan alamat IP penyegelan hulu secara langsung. Mengatur flag ini tidak menekan pembacaan /etc/resolv.conf, gunakan -R untuk melakukan itu. Jika satu atau lebih domain opsional diberikan, server itu hanya digunakan untuk domain tersebut dan mereka ditanyai hanya menggunakan server yang ditentukan. Ini ditujukan untuk server nama pribadi: jika Anda memiliki server nama di jaringan Anda yang berhubungan dengan nama-nama formulir xxx.internal.thekelleys.org.uk di 192.168.1.1 lalu berikan bendera -S /internal.thekelleys.org.uk/ 192.168.1.1 akan mengirim semua permintaan untuk mesin internal ke server nama itu, semua yang lain akan masuk ke server di /etc/resolv.conf. Spesifikasi domain kosong, // memiliki arti khusus "hanya nama yang tidak memenuhi syarat" yaitu nama tanpa titik di dalamnya. Port non-standar dapat ditentukan sebagai bagian dari alamat IP menggunakan karakter #.

Juga diizinkan adalah bendera -S yang memberikan domain tetapi tidak ada alamat IP; ini memberi tahu dnsmasq bahwa suatu domain adalah lokal dan mungkin menjawab pertanyaan dari / etc / hosts atau DHCP tetapi seharusnya tidak pernah meneruskan permintaan pada domain itu ke server upstream mana pun. local adalah sinonim untuk server untuk membuat file konfigurasi lebih jelas dalam hal ini.

Alamat IP opsional kedua setelah karakter @ memberi tahu dnsmasq cara mengatur alamat sumber kueri ke server nama ini. Ini harus berupa alamat milik mesin yang menjalankan dnsmasq jika tidak, baris server ini akan dicatat kemudian diabaikan. Bendera port permintaan diabaikan untuk server apa pun yang memiliki alamat sumber yang ditentukan tetapi port tersebut dapat ditentukan secara langsung sebagai bagian dari alamat sumber.

user9517
sumber
Saya tidak berpikir dia membutuhkan banyak serverbaris: alamat apa pun yang dia ingin gagal untuk menyelesaikan (127.0.0.1), dia dapat menambahkannya dengan addressbaris; hal lain, DNSMasq akan menanyakan server. Cukup yakin itulah cara pengaturan milik saya.
gravyface
1
@ gravyace: Saya membaca pertanyaan sebagai ingin membuat semuanya menyelesaikan ke 127.0.0.1 dengan beberapa pengecualian yang dia ingin gunakan DNS untuk menyelesaikan jika mereka mengubah alamat. Seperti yang saya lihat, cara untuk melakukan ini adalah dengan menggunakan arahan server.
user9517
Oh, mungkin. Siapa tahu. Either way, itu harus membuatnya pergi.
gravyface
Bekerja seperti pesona!
nrph