Perpanjang IP dengan dhclient pada antarmuka yang berbeda

16

Saya memiliki dua antarmuka di komputer saya, eth0dan eth1.

Kedua subnet memiliki server DHCP. Bagaimana saya bisa menggunakan dhclientuntuk memperbarui alamat IP untuk kedua antarmuka?

Jika aku melakukan:

dhclient -r && dhclient eth0

Memperbarui IP aktif eth0. Lalu, jika saya hanya ingin melakukan:

dhclient eth1

Gagal dengan kesalahan:

dhclient(22421) is already running - exiting.

Dapat saya lakukan:

dhclient -r && dhclient eth1

Tetapi dhclient -rbagian ini melepaskan kontrak dan saya kehilangan alamat IP eth0juga.

Untuk saat ini, satu-satunya cara saya telah berhasil melakukan apa yang saya inginkan adalah untuk menjalankan dhclientuntuk eth0, brutal membunuhnya, dan menjalankannya pada eth1: Aku berakhir dengan IP baru pada kedua interface.

Saya juga diuji dengan dhclient -xbukannya dhclient -r, tidak berhasil.

Tentunya, ini bukan cara untuk pergi!

EDIT:

Dua jawaban yang disarankan untuk melakukan dhclient -r eth0 eth1 && dhclient eth0 eth1 ini, memang membatasi panggilan siaran ke antarmuka ini. Tetapi server DHCP pertama yang menjawab akan menjadi satu-satunya yang digunakan, sehingga menghasilkan IP baru pada satu antarmuka dan tidak keduanya. Lihat di sini, kita dapat melihat DHCPDISCOVERpanggilan pada kedua antarmuka, tetapi DHCPREQUESThanya dilakukan pada eth0, antarmuka pertama melalui mana server DHCP ditemukan:

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.
Noé Malzieu
sumber

Jawaban:

11

Antara

dhclient -r && dhclient

atau

dhclient -r eth0 eth1 && dhclient eth0 eth1

Edit 1:

Percobaan berikutnya: Anda mungkin dapat menyingkirkan kesalahan "dhclient (22421) yang sudah berjalan - keluar" dengan membuat salah satu contoh menggunakan file yang berbeda. Gunakan PATH_DHCLIENT_PIDdan PATH_DHCLIENT_DBvariabel (atau opsi baris perintah eqivalent, lihat halaman manual) untuk memisahkan mereka.

Hauke ​​Laging
sumber
Masalahnya adalah bahwa dengan ini, dhclient mengirimkan paket untuk menemukan server dhcp sebagai siaran pada kedua antarmuka memang, tetapi berhenti dengan server yang diterima PERTAMA. Saya ingin menggunakan server pertama yang diterima melalui eth0 untuk eth0 ip, dan server pertama yang diterima melalui eth1 untuk eth1 ip.
Noé Malzieu
Jika saya tidak jelas: ia mengirim DHCPDISCOVER pada kedua antarmuka tetapi mengirim DHCPREQUEST hanya pada antarmuka pertama yang menerima jawaban dari server dhcp
Noé Malzieu
@ NoéMalzieu Anda harus memasukkan informasi itu dalam pertanyaan Anda berapa pun harganya. Agak lucu: Anda mendapat jawaban tidak berguna "senilai 11K perwakilan"; itu tidak terjadi setiap hari :-)
Hauke ​​Laging
@ HaukeLaging - siapa jawaban yang Anda panggil tidak berguna 8-).
slm
@ NoéMalzieu Lihat hasil edit saya.
Hauke ​​Laging
4

Ide # 1: Coba lewati 2 antarmuka ke dhclient

Jika Anda melihat halaman manual untuk dhclientAnda akan melihat bahwa pada akhir penggunaan contoh bit [ if0 [ ...ifN ]. Ini menyiratkan bahwa Anda dapat menjalankan dhclientdan mengirimkannya beberapa antarmuka yang ingin Anda jalankan.

kutipan dari halaman manual dhclient

dhclient [-4 | -6] [-S] [-N [-N ...]] [-T [-T ...]] [-P [-P ...]] [-p port] [-d] [ -e VAR = nilai] [-q] [-1] [-r | -x] [-lf sewa-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- daftar] [batas waktu habis] [-v] [- versi] [if0 [... ifN]]

Jadi, Anda harus bisa dhclientmelepaskan pada banyak antarmuka dan menghubungkannya juga.

dhclient -r eth0 eth1
dhclient eth0 eth1

Gagasan # 2: Lihatlah bagaimana NetworkManager melakukannya

Inilah cara NetworkManager mengatur dhclientsistem saya. Anda dapat mencoba memanggil dhclient kedua secara eksplisit dengan argumen.

/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
slm
sumber
Terima kasih atas jawaban anda. Namun, silakan periksa komentar saya pada jawaban @ HaukeLaging
Noé Malzieu
@ NoéMalzieu - Bisakah kita melihat keluaran verbose dari dhclient ke-2? dhclient -r && dhclient eth0 && dhclient -v eth1
slm
Dengan ini, klien kedua berkatadhclient(1155) is already running - exiting.
Noé Malzieu
Ya itu melakukan hal yang sama untukku juga.
slm