thay đổi tên của giao diện mạng, whianzy whianzy


14

Tôi đang cố gắng đặt tên cho một giao diện, "ethLan" thay vì eth0. Làm như vậy cũng đảm bảo rằng tên if sẽ vẫn nhất quán ở mỗi lần khởi động lại và kernel.

Tôi đã tìm thấy một số bài viết trong chủ đề này, nhưng tất cả chúng đều có một vài năm tuổi:
http : //www.debian-ad dùng.org / articles / 463
http://www.linuxfromscratch.org/hints/doads/files/ tênif.txt

Tôi đã làm như họ nói và thêm mac ethLan vào / etc / mactabs / . Tại thời điểm này tôi có hai vấn đề:
1) if [...] && /sbin/nameifKịch bản tôi đặt tại /etc/network/if-pre-up.d/ không chạy. Tôi đã giải quyết điều này bằng cách thêm phần này vào /etc/init.d/networking , nhưng tại sao if-pre-up.d không hoạt động?
2) Giao diện sẽ không tải trừ khi tôi tự làm ifconfig ethLan , mặc dù đã thêm nó vào / etc / network / interface . Tôi đang làm gì sai?

Câu trả lời:


17

Các bài viết bạn tìm thấy có phần lỗi thời. Hiện tại có một phương pháp dễ dàng để gán tên cho các giao diện mạng, thông qua Udev .

Trên Debian và các công cụ phái sinh (bao gồm Ubuntu), hãy tìm một tệp có tên /etc/udev/rules.d/70-persistent-net.rules. Tập tin này được tạo ra /lib/udev/rules.d/75-persistent-net-generator.rulesvới sự trợ giúp của tập lệnh /lib/udev/write_net_rules. Mỗi lần udev nhìn thấy một thiết bị mạng mới, nó sẽ gán cho nó một số mới và nối thêm số đó vào /etc/udev/rules.d/70-persistent-net.rules. Bằng cách đó, số giao diện vẫn tồn tại trong suốt quá trình khởi động lại và sẽ tồn tại sau khi cài đặt lại nếu bạn khôi phục /etc.

(Nếu bản phân phối của bạn không gửi các tệp này, hãy tìm chúng trong gói Debian .)

Nếu bạn muốn đặt một cái tên có ý nghĩa cho một giao diện và bạn có /etc/udev/rules.d/70-persistent-net.rules, tất cả những gì bạn cần làm là chỉnh sửa tệp đó và thay đổi "eth0"thành "ethLan". Chạy udevadm trigger --sysname eth0để đổi tên thiết bị hiện có sau khi bạn chỉnh sửa tệp (Tôi nghĩ rằng điều này đòi hỏi phải tắt giao diện). Nếu bạn không có tệp đó, bạn có thể tự viết khớp một dòng (các tập lệnh phức tạp mà Debian thêm vào chỉ để thực hiện việc này một cách tự động):

SUBSYSTEM=="net", DRIVERS=="?*", ATTR{address}=="01:23:45:67:89:ab", NAME="ethLan"

1
Nếu bạn muốn một danh sách tiện dụng các thuộc tính có thể sử dụng trong các quy tắc udev, bạn có thể thử một cái gì đó như udevadm info -a /sys/class/net/eth0. (xem udevadm(8)chi tiết)
Austin Adams

1
Câu hỏi nêu rõ là dành cho Wheezy, nhưng có thể đáng lưu ý rằng câu trả lời này không còn hợp lệ đối với Debian và Ubuntu mới hơn. Bắt đầu với việc đặt tên giao diện systemd 220-7 cần phải được thực hiện thông qua các phương tiện khác.
sampi

@sampi Câu trả lời của tôi vẫn áp dụng cho Debian jessie (bản phát hành ổn định hiện tại). Có phải nó thất bại khi kéo dài, hoặc nó chỉ đề xuất một phương pháp không dùng nữa? Bạn có biết bản phát hành Ubuntu nào bị cắt không?
Gilles 'SO- ngừng trở nên xấu xa'

@Gilles Tôi đã không đào sâu đủ vào các chi tiết để biết liệu nó thực sự thất bại hay chỉ đơn thuần là một sự phản đối được đề nghị. Có vẻ như Ubuntu Wily và mới hơn sử dụng systemd cao hơn 220-7 .
sampi

6

Đối với những người đi qua bài đăng này thông qua một công cụ tìm kiếm, như tôi:

Trong Debian căng và mới hơn, bạn có thể sử dụng các tệp systemd .link để đổi tên các thiết bị. Xem https://manpages.debian.org/stretch/udev/systemd.link.5.en.html cho trang chủ.

Một ví dụ:

cat /etc/systemd/network/10-uplink0.link 
[Match]
MACAddress=00:0d:b9:49:8a:18

[Link]
Name=uplink0

Đừng quên chạy update-initramfs -usau đó để nhúng các tệp cấu hình được cập nhật này vào initramfs của bạn, nơi chúng sẽ được áp dụng.


Nếu các tập tin liên kết có mặt trong một hệ thống với udev.rules.d thì cái nào sẽ được ưu tiên?
vfclists

1

Có một cách đơn giản hơn để làm điều đó với một gói có tên ifrename. Nó có một udevtệp cấu hình (từ ) riêng biệt và bạn có thể sử dụng địa chỉ MAC để xác định giao diện.

Nó mâu thuẫn với wireless-toolstuy nhiên.


2
Cần lưu ý rằng ifrenamesẽ xung đột với udevnếu cả hai được sử dụng để đặt tên giao diện liên tục.
Mischa Arefiev
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.