Không thể ifdown eth0 (giao diện chính)


51

Tôi không thể ifdowngiao diện trên Debian 6.0.5:

user@box:/etc/network$ sudo ifdown eth0 && sudo ifup eth0
ifdown: interface eth0 not configured
SIOCADDRT: File exists
Failed to bring up eth0.

user@box:/etc/network$ cat interfaces 
auto lo
iface lo inet loopback

allow-hotplug eth0 
allow-hotplug eth1 

auto eth0
iface eth0 inet static
address 10.0.0.1
netmask 255.255.255.0
gateway 10.0.0.254

auto eth1
iface eth1 inet manual

Theo yêu cầu của marco:

user@box:/etc/network/$ cat /run/network/ifstate 
lo=lo
eth1=eth1

4
/run/network/ifstatechứa cái gì?
Marco

Tôi đã cập nhật câu hỏi của mình với nội dung của tệp này, eth0 không có trong đó. Một "Google" nhanh chóng cho tôi biết ý nghĩa của tệp này (vì tôi chưa truy cập được trước đó), tôi nghĩ rằng tôi có thể thấy vấn đề ở đâu :)
jwbensley

@Marco; Điều này thực sự đã khắc phục vấn đề của tôi, nếu bạn đăng bài này thành câu trả lời tôi có thể đánh dấu nó là chính xác :)
jwbensley

Câu trả lời:


55

Kiểm tra nội dung của tập tin /run/network/ifstate. ifupifdownsử dụng tệp này để lưu ý giao diện mạng nào có thể được đưa lên và xuống. Do đó, ifupcó thể dễ dàng nhầm lẫn khi các công cụ mạng khác được sử dụng để hiển thị giao diện (ví dụ ifconfig).

Từ người đàn ông ifup

Chương trình lưu giữ các bản ghi về việc giao diện mạng lên hay xuống. Trong trường hợp đặc biệt, các hồ sơ này có thể trở nên không phù hợp với trạng thái thực của giao diện. Ví dụ: một giao diện được đưa lên bằng ifup và sau đó được cấu hình lại bằng cách sử dụng ifconfigvẫn sẽ được ghi lại khi lên. Để khắc phục điều này, bạn có thể sử dụng --forcetùy chọn để buộc ifup hoặc ifdownchạy các lệnh cấu hình hoặc cấu hình hóa mặc dù nó coi trạng thái hiện tại của giao diện là gì.


8
Để thêm vào câu trả lời này, tôi đã phải thêm eth0=eth0vào /run/network/ifstateđể nhận ra giao diện và cấu hình đúng. Câu trả lời này đã giúp tôi chỉ vào tập tin, nhưng không bao giờ đề xuất bổ sung đó, đó là điều đã giải quyết vấn đề tương tự của tôi.
David park

1
@DavidParks Bạn có chắc chắn giao diện được đánh dấu là autotrong /etc/network/interfaces? Nó sẽ xuất hiện trong /run/network/ifstatemà không cần phải sửa đổi tập tin theo cách thủ công.
Marco

1
--forcelà câu trả lời cho tôi; hóa ra ifupkhông đưa giao diện lên ngay từ đầu vì lệnh không thành công /etc/network/if-pre-up.d; may mắn là tôi có mạng lưới
sanmai

32

ifdownlà một chương trình cấp cao, thực hiện rất nhiều thứ bạn có thể không cần. Ngoài ra, nó không có sẵn ở mọi nơi. Cách di động hơn có thể làm việc cho bạn:

$ sudo ifconfig eth0 down

Nếu sau đó bạn không thể ifup, bạn có thể có một số vấn đề cấu hình. Tự đưa nó lên có ifconfig eth0 uplẽ không phải là điều đúng trong trường hợp đó. Trên Debian, ifuplà một tệp thực thi nhị phân, vì vậy bạn có thể phải stracetìm ra nó bị treo ở đâu:

$ sudo strace -e open ifup eth0

Điều đó sẽ cho bạn biết tập tin nào ifupđang mở trong khi nó hoạt động, điều này có thể khiến bạn gặp vấn đề.

Trên các hệ thống khác (ví dụ: RHEL và các công cụ phái sinh) ifuplà một tập lệnh shell, vì vậy việc gỡ lỗi dễ dàng hơn nhiều:

# sh -x `which ifup` eth0

Chạy một kịch bản shell với sh -xnó làm cho nó in mọi dòng nó chạy, vì vậy bạn có thể theo dõi việc thực thi.


Một câu trả lời bẻ khóa, nhưng Marco đã tìm ra vấn đề. Tôi đã thử sudo ifconfig eth0 down && sudo ifconfig eth0 upcái mà sẽ lật giao diện lên xuống nhưng tôi đang cố gắng tự kích hoạt một tập lệnh if-up mà tôi đã viết và điều đó không làm được. Sau khi cập nhật tệp / etc / network / run / ifstate, ifdown / up hoạt động ngay bây giờ. Cảm ơn thông tin của bạn mặc dù! :)
jwbensley

Quên nói, ý tưởng tuyệt vời với tùy chọn -x! Cảm ơn!
jwbensley

1
ifdownlà một chương trình cấp cao, có rất nhiều thứ mà bạn có thể cần. ifconfig eth0 downdễ mang theo hơn và luôn có thể chạy, nhưng nó không thực hiện các nhiệm vụ dọn dẹp ifdowncó thể làm.
Gilles 'SO- ngừng trở nên xấu xa'

Tôi không có ý đề nghị bạn sử dụng ifconfigmọi lúc, tránh ifup/down. Tôi đề nghị nó chỉ là một bước xử lý sự cố. Theo tôi hiểu vấn đề, hóa ra đó là kết quả của việc sử dụng ifconfigthay vì ifup/down, do đó gây nhầm lẫn cho các cơ chế cấp cao. Nhưng, tôi đã không biết rằng khi tôi đăng câu trả lời của mình.
Warren Young

20

Tôi đã thấy điều này trước đây khi ethX không được cấu hình đúng /etc/network/interfaces. Điều này cần một cái gì đó như: -

auto eth0
   iface eth0 inet dhcp

Ngay cả với một /etc/network/interfacestệp được cấu hình không đúng , bạn vẫn có thể đưa xuống eth0 với:

$ sudo ip link set eth0 down

Đây chính xác là thứ đã xảy ra với tôi. Tôi quên để nối nó với auto. Cảm ơn.
Mike

2

Đối với bất cứ ai đấu tranh với vấn đề này:

Tôi đã kiểm tra tệp ifstate. "Tên giao diện" tại / run / mạng.

Nó trống nên tôi đã đưa tệp "tên giao diện" (eth0) vào tệp ifstate. "Tên giao diện" tại / run / mạng.


1

Thêm eth0=eth0vào /run/network/ifstate. Điều này làm việc cho tôi


0

Những gì tôi tìm thấy đã giúp tôi là gọi rmlệnh để xóa tệp khóa trong/run/network/

Làm ls -lavà bạn sẽ thấy một .ifstatetập tin ẩn hoặc một cái gì đó dưới tên đó.

Xóa nó và sau đó thử: ifdown && ifup

Nếu bạn lo lắng, bạn có thể phá vỡ thứ gì đó chỉ cần tạo một bản sao của tệp đó bên ngoài thư mục và xóa tệp trong thư mục.

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.