Pada OS X apakah mungkin untuk mengesampingkan server DNS yang ditugaskan DHCP tetapi masih menyimpannya untuk mundur?


9

Secara default saya ingin menggunakan server DNS publik google dan untuk mundur ke yang intranet ketika ini gagal.

Apakah ini mungkin? ... Saya mencari pengaturan yang tidak akan rusak ketika saya memindahkan laptop saya tidak ada jaringan lain.

Akan dapat diterima jika saya menemukan solusi khusus untuk koneksi jaringan wifi ini (untuk melakukan trik hanya dalam kasus ini, dan menggunakan default untuk orang lain).


Apa artinya "ketika server DNS publik google gagal"? Ada banyak cara untuk skrip mengubah lokasi jaringan dan / atau hanya skrip entri DNS yang berbeda, tetapi tidak jelas bagaimana Anda akan menguji kegagalan google DNS. Lebih buruk lagi, komentar di bawah tentang VPN akan semakin mempersulit hal-hal jika Anda menambahkannya ke dalam campuran kebutuhan Anda.
bmike

Saya terkejut ini tidak mungkin. Saya kadang-kadang memiliki server DNS yang diberikan kepada saya melalui DHCP gagal jadi saya menggunakan yang Google. Namun saya tidak dapat menggunakan jaringan apa pun yang menggunakan DNS untuk mengimplementasikan captive portal sekarang. Jika saya bisa memiliki server yang disediakan DHCP sebagai cadangan maka itu akan menyelesaikan ini. Apakah Anda menemukan solusinya?
Jake

Jawaban:


4

Anda dapat menggunakan ipconfig getpacketuntuk menemukan server DNS yang direkomendasikan DHCP:

$ ipconfig getpacket en0 
...
domain_name_server (ip_mult): {192.168.3.2, 192.168.42.1}
...

Jadi, dengan asumsi Anda menggunakan Wi-Fiadaptor dan perangkatnya adalah en0, Anda dapat:

#!/bin/bash

default_servers=$( ipconfig getpacket en0 | \
   perl -ne'/domain_name_server.*: \{(.*)}/ && print join " ", split /,\s*/, $1' )
networksetup -setdnsservers Wi-Fi 127.0.0.1 $default_servers

2

Ya, Anda dapat menambahkan server DNS Google di bagian atas daftar dan mengikuti server Anda sendiri (server intranet).

  • Pergi ke System Preferences> Network
  • Pilih antarmuka jaringan Anda dari daftar di sebelah kiri
  • Klik tombol Advanced di sebelah kanan
  • Di tab DNS dialog, klik "+" untuk menambah atau "-" untuk menghapus entri (Anda juga dapat mengedit entri dengan mengklik dua kali atau memilih dan mengklik alamat)
  • Tambahkan alamat DNS Google sebagai dua entri pertama
  • Tambahkan server DNS intranet Anda di bawah itu
  • Klik OK
  • Klik Terapkan
  • Tutup Preferensi Sistem

1
Saya tahu ini, tetapi masalahnya adalah hal ini membuat saya tidak mungkin menggunakan VPN yang sama dari lokasi lain. Ini harus menjadi solusi lain, mungkin sesuatu untuk dikonfigurasikan di server VPN (PPTP) atau untuk mengkonfigurasi DNS dengan alamat 127.0.0.1 dan untuk mengkonfigurasi DNS lokal yang masih menggunakan server DNS yang disediakan DHCP.
sorin

1

Ada juga cara untuk melakukan ini dari command-line jika Anda seorang administrator jaringan yang mencari cara untuk melakukan ini dalam batch:

networksetup listallnetworkservices
# look for the correct network device here, probably "Wi-Fi"
sudo networksetup -setdnsservers Wi-Fi 8.8.8.8 8.8.4.4

Ganti "Wi-Fi" dengan perangkat jaringan yang benar. Anda dapat, sebaliknya, ingin menggunakan:

device=`networksetup listallnetworkservices | grep Wi-Fi`
sudo networksetup -setdnsservers "$device" 8.8.8.8 8.8.4.4

1

Saya mencoba melakukan hal yang sama. Saya akan secara manual menjalankan caching dns server secara lokal dan memintanya mempelajari intranet ketika saya bergabung.

Saya senang bahwa server dns bahkan mungkin dapat membedakan antara intranet dan nama host internet sebelum membuat panggilan rekursif.

Saya khawatir bahwa saya akan membutuhkan TTL pendek, atau perlu menulis kait sehingga setiap kali perubahan antarmuka saya mempertimbangkan pembilasan cache dns, atau serupa.

Saya akan melaporkan kembali jika berhasil ...

50% pertama

Setelah melihat perbandingan Wikipedia dari server DNS , Dnsmasq masuk ke bagian atas daftar saya.

Ternyata brewmemiliki forumla untuk dnsmasq, dan bahkan memiliki beberapa servicessub-antarmuka yang ditulis untuk brew... hebat, kurang untuk dipikirkan, hanya perlu mengerjakan konfigurasi.

$ brew install dnsmasq  # [libidn] internation domain names
$ cp /usr/local/opt/dnsmasq/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
# To have launchd start dnsmasq now and restart at startup:
$ sudo brew services start dnsmasq 

( brewjuga sudah bind, tetapi negara minimal juga menarik bagi saya - tidak harus menghapusnya saat melakukan konfigurasi jaringan).

Melakukan

  • Mencari tahu mengkonfigurasi Preferensi Jaringan untuk menggunakan dns baru saya, dan
  • Konfigurasikan dnsmasquntuk memastikannya dapat menggunakan pengaturan intranet. (tantangan nyata)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.