私のコンピューターにはeth0
とeth1
の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.
どちらか
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ページを参照)でそれらを分離します。
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
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