Udev: เปลี่ยนชื่ออินเทอร์เฟซเครือข่ายของฉัน


20

ฉันเพิ่งติดตั้งRHEL 6.3บนเซิร์ฟเวอร์ Dell 1950 เซิร์ฟเวอร์นี้เป็นพอร์ตสอง GBit, Gb0 และ Gb1

ด้วยเหตุปิดบังบางส่วนudevเลือกที่จะตั้งชื่อGb0 eth1และgB1 eth0นี่ไม่ใช่สิ่งที่ดีสำหรับฉันและทำให้เกิดความสับสน

ดังนั้นฉันจึงปรับเปลี่ยนการกำหนดค่าใน/etc/udev/rules.d/70-persistent-net.rules:

# PCI device 0x14e4:0x164c (bnx2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \
  ATTR{address}=="00:20:19:52:d3:c0",           \
  ATTR{type}=="1", KERNEL=="eth*", NAME="eth1"

# PCI device 0x14e4:0x164c (bnx2)
SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", \
  ATTR{address}=="00:20:19:52:d3:be",           \
  ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"

ฉันเพิ่งเปลี่ยนฟิลด์ "NAME" ในไฟล์เพื่อสะท้อนสิ่งที่ฉันต้องการ ฉันรีบูทเซิร์ฟเวอร์และมันไม่ทำงาน

ในdmesgบันทึกที่ฉันสามารถอ่านต่อไปนี้:

udev: renamed network interface eth1 to rename5
udev: renamed network interface eth0 to eth1
udev: renamed network interface rename5 to eth0

มีความคิดเห็นเกี่ยวกับสิ่งที่ผิดปกติหรือไม่ ทำไมการudevเปลี่ยนแบบนี้ ฉันมีเซิร์ฟเวอร์อื่นที่คล้ายกันโดยที่ฉันไม่มีปัญหานี้


แล้วงานมอบหมายตอนนี้คืออะไร? ยัง Gb0 == eth1 & Gb1 == eth0?
umläute

ตรวจสอบครั้งเดียวgrep -R 'rename5' /etc/udev/rules.d/เพราะในบันทึกที่แสดงว่าrename5มีกฎอื่นใดเหมือนกัน
ราหุลปาติล

ฉันได้ทำสิ่งที่คล้ายกันสำหรับอินเทอร์เฟซเครือข่ายและมันแสดงให้เห็นว่าในบันทึก (ถ้าคุณทำตามตรรกะในนั้นมันก็แค่กำหนดชื่อปลอมให้กับต้นฉบับ eth1 เพื่อที่จะสามารถเปลี่ยนชื่อเดิม eth0 เป็น eth1) ดังนั้นตามบันทึกทุกอย่างควรจะโอเค คุณแน่ใจหรือว่าชื่อยังไม่เป็นไร?
zagrimsan

การมอบหมายยังคงไม่ถูกต้อง: Gb0 == eth1 & Gb1 == eth0 มันไม่เหมือนกับการเปลี่ยนแปลงที่ฉันทำในไฟล์ ฉันไม่มีร่องรอยของ rename5 ใน /etc/udev/rules.d/ สิ่งที่ฉันเข้าใจคือเมื่อ kernel boot eth0 และ eth1 เป็น boot แต่ udev สลับไปมา eth0 => eth1 และ eth1 => eth0
Hugo

