デフォルトでは、GoogleパブリックDNSサーバーを使用し、これらが失敗したときにイントラネットサーバーにフォールバックしたいと思います。
これは可能ですか?...私はラップトップを他のネットワークに移動しても壊れないセットアップを探しています。
このWi-Fiネットワーク接続に固有のソリューションを見つけた場合は受け入れられます(この場合のみトリックを行い、他のユーザーにはデフォルトを使用します)。
デフォルトでは、GoogleパブリックDNSサーバーを使用し、これらが失敗したときにイントラネットサーバーにフォールバックしたいと思います。
これは可能ですか?...私はラップトップを他のネットワークに移動しても壊れないセットアップを探しています。
このWi-Fiネットワーク接続に固有のソリューションを見つけた場合は受け入れられます(この場合のみトリックを行い、他のユーザーにはデフォルトを使用します)。
回答:
あなたは使用することができますipconfig getpacket
DHCPが推奨DNSサーバーを見つけること:
$ ipconfig getpacket en0
...
domain_name_server (ip_mult): {192.168.3.2, 192.168.42.1}
...
したがって、Wi-Fi
アダプターを使用しており、そのデバイスがen0
であると仮定すると、次のことができます。
#!/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
はい。リストの一番上にGoogle DNSサーバーを追加し、独自のサーバー(イントラネットサーバー)をフォローできます。
バッチでこれを行う方法を探しているネットワーク管理者であれば、コマンドラインからこれを行う方法もあります。
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
「Wi-Fi」を正しいネットワークデバイスに置き換えます。代わりに、次のものを使用できます。
device=`networksetup listallnetworkservices | grep Wi-Fi`
sudo networksetup -setdnsservers "$device" 8.8.8.8 8.8.4.4
私も同じことをしようとしています。キャッシングDNSサーバーをローカルで手動で実行し、参加時にイントラネットを学習させます。
再帰呼び出しを行う前に、DNSサーバーがイントラネットとインターネットのホスト名を区別できる可能性があることに興奮しています。
短いTTLが必要になるか、インターフェイスを変更するたびにDNSキャッシュをフラッシュするか、同様のことを行うためにフックを作成する必要があるのではないかと心配しています。
成功したら報告します...
DNSサーバーのウィキペディアの比較を見て、Dnsmasqが私のリストのトップになりました。
のbrew
ためのフォーラムがありdnsmasq
、さらにいくつかのservices
サブインターフェイスがありますbrew
...
$ 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
(brew
また、持っていますがbind
、最小限の状態は私にとっても魅力的です-ネットワーク構成を行うときにそれをクリアする必要はありません)。
dnsmasq
イントラネット設定を使用できるように構成します。(本当の挑戦)