web-dev-qa-db-ja.com

異なるインターフェイスでdhclientを使用してIPを更新する

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

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

私が行った場合:

dhclient -r && dhclient eth0

eth0のIPを更新します。次に、私がやりたいだけの場合:

dhclient eth1

エラーで失敗します:

dhclient(22421) is already running - exiting.

できます:

dhclient -r && dhclient eth1

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

今のところ、私がやりたいことを何とか実行できた唯一の方法は、eth0に対してdhclientを実行し、残酷に強制終了してeth1で実行することです。両方のインターフェースでIPを更新しました。

また、dhclient -xではなくdhclient -rを使用してテストしました。

確かに、これは進むべき道ではありません!

編集:

2つの回答がdhclient -r eth0 eth1 && dhclient eth0 eth1の実行を提案しました。これは、実際、これらのインターフェースへのブロードキャスト呼び出しを制限します。ただし、最初に応答するDHCPサーバーが使用される唯一のサーバーになるため、両方ではなく単一のインターフェイスに新しいIPが生成されます。ここを参照してください。両方のインターフェイスでDHCPDISCOVER呼び出しを確認できますが、DHCPREQUESTはDHCPサーバーが検出された最初のインターフェイス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.
16
Noé Malzieu

どちらか

dhclient -r && dhclient

または

dhclient -r eth0 eth1 && dhclient eth0 eth1

編集1:

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

12
Hauke Laging

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

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

dhclient man pageからの抜粋

dhclient [-4 | -6] [-S] [-N [-N ...]] [-T [-T ...]] [-P [-P ...]] [-pポート] [-d] [ -e VAR =値] [-q] [-1] [-r | -x] [-lf lease-file] [-pf pid-file] [-cf config-file] [-sf script-file] [-s server] [-g relay] [-n] [-nc] [ -nw] [-w] [-B] [-I dhcp-client-identifier] [-H Host-name] [-F fqdn.fqdn] [-V vendor-class-identifier] [-R request-option-リスト] [-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
4
slm