ネットワークに接続された2つのインターフェイス(eth0、eth1)を備えたUbuntu 12.04サーバーを実行しているマシンがあります。私たちのネットワークは、FreeBSDベースのDHCPサーバーがリースを配布し、クライアントが提供するホスト名を同じネットワーク上のDNSサーバーに登録するように設定されています。
DNSに両方を登録するには、2つのインターフェースに異なるホスト名が必要です。/etc/network/interfacesにeth1のホスト名を追加しました:
# The primary network interface (hostname: Host0)
auto eth0
iface eth0 inet dhcp
# Secondary interface
auto eth1
iface eth1 inet dhcp
hostname Host1
Dhcpクライアントの構成は次のようになります。
option rfc3442-classless-static-routes code 121 = array of unsigned integer 8;
send Host-name "<hostname>";
request subnet-mask, broadcast-address, time-offset, routers,
domain-name, domain-name-servers, domain-search, Host-name,
netbios-name-servers, netbios-scope, interface-mtu,
rfc3442-classless-static-routes, ntp-servers,
dhcp6.domain-search, dhcp6.fqdn,
dhcp6.name-servers, dhcp6.sntp-servers;
取得したリースは次のようになります。
# /var/run/resolvconf/interface/eth0.dhclient
lease {
interface "eth0";
fixed-address 192.168.28.249;
option subnet-mask 255.255.255.0;
option routers 192.168.28.30;
option dhcp-lease-time 129600;
option dhcp-message-type 5;
option domain-name-servers 192.168.28.1,192.168.24.58;
option dhcp-server-identifier 192.168.28.1;
option ntp-servers 192.168.28.1,192.168.58.43,192.168.24.58;
option broadcast-address 192.168.28.255;
option domain-name "some.org";
renew 4 2014/02/20 01:00:39;
rebind 4 2014/02/20 15:31:19;
expire 4 2014/02/20 20:01:19;
}
# /var/run/resolvconf/interface/eth1.dhclient
lease {
interface "eth1";
fixed-address 192.168.19.69;
option subnet-mask 255.255.255.0;
option routers 192.168.19.30;
option dhcp-lease-time 129600;
option dhcp-message-type 5;
option domain-name-servers 192.168.28.1,192.168.24.58;
option dhcp-server-identifier 192.168.28.1;
option ntp-servers 192.168.28.1,192.168.58.43,192.168.24.58;
option broadcast-address 192.168.19.255;
option domain-name "some.org";
renew 3 2014/02/19 21:56:46;
rebind 4 2014/02/20 15:30:42;
expire 4 2014/02/20 20:00:42;
}
私はFreeBSD DHCPサーバーを制御できませんが、リースは次のように記録されていると言われています。
#####################
lease 192.168.28.249 {
starts 5 2014/02/14 03:24:14;
ends 6 2014/02/15 15:24:14;
cltt 5 2014/02/14 03:24:14;
binding state active;
next binding state free;
hardware ethernet 00:01:02:03:04:12;
set ddns-rev-name = "249.28.168.192.in-addr.arpa.";
set ddns-fwd-name = "Host0.dhcp.some.org";
client-hostname "Host0";
on expiry or release {
switch (ns-update (delete (1, 12, ddns-rev-name, null))) {
case 0:
unset ddns-rev-name ;
break;
}
switch (ns-update (delete (1, 1, ddns-fwd-name, leased-address))) {
case 0:
unset ddns-fwd-name ;
break;
}
on expiry or release;
}
}
lease 192.168.19.69 {
starts 4 2014/02/13 14:40:47;
ends 6 2014/02/15 02:40:47;
cltt 4 2014/02/13 14:40:47;
binding state active;
next binding state free;
hardware ethernet 00:01:02:03:04:14;
client-hostname "Host0";
}
#####################
サーバー側の両方のリースで、client-hostnameの値は「Host0」です。リースは、192.168.28.0と192.168.19.0の2つの異なるサブネットに配布されていることに注意してください。
/ etc/network/interfaces構成は、セカンダリインターフェースのホスト名をDHCPサーバーに送信するために必要なすべてですか?もしそうなら、デバッグするためにクライアント側で他に何をチェックすべきですか?
(IPアドレスとMACアドレスは、実際の値を非表示にするように変更されました)
/etc/network/interfaces
でオプションを設定するだけで、希望どおりの結果が得られるかどうかは100%わかりません。
理論的には、/etc/dhcp/dhclient.conf
を編集することで可能です。次のようなスタンザを追加してみてください:
interface "eth0" {
send Host-name "Host0";
}
interface "eth1" {
send Host-name "Host1";
}
そのファイルの他のホスト名オプションがコメント化されていることを確認し、/etc/network/interfaces
で指定したホスト名を削除します。
Linuxでは、物理インターフェイスに仮想インターフェイスを追加し、それらを個別に構成および管理できます(長い間忘れられていた理由から、しばらくの間、同じケーブル上で実行されている2つの異なるIPネットワークにワークステーションを設置していました)。したがって、2つのイーサネットカードは実際には必要ありません。おそらく相互に干渉するだけです。
DHCPが仮想インターフェイスを構成できるかどうかわかりません。私はそうは思わないでしょうが、その使命はネットワークパラメータを割り当てることであり、おそらく一般的なケースのみをカバーします。
Isc-dhcp-clientを削除してdhcpcdを切り替え、ネットワーク/インターフェースのホスト名が機能するようになりました。