คุณพบวิธีแก้ปัญหาหรือไม่? ฉันกำลังดิ้นรนกับปัญหานี้เช่นกัน ในการบูตปกติฉันจบด้วย p1p1 และ p1p2 แต่เนื่องจากฉันเสียบสายเคเบิลเครือข่ายใน p1p2 ในการบูต (ไม่ใช่ทั้งหมดที่แปลก) ฉันจึงลงเอยด้วย p1p1 และ rename3!?!? Udev กำลังเปลี่ยนชื่อ eth1 เป็น rename3 แทนที่จะเป็น p1p2 ไม่ว่าด้วยเหตุผลใด แน่นอนว่านี่เป็นการทำลายการกำหนดค่าเครือข่าย i / f และไฟร์วอลล์ X- (ไม่ใช่ว่าฉันอยู่บน Ubuntu
Huygens

คำตอบ:


9

ขณะนี้ค่อนข้างช้าฉันได้แก้ไขปัญหาของฉันด้วยการลบ

KERNEL="eth*",

ส่วนหนึ่งของกฎใน/etc/udev/rules.d/70-persistent-net.rulesไฟล์ สิ่งนี้ทำงานได้เนื่องจากเมื่อ UDEV เปลี่ยนชื่ออุปกรณ์เป็น "เปลี่ยนชื่อ *" ส่วนนี้จะหยุดการจับคู่กฎ ดังนั้นการลบจะอนุญาตให้ชื่อที่ถูกต้องถูกกำหนดให้กับอุปกรณ์ที่ถูกต้องโดยไม่คำนึงถึงสิ่งที่ UDEV ได้เรียกมันในระหว่างนี้


วิธีนี้แก้ไขได้สำหรับฉันด้วยใน Ubuntu 14.04 พฤติกรรมเดียวกันกับ OP (ยกเว้นว่าการเปลี่ยนชื่อเป็น pXpY)
ndemou

9

ในกรณีของฉันปัญหามาจากข้อเท็จจริงที่ว่าที่อยู่ mac สำหรับแต่ละอินเทอร์เฟซถูกตั้งค่าในสามไฟล์:

/etc/udev/rules.d/70-persistent-net.rules
/etc/sysconfig/network-scripts/ifcfg-eth0
/etc/sysconfig/network-scripts/ifcfg-eth1

เราต้องการความสอดคล้องระหว่างไฟล์ ifcfg และ net.rules สำหรับที่อยู่ mac


1
/etc/sysconfigอยู่ใน redhat / centos linux ใน Ubuntu ไฟล์เหล่านั้นจะอยู่ภายใต้/etc/network/if-up.d
nmgeek

6

ฉันสามารถแก้ไขปัญหานี้ได้โดยเพียงแค่ลบ/etc/udev/rules.d/70-persistent-net.rulesและรีบูตเครื่อง


1

คุณได้ลองสร้างช่องว่างเปล่า/etc/udev/rules.d/80-net-name-slot.rules?

ตั้งแต่ Udev v197, udev ได้ใช้ชื่อเน็ตเวิร์กอินเตอร์เฟสที่คาดเดาได้โดยการสร้างไฟล์เปล่าในพา ธ นั้นจากนั้นทำการรีบูตคุณควรให้ชื่ออินเทอร์เฟซของคุณกลับมาเหมือนเดิม

ฉันตอบคำถามที่คล้ายกันที่: Creating eth0 with consistent network device naming


1
นี่เป็นการแก้ไขอุปกรณ์เครือข่ายสองในสามของฉัน แทนที่จะสร้างไฟล์เปล่าฉันสร้างลิงค์ไปยัง / dev / null ฉันคาดว่าทั้งสองวิธีจะได้ผล
MrMas

ดูเหมือนว่ามีการเปลี่ยนแปลงรอบ v210 ว่าไฟล์นั้นถูกลบออกจาก systemd หากฉันอ่านอย่างถูกต้อง: github.com/systemd/systemd/commit/
......

0

นอกจากนี้ยังอาจเกิดขึ้นเนื่องจาก eth0, eth1, wlan0, wlan1 ฯลฯ เป็นชื่อเคอร์เนลมาตรฐาน (ในกรณีที่การตั้งชื่อแบบแผนไม่ถาวร) ในเอกสารประกอบ udev ได้มีการกล่าวว่า:

ชื่อ

ชื่อที่ใช้สำหรับเน็ตเวิร์กอินเตอร์เฟส ดู systemd.link (5) สำหรับกลไกระดับสูงกว่าสำหรับการตั้งค่าชื่ออินเตอร์เฟส ชื่อของโหนดอุปกรณ์ไม่สามารถเปลี่ยนได้โดย udev สามารถสร้าง symlink เพิ่มเติมได้เท่านั้น

ดังนั้นอย่าใช้ชื่อ eth *, wlan * ฯลฯ สำหรับกฎของ udev

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.