Cách bỏ qua DHCP nếu không có cáp kết nối với ethernet trong Debian


12

Linux của tôi đang lãng phí thời gian khi đăng nhập để cố gắng thuê DHCP cho giao diện eth0 không được kết nối. Vâng, cáp mở rộng được kết nối với nó, nhưng không có gì ở đầu bên kia.

Tôi có

auto eth0
iface eth0 inet dhcp 

được đặt trong tôi /etc/network/interfacesvì tôi muốn nó nhận ethernet trong trường hợp nó được kết nối, nhưng tôi chắc chắn không muốn làm chậm quá trình khởi động hệ thống nếu cáp không được kết nối với ethernet. Tôi giả định hệ thống sẽ tự động biết điều này và sẽ không cố gắng thuê DHCP cho giao diện.

Đây là những gì tôi thấy tại thời điểm tải (xem ba dòng cuối cùng):

nhập mô tả hình ảnh ở đây

Sau khi hiểu rằng hợp đồng thuê sẽ không đến, nó sẽ tiếp tục khởi động.

Có cách nào tôi có thể bảo nó không với DHCP nếu không có cáp được kết nối không?

Câu trả lời:


16

Nếu bạn chỉ định

allow-hotplug eth0

thay vì

auto eth0

trong /etc/network/interfaces, sau đó kết nối sẽ chỉ được khởi xướng bởi udevkhi một cái gì đó trigger nó, thay vì ở mỗi khởi động.

Điều đó có thể đủ để xử lý trường hợp của bạn, nhưng không nhất thiết phải như vậy; các interfacesmanpage nói rằng

(Các giao diện được đánh dấu "cho phép hotplug" được đưa lên khi udev phát hiện ra chúng. Điều này có thể là trong khi khởi động nếu giao diện đã có sẵn, hoặc sau đó, ví dụ như khi cắm thẻ mạng USB. Xin lưu ý rằng điều này không xảy ra không liên quan gì đến việc phát hiện cáp mạng đang được cắm.)

Bạn có thể cần phải sử dụng /etc/network/if-up.d/00check-network-cabletừ các ifupdown-extragói để bỏ qua giao diện nếu không có cáp được kết nối.


Nếu cáp đã được kết nối trước khi khởi động thì sao? Một udevsự kiện sẽ kích hoạt kết nối tại thời điểm khởi động trong trường hợp đó? Nói cách khác, udevkiểm tra xem thiết bị nào đã được kết nối với cổng của máy chưa?
Joseph R.

0

Luôn luôn có nhiều hơn một giải pháp cho vấn đề.

Nếu bạn ở với máy này luôn ở một nơi, như nhà, thì cách dễ nhất là thoát khỏi gói dhcp-client và đặt địa chỉ IP tĩnh, mặt nạ, cổng. Giả sử bạn không cần nó, bạn sẽ làm một cái gì đó như

apt-get remove isc-dhcp-client

Điều này sẽ cho bạn biết đầu tiên, nếu có bất kỳ sự phụ thuộc nào. Khi bạn đã gỡ cài đặt gói, bạn sẽ không còn phải chờ trong khi khởi động.

Đây là ví dụ về những gì bạn sẽ thiết lập trong /etc/network/interfaces

iface eth0 inet static
    address 192.168.0.2
    netmask 255.255.255.0
    gateway 192.168.0.254

Nguồn: https://wiki.debian.org/DHCP_Client


Như đã đề cập trong câu hỏi, tôi muốn sử dụng DHCP nếu cáp ethernet được kết nối. Vì vậy, loại bỏ ứng dụng khách DHCP sẽ không giúp tôi.
Maxim V. Pavlov

0

Có một cái nhìn tại ifplugd:

ifplugd là một trình nền Linux sẽ tự động định cấu hình thiết bị ethernet của bạn khi cắm cáp và tự động hủy cấu hình nếu cáp được kéo. Điều này rất hữu ích trên máy tính xách tay có bộ điều hợp mạng trên bo mạch, vì nó sẽ chỉ cấu hình giao diện khi cáp thực sự được kết nối.

ifplugd ifplugd giao diện với các tiện ích cấu hình mạng gốc phân phối của bạn.

Một số tính năng:

  • Sử dụng các chương trình ifup / ifdown gốc phân phối của bạn.
  • Có thể tiếng bíp khi rút cáp, cắm, cấu hình giao diện thành công hoặc thất bại.
  • Hỗ trợ Linux SIOCETHTOOL (mới hơn, còn gọi là API ethtool), SIOCGMIIREG (cũ hơn, còn gọi là API mii-diag / mii-tool) và SIOCDEVPRIVATE (cũ nhất, còn gọi là API công cụ mii) ioctl (). Phiên bản 0.24 giới thiệu hỗ trợ phát hiện liên kết với cờ giao diện IFF_RUNNING.
  • Hỗ trợ nhật ký hệ thống
  • Chương trình nhỏ - nhị phân chỉ là 25 KB (cộng thêm 16 KB cho libdaemon).
  • Hỗ trợ nhiều giao diện ethernet
  • Có thể được định cấu hình để bỏ qua các khoảng thời gian "rút phích cắm" ngắn (tùy chọn -d) hoặc thời gian "cắm" ngắn (tùy chọn -u)
  • Hỗ trợ cho mạng không dây. Bất cứ khi nào liên kết đến AP được phát hiện, mạng được cấu hình. Hãy xem waproamd nếu bạn cần một cơ sở để cấu hình các khóa WEP trước khi các hiệp hội AP thành công.
  • Chế độ tương thích cho các thiết bị mạng không hỗ trợ phát hiện cáp (tùy chọn -F)

Gói Tìm kiếm gói Debian Trang: ifplugd .
Trang web ifplugd chính thức

An apt-get update && apt-get-install ifpludnên làm mánh khóe. Bên cạnh đó, người tạo ra systemd duy trì gói này.


2
Tôi đủ điều kiện là "... được sử dụng để duy trì gói này" kể từ lần phát hành cuối cùng là mười năm trước ;-). Ngày nay, Lennart có thể sẽ khuyên bạn systemd-networkd... Với ifplugd, sau khi cài đặt, bạn cũng cần định cấu hình thiết bị của mình (chỉ định allow-ifplugdtrong /etc/network/interfaces).
Stephen Kitt

@StephenKitt bạn đã sử dụng allow-ifplugdhoặc xem mã chưa? Trong khi tìm kiếm, tôi chỉ tìm thấy bug.debian.org/cgi-bin/orpreport.cgi?orms=468896 , cho biết allow-ifplugdtính năng này không được chấp nhận.
nguồn
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.