異なるインターフェイス上のdhclientでIPを更新する


16

コンピューターに2つのインターフェイスがeth0ありeth1ます。

両方のサブネットにDHCPサーバーがあります。dhclient両方のインターフェイスのIPアドレスを更新するにはどうすればよいですか?

私が行った場合:

dhclient -r && dhclient eth0

IPを更新しますeth0。その後、私がちょうどしたい場合:

dhclient eth1

エラーで失敗します:

dhclient(22421) is already running - exiting.

できます:

dhclient -r && dhclient eth1

しかし、このdhclient -r部分はリースを解放し、私もIPアドレスを失いeth0ます。

今のところ、私がやりたいことを何とかしてやれる唯一の方法は、実行dhclienteth0、残酷にそれを殺し、それを実行することeth1です。両方のインターフェースでIPが更新されます。

dhclient -x代わりにをテストしましたがdhclient -r、運はありません。

確かに、これは行く方法ではありません!

編集:

dhclient -r eth0 eth1 && dhclient eth0 eth1 これを行うことを提案する2つの答えは、実際、これらのインターフェイスへのブロードキャスト呼び出しを制限します。ただし、最初に応答するDHCPサーバーのみが使用されるため、両方ではなく単一のインターフェイスに新しいIPが作成されます。ここを参照してください、DHCPDISCOVER両方のインターフェイスで呼び出しを確認できますが、DHCPサーバーが見つかった最初のインターフェイスでDHCPREQUESTのみ行われeth0ます:

Listening on LPF/eth0/0a:00:27:00:00:00
Sending on   LPF/eth0/0a:00:27:00:00:00
Listening on LPF/eth1/84:8f:69:d3:d4:a1
Sending on   LPF/eth1/84:8f:69:d3:d4:a1
Sending on   Socket/fallback
DHCPDISCOVER on eth0 to 255.255.255.255 port 67 interval 5 (xid=0x170fcb67)
DHCPDISCOVER on eth1 to 255.255.255.255 port 67 interval 4 (xid=0x115a24c3)
DHCPREQUEST on eth0 to 255.255.255.255 port 67 (xid=0x170fcb67)
DHCPOFFER from 192.168.1.1
DHCPACK from 192.168.1.1 (xid=0x170fcb67)
bound to 192.168.1.4 -- renewal in 1710 seconds.

回答:


11

どちらか

dhclient -r && dhclient

または

dhclient -r eth0 eth1 && dhclient eth0 eth1

編集1:

次の試行:インスタンスの1つで異なるファイルを使用することで、「dhclient(22421)is running-exiting」エラーを取り除くことができます。使用PATH_DHCLIENT_PIDしてPATH_DHCLIENT_DBそれらを分離するための変数(またはeqivalentコマンドラインオプション、manページを参照してください)。


問題は、これにより、dhclientはパケットを送信して、dhcpサーバーを両方のインターフェースでブロードキャストとして検出するが、最初に受信したサーバーで停止することです。eth0 ipにはeth0経由で受信した最初のサーバーを使用し、eth1 ipにはeth1経由で受信した最初のサーバーを使用します。
ノエマルジュー

私は明確ではなかった場合:それは、両方のインターフェイスでDHCPDISCOVERを送信しますが、それだけがDHCPサーバからの応答を受信する上で最初のインターフェイスでDHCPREQUESTを送信する
ノエマルジュー

@NoéMalzieu質問にその情報を入れるべきです。ちょっとおかしい:役に立たない回答 "worth 11K rep"を受け取りました。それは毎日起こるわけではありません:
Hauke Laging

@HaukeLaging-誰の答えはあなたが役に立たないと言っていますか8-)。
slm

@NoéMalzieu編集をご覧ください。
ハウケレイジング

4

アイデア#1:dhclientに2つのインターフェースを渡してみてください

マニュアルページを見ると、dhclient使用例の最後にビットがあり[ if0 [ ...ifN ]ます。これはdhclient、実行したい複数のインターフェースを実行して渡すことができることを意味します。

dhclientのmanページからの抜粋

dhclient [-4 | -6] [-S] [-N [-N ...]] [-T [-T ...]] [-P [-P ...]] [-pポート] [-d] [ -e VAR = value] [-q] [-1] [-r | -x] [-lfリースファイル] [-pf pidファイル] [-cf構成ファイル] [-sfスクリプトファイル] [-sサーバー] [-gリレー] [-n] [-nc] [ -nw] [-w] [-B] [-I dhcp-client-identifier] [-H host-name] [-F fqdn.fqdn] [-V vendor-class-identifier] [-R request-option- list] [-timeout timeout] [-v] [--version] [if0 [... ifN]]

したがってdhclient、複数のインターフェースでリリースし、それらに接続することもできるはずです。

dhclient -r eth0 eth1
dhclient eth0 eth1

アイデア#2:NetworkManagerの仕組みを見てください

NetworkManager dhclientが私のシステムでどのようにセットアップされるかを以下に示します。引数を指定して2番目のdhclientを明示的に呼び出すこともできます。

/sbin/dhclient -d -4 \
   -sf /usr/libexec/nm-dhcp-client.action \
   -pf /var/run/dhclient-wlan0.pid \
   -lf /var/lib/dhclient/dhclient-01f0476d-04bf-4ce7-8ced-844fae73f430-wlan0.lease \
   -cf /var/run/nm-dhclient-wlan0.conf wlan0

ご回答有難うございます。しかし、@HaukeLaging答えに私のコメントを確認してください
ノエマルジュー

@NoéMalzieu-2番目のdhclientからの詳細な出力を確認できますか?dhclient -r && dhclient eth0 && dhclient -v eth1
slm

これにより、第2のクライアントは言うdhclient(1155) is already running - exiting.
ノエマルジュー

ええ、それは私にとっても同じことをしています。
slm
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.