ファイルに静的IPアドレスを設定しました / etc/network/interfaces :
auto eth0
iface eth0 inet static
address 10.152.187.122
gateway 10.152.187.1
netmask 255.255.255.0
しかし、私は DNS を DHCP で自動的に設定したいと思います。たとえば、dhclientを実行すると、 / etc/resolv.conf が適切に設定されます。しかし、私はこれを起動時に実行したいと思います。それを設定する適切な方法がどこにあるかわかりません。
これは buntu 12.04(正確なセンザンコウ)雲画像 にあります。
DHCPを使用すると、ルーターがインターネットサービスプロバイダー(ISP)からIPアドレスを取得するときに取得するDNSネームサーバーアドレスを取得できます。ルーターが持つDNSネームサーバーアドレスは次のように使用できます。
auto eth0
iface eth0 inet static
address 10.152.187.122
netmask 255.255.255.0
gateway 10.152.187.1
dns-nameservers 10.152.187.1
求めているのは、本質的には静的IPとDHCP DNSのハイブリッド構成です。そのようなタイプのネットワーク設定はありません-静的またはDHCPがあります。
ただし、構成でDNSネームサーバーを明示的に定義することもできます。これは静的アドレスを保持しますが、残念ながらDNSを動的に設定しません(このようなハイブリッド設定では実際には不可能です)。
auto eth0
iface eth0 inet static
address 10.152.187.122
netmask 255.255.255.0
gateway 10.152.187.1
dns-nameservers 10.152.187.1
dns-nameservers 8.8.8.8
dns-nameservers 8.8.4.4
...
TL; DR:ルーターのDHCP割り当てテーブルに静的なエントリが設定されていない限り、DHCP DNS、静的IPを取得する方法はありません。 /Macアドレス
また、他の情報を使用せずにDHCPからDNSサーバーを照会することに興味があります。
Dhcpcdはクエリを許可する可能性があります(dhcpcd -o domain_name_servers -T
)が、dhclientについては何も見つかりませんでした。
変更されたdhclient( ここGitHubで と ここでStack Overflow を参照)またはtest-client( このブログのように )または異なるスクリプト( Stack Overflowでこれを参照 )PowerShellソリューション ここindented.co.uk を見つけました。
これにより、Linuxで「基本」を使用することを考えるようになり、printf
を使用して細工されたdhcp-requestになりました。
一部のフィールドは偽物(mac aa:bb:cc:dd:ee:ffなど)ですが、オプション53 = 0x35(len 1/value 1 = Request)と55 = 0x37(len 1/value DNS for DNS)が含まれています。
ブロードキャストにはsocatが使用されます:
printf "\x1\x1\x6\x0\xd3\x44\x33\xeb\x0\x0\x80\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\xaa\xbb\xcc\xdd\xee\xff\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x0\x63\x82\x53\x63\x35\x01\x01\x37\x01\x06\xff" | socat - UDP4-DATAGRAM:255.255.255.255:67,broadcast
Simliar socatは、返信の受信に使用されます
socat -u udp-recv:68,reuseaddr -
または
socat -u udp-recv:68 - | dd bs=1 skip=$( printf "%d" 0xec )
Xxdを使用して、探していたものを見つけました...