Sự khác biệt giữa các lệnh 'ifconfig' và 'ip'


19

Tôi đã đọc một số bài viết / hướng dẫn về lệnh 'ifconfig', hầu hết chúng đều có một tuyên bố chung -

"ifconfig không được dùng bởi lệnh ip"

và đề nghị học lệnh ip. Nhưng không ai trong số họ giải thích cách 'ip' mạnh hơn 'ifconfig'.

Sự khác biệt giữa cả hai là gì?



Câu trả lời:


21

ifconfiglà từ net-tools, mà đã không thể theo kịp với ngăn xếp mạng Linux trong một thời gian dài. Nó cũng vẫn sử dụng ioctlcho cấu hình mạng, đây là một cách tương tác xấu xí và kém mạnh mẽ hơn với kernel.

Rất nhiều thay đổi trong mã mạng Linux và rất nhiều tính năng mới không thể truy cập bằng cách sử dụng net-tools: định tuyến đa đường, định tuyến chính sách (xem RPDB). routecho phép bạn làm những việc ngu ngốc như thêm nhiều tuyến đường vào cùng một đích, với cùng một số liệu.

Ngoài ra:

  • ifconfig không báo cáo địa chỉ phần cứng thích hợp cho một số thiết bị.
  • Bạn không thể cấu hình ipip, sit, gre, l2tpvv hầm tĩnh trong kernel.
  • Bạn không thể tạo tunhoặc tapthiết bị.
  • Cách thêm nhiều địa chỉ vào một giao diện nhất định cũng có ngữ nghĩa kém.
  • Bạn cũng không thể định cấu hình hệ thống kiểm soát lưu lượng Linux bằng net-toolsmột trong hai.

Xem cũng ifconfighút .

EDIT : Đã xóa xác nhận về việc net-toolsngừng phát triển mà đến bây giờ tôi đã quên mất nơi tôi nhận được cho bài đăng này. net-tools'đã được làm việc kể từ khi iproute2được phát hành, mặc dù chủ yếu là sửa lỗi và các cải tiến và tính năng nhỏ, như quốc tế hóa.


NET-3 net-tools không phải là duy nhất ifconfig. Chẳng hạn, có một cái khác trong GNU inetutils. Và điều đó không phải tất cả. unix.stackexchange.com/a/504084/5132
JdeBP

7

ifconfiglà một lệnh truyền thống để hiển thị thông tin về giao diện mạng và thay đổi một số cài đặt. Đặc biệt, nó có thể mang giao diện lên xuống. Nó tồn tại trên hầu hết các biến thể unix.

Trên Linux, ifconfiglệnh đã không phát triển trong một thời gian dài. Nó vẫn hoàn toàn tốt cho những gì nó làm. Nếu bạn đang sử dụng ifconfigcho một cái gì đó, không có lý do để dừng lại.

Linux cũng cung cấp iplệnh từ bộ công cụ iproute2 . Các iplệnh kết hợp một số lệnh cổ điển và nhiều hơn nữa, bao gồm ifconfig, routearp. ipcó thể làm nhiều hơn thế ifconfig. Mặt khác, ipkhông phải lúc nào cũng có mặt, đặc biệt là trên các hệ thống nhúng (và không bao giờ trên các biến thể unix khác với Linux).

Phân tích cú pháp ifconfigđầu ra hơi tệ. Phân tích cú pháp ipđầu ra hơi tệ. Không có người chiến thắng ở đó.


Tôi đã luôn nghĩ rằng việc phân tích cú pháp ipđầu ra khá đơn giản và chắc chắn là rất đơn giản ifconfig. Tôi cũng thích rằng trong nhiều trường hợp, đầu ra của một iplệnh có thể được sử dụng làm đầu vào cho một iplệnh khác với rất ít hoặc không sửa đổi (ví dụ: mỗi dòng ip route showcó thể được sử dụng làm đối số cho ip route add).
Patrick

1
@Patrick phân tích cú pháp ip route, và ip ruleđầu ra khá rõ ràng và khá dễ phân tích. Nhưng ip link, hoặc ip addrlà một nỗi đau. Tôi thực sự mong muốn ai đó sẽ gửi một bản vá hoặc một cái gì đó để ip addrin ra các tuyên bố chính xác, có lẽ với một công tắc, rằng bạn sẽ sử dụng thiết lập cấu hình hiện tại, giống như bạn nhận được ip route show.
Zoredache

5

Chỉ cần thêm một số bit vào câu trả lời của pilona. Khoảng năm 2005, một cơ chế mới để kiểm soát ngăn xếp mạng đã được giới thiệu - ổ cắm netlink .

Để cấu hình giao diện mạng, hãy iproute2sử dụng cơ chế ổ cắm mạng song công hoàn toàn đó, trong khi ifconfigdựa vào một ioctlcuộc gọi hệ thống. Dưới đây là 2 bài báo chính về động lực đằng sau netlinkviệc sử dụng rtnetlink .

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.