GNU/Linux >> Belajar Linux >  >> Debian

Solusi Debian 838871:Konfigurasi Jaringan Dhcp Tanpa Memblokir Proses Boot?

Apakah ada solusi untuk Bug Debian #838871?

Masalah:Saya ingin memiliki konfigurasi jaringan di Debian dengan properti berikut:

  • Secara otomatis mengaktifkan antarmuka jaringan saat kabel dicolokkan
  • boot tanpa memblokir untuk waktu yang lama ketika tidak ada kabel yang terhubung saat boot
  • tidak mengganti sistem init saya

Cara standar untuk melakukan ini adalah cuplikan berikut di /etc/network/interfaces :

allow-hotplug eth0
iface eth0 inet dhcp

Namun, ini mengarah ke masalah yang dijelaskan dalam laporan bug tertaut:Proses booting diblokir selama>1 menit ketika tidak ada kabel jaringan yang dicolokkan dengan pesan berikut:

configuring network interfaces... ifup: waiting for lock on /run/network/ifstate.eth0

Solusi yang diberikan dalam pertanyaan ini tampaknya mengubah allow-hotplug ke auto :

auto eth0
iface eth0 inet dhcp

Ini secara efektif membuat pesan pemblokiran boot menghilang, namun, sistem sekarang memblokir tepat sebelum prompt login ditampilkan di tty1. Kali ini dhclient memblokir karena mencoba mendapatkan balasan dhcp di eth0, yang tidak terhubung, dan menunggu beberapa kali hingga waktu habis. Prompt login hanya muncul setelah dhclient timeout.

Untuk pengguna dengan DE grafis, ini mungkin tidak menjadi masalah, karena mereka tidak perlu masuk ke tty1, sebaliknya DE mereka melakukan booting dan mereka tidak pernah melihat pesan dhclient.

Solusi lain mungkin menggunakan network-manager . Idealnya, saya lebih suka untuk tidak menggunakan networkmanager, tetapi sebagai upaya terakhir, saya mencobanya. Namun, pada buster Debian, rantai ketergantungan manajer jaringan bertentangan dengan sysvinit-core , yang merupakan sistem init saya.

Alternatif terakhir yang muncul di benak saya adalah tidak mengonfigurasi eth0 di antarmuka (5). Ini membuat semua blok boot hilang, namun, saya harus secara manual ifup eth0 setelah mencolokkan kabel ethernet.

Ada ide yang lebih baik?

PEMBARUAN:Untuk mengatasi kutipan dari @sourcejedi, "allow-hotplug" ditentukan untuk "memulai antarmuka ketika kernel mendeteksi peristiwa hotplug dari antarmuka" di dokumen Debian di bawah jaringan Debian. Pertanyaan terkait:Penjelasan terperinci yang bagus tentang /etc/network/interfaces sintaks? dan Apa yang dimaksud dengan acara hotplug dari antarmuka?

Jawaban yang Diterima:

Sebelum network-manager , cara terkenal untuk “secara otomatis ifup antarmuka jaringan saat kabel dicolokkan” adalah ifplugd . (Perhatikan penulis asli :-P). ifplugd masih tersedia di Debian. Saya tidak memiliki pengalaman baru-baru ini dengannya.

Pertama, Anda akan menghapus auto eth0 atau allow hotplug eth0 baris dari /etc/network/interfaces . Anda masih memerlukan baris iface eth0 inet dhcp . (Baris ini tergantung pada apa nama antarmuka jaringan Anda, dan juga jika Anda ingin menambahkan dukungan ipv6, dll).

Untuk mengkonfigurasi ifplugd untuk membuka antarmuka, edit /etc/default/ifplugd untuk menyetel INTERFACES= untuk menyertakan nama antarmuka jaringan Anda. Atau, ini menyarankan Anda untuk menggunakan nilai auto . Saya tidak tahu seberapa baik auto bekerja pada sistem terbaru apa pun :-).

Terkait:Setel batas waktu saat tertidur sebelum jaringan terputus?

https://manpages.debian.org/buster/ifplugd/ifplugd.conf.5.en.html

Fitur ini tidak pernah disediakan oleh allow-hotplug :

Perhatikan bahwa pemeriksaan status tautan tidak selalu ada, dan bagaimanapun juga hanya dilakukan saat boot. Itu tidak pernah mendukung kasus di mana tidak ada kabel yang terhubung saat boot, dan di mana Anda mencolokkan kabel di lain waktu. — Pesan #20

Sumber-sumber yang bertentangan ini hanya salah. Jika Anda menginginkan fitur ini, Anda perlu menjalankan daemon yang menunggu event “netlink”.[*] Debian ifupdown paket tidak termasuk daemon apa pun. allow-hotplug bergantung pada daemon udev, yang tidak membaca peristiwa netlink yang diperlukan.

Daemon udev hanya membaca acara "hotplug" udev ("uevent"). Tidak ada "uevent" ketika perangkat Ethernet mendeteksi perubahan status tautan. Anda dapat memverifikasi ini menggunakan udevadm monitor .

Pengembang kernel Linux membuat keputusan yang disengaja untuk tidak menyediakan "uevent" untuk ini. Lihat:Re:Q:netdev:generate kobject uevent pada event jaringan.

[*] Pedant:secara teknis ifplugd bekerja dengan polling status tautan secara berkala. Jadi tidak selalu bergantung pada event “netlink”. Perbedaan ini ditunjukkan oleh netplug , yang melakukannya gunakan acara "netlink". netplug tidak memiliki semua fitur yang sama dengan ifplugd .


Debian
  1. Dasar-dasar Linux - IP Statis dan Konfigurasi Jaringan di Debian Linux

  2. Debian – Bagaimana Cara Mem-boot Debian Ke Mode Teks Tanpa Menggunakan Gui?

  3. Instal Squid di Debian 6 'Squeeze'

  1. Cara mengatur alamat IP Statis di Debian Linux

  2. Konfigurasi Jaringan di Debian / Ubuntu / LinuxMint

  3. Konfigurasi jaringan untuk eth0 diubah menjadi DHCP setelah memutakhirkan RHEL/CentOS

  1. Jaringan tidak terkelola di Debian Linux – Solusi

  2. Debian – Bagaimana Menyembunyikan Proses Tertentu?

  3. File konfigurasi DHCP /etc/dhcp/dhcpd.conf dijelaskan