ฉันสามารถสร้างอินเตอร์เฟสอีเทอร์เน็ตเสมือนชื่อ eth0 ได้หรือไม่?


24

ฉันใช้งาน Arch โดยใช้เคอร์เนล 3.10.5-1 ระบบจะใช้พฤตินัยใหม่การตั้งชื่อของอีเธอร์เน็ตอินเตอร์เฟซ ENP * * * * * * * * s และ WLP * ฯลฯ ปัญหานี้เป็นปัญหา แต่เป็นสถาบันการศึกษาของฉันคือการใช้โปรแกรมที่เรียกว่าเมเปิ้ล 17 ระบบออกใบอนุญาตของ Maple นั้นขึ้นอยู่กับอินเตอร์เฟสที่มีชื่อว่า eth0 เพราะจะต้องดึงข้อมูลที่อยู่ MAC ของมันเพื่อตรวจสอบใบอนุญาต มันเป็นวิธีที่ไม่ดี แต่ฉันต้องแก้ไขมัน

ซึ่งหมายความว่าฉันจะต้องมีส่วนต่อประสาน eth0 กับที่อยู่ MAC ใด ๆ เลย (เพราะฉันสามารถดึงไฟล์ลิขสิทธิ์ใหม่สำหรับที่อยู่ MAC ใหม่) ที่ไม่จำเป็นต้องทำงาน ในความเป็นจริงมันควรจะลงตลอดเวลา ฉันคิดว่ามีหลายวิธีในการพยายามแก้ไขปัญหานี้ แต่ฉันไม่สามารถค้นหาอะไรเกี่ยวกับความคิดใด ๆ ได้

  • การสร้างอะแดปเตอร์โดยไม่มีการเชื่อมต่อ
  • การสร้างนามแฝงสำหรับ enp3s0 ชื่อ eth0
  • การเปลี่ยนชื่อ enp3s0 หรืออินเทอร์เฟซย้อนกลับ

สิ่งที่ฉันสามารถค้นพบได้มีเพียงการเปลี่ยนการประชุมแบบใหม่และในรุ่นที่เก่ากว่าของ udev เท่านั้น พวกเขาทำงานกับ RHEL และ SuSe เท่านั้น ฉันลองมันโดยไม่มีโชค (persistent-net-names.rules และ net-name-slot.rules ทั้งคู่ทำให้อินเทอร์เฟซจริงของฉันหยุดทำงานและอินเตอร์เฟส wlan ของฉันหายไป)

คำตอบ:


28

แน่ใจ คุณสามารถสร้างtapอุปกรณ์ได้อย่างง่ายดายโดยใช้tunctl(จาก uml-Utilities อย่างน้อยใน Debian):

# tunctl -t eth0
Set 'eth0' persistent and owned by uid 0
# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr a6:9b:fe:d8:d9:5e  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

หรือด้วยip:

# ip tuntap add dev eth0 mode tap
# ip link ls dev eth0
7: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT qlen 500
    link/ether 0e:55:9b:6f:57:6c brd ff:ff:ff:ff:ff:ff

อาจเป็นไปได้ว่าคุณควรใช้วิธีที่สองตามipที่ต้องการเครื่องมือเครือข่ายบน Linux และคุณน่าจะติดตั้งแล้ว

นอกจากนี้ทั้งสองอย่างกำลังสร้างอุปกรณ์เคาะด้วย - ฉันเดา - MAC แบบสุ่มในเครื่องคุณสามารถตั้งค่า MAC ให้เป็นค่าคงที่ในรูปแบบปกติ


1
ถูกต้อง! วิธีแก้ปัญหาที่ฉันหวังไว้ขอบคุณมาก :) มันใช้งานได้เหมือนความฝัน
Steen Schütt

1
ฉันมีปัญหา. เมื่อพยายามที่จะเปลี่ยน MAC ด้วยip link set dev eth0 address 01:23:45:67:89:ab(ในขณะที่อะแดปเตอร์จะลดลงแน่นอน) RTNETLINK answers: Cannot assign requested addressก็กล่าวว่า ฉันก็ลองติดตั้ง macchanger ด้วย แต่มันก็กลับมาเหมือนกัน ทุกอย่างพยายามเป็นราก
Steen Schütt

3
@TimeSheep นั่นไม่ใช่ที่อยู่ MAC ที่ถูกต้อง โดยเฉพาะอย่างยิ่งนั่นคือที่อยู่แบบหลายผู้รับ ลอง 00: 23: 45: 67: 89: ab นั่นจะได้ผล แต่ 02: 23: 45: 67: 89: ab จะดีกว่า ดูเช่นen.wikipedia.org/wiki/MAC_address#Address_details
Derobert

อ่าขอบคุณ ฉันลืมไปโดยสิ้นเชิงว่ามีข้อกำหนดสำหรับสิ่งเหล่านั้นที่จะทำงาน ฉันจะคว้าอันถัดไปที่มันสร้างขึ้นแบบสุ่มและใช้มัน มีวิธีที่จะทำให้อุปกรณ์คงอยู่ตลอดการบู๊ตใหม่แทนที่จะสร้างมันขึ้นมาใหม่และตั้งค่าที่อยู่ของมันกลับมาตอนบูตด้วยสคริปต์หรือไม่?
Steen Schütt

@ TimeSheep ไม่จริง มันเป็นอินเทอร์เฟซเสมือนมันไม่มีอยู่ที่ใดเลย แต่เป็นความคิดของเคอร์เนล ... ดังนั้นเมื่อคุณรีบูทมันก็หายไป
Derobert

4

คุณยังสามารถตั้งกฎ udev เพื่อให้ชื่อการ์ดเครือข่ายของคุณที่คุณต้องการ:

https://wiki.archlinux.org/index.php/Network_Configuration#Change_device_name

แน่นอนคุณไม่ควรบอก udev ให้เรียกพวกเขาว่า eth0, eth1 และอื่น ๆ Maple ทำอะไรได้บ้างถ้าคุณมีการ์ด wifi เท่านั้น?


ผมไม่ทราบว่าเกี่ยวกับเมเปิ้ล แต่ผมได้เห็นคนอื่น“ป้องกันการทำสำเนา” ซอฟแวร์ที่ตรวจสอบ MAC และคุณเท่านั้นที่มีลักษณะที่เชื่อมต่อเครือข่ายที่เรียกว่าและeth0 eth1หากคุณถูกเรียกว่าwlan0แย่เกินไป (เว้นแต่คุณจะรู้วิธีเปลี่ยนชื่อหรือสร้างอินเทอร์เฟซเสมือน)
Gilles 'หยุดความชั่วร้าย'

หากคุณมีการ์ด wifi ฉันแค่คิดว่าคุณจะโชคไม่ดี ฉันได้พูดคุยกับตัวแทนเกี่ยวกับเรื่องนี้ แต่พวกเขาดูเหมือนจะไม่ใช่คนที่เขียนระบบใบอนุญาต ฉันบอกพวกเขาว่าอนุสัญญาการตั้งชื่อน่าจะเปลี่ยนไปมากที่สุดและพวกเขาควรตรวจสอบการแก้ไขทั้งหมดเพื่อรับการสนับสนุนที่ดีขึ้น you are correct in your suspicions of the cause of the problem with the activation, particularly the issue with the Ethernet adapter name. Unfortunately, it is a limitation of the licensing software that it has to look for an "eth0" in order to find the Host ID of the system
Steen Schütt

โอกาสใดที่คุณสามารถใช้กฎ udev เพื่อเปลี่ยนชื่อ NIC ของคุณเป็น eth0 ชั่วคราวจากนั้นจึงลบกฎนั้นและรีบูตหลังจากการเปิดใช้งาน จริง ๆ แล้วฉันไม่รู้ว่าจริง ๆ แล้วมันแย่มาก ๆ ที่จะเปลี่ยนชื่อบัตร ethX ของคุณหรือบางครั้ง
rainbowgoblin

@rainbowgoblin ไม่มันตรวจสอบกับเซิร์ฟเวอร์ทุกครั้งที่เปิดเครื่องดังนั้นมันจะเริ่มให้ข้อผิดพลาด "ไม่สามารถรับรหัสโฮสต์" ให้ฉันอีกครั้งในภายหลัง วิธีการแก้ปัญหาของ Derobert นั้นสมบูรณ์แบบและไม่รู้สึกเหมือนเป็นวิธีแก้ปัญหามาก
Steen Schütt

2

ฉันกำลังดูปัญหาที่คล้ายกันมากกับคอมพิวเตอร์ที่ไม่มีการ์ดเครือข่ายแบบใช้สายเลย วิธีนี้ดูเหมือนดี: http://jms.id.au/wiki/FakeEth0

โดยพื้นฐานแล้วแนวคิดคือการสร้าง / แก้ไขไฟล์เล็กน้อยเพื่อสร้างส่วนต่อประสานแบบจำลอง:

ในการ/etc/modules-load.d/dummy.confเพิ่ม:

# load dummy interface module
dummy

ในการ/etc/udev/rules.d/70-persistent-net.rulesเพิ่ม:

SUBSYSTEM=="net", KERNEL=="dummy0", NAME="eth0"

จากนั้นในการ/etc/network/interfacesเพิ่ม:

iface eth0 inet static
    hwaddress DE:AD:BE:EF:CA:FE

คุณควรจะทำmodprobe dummyในจุดนี้และตรวจสอบเพื่อให้แน่ใจว่าอินเทอร์เฟซการตั้งค่าอย่างถูกต้อง มันอาจไม่ได้ตั้งค่าที่อยู่ mac หากคุณใช้ modprobe แทนการรีบูตเครื่อง ในกรณีดังกล่าวให้ทำ ip link ตั้ง dev eth0 address: ad: เป็น: ef: ca: fe


-1

วิธีแก้ปัญหาที่ง่ายที่สุด - แม้ว่าจะใช้ได้กับระบบที่ใช้อีเทอร์เน็ตการ์ดเดียวเท่านั้น:

ln -s /dev/null /etc/udev/rules.d/80-net-name-slot.rules

Arch Linux ใช้ "การตั้งชื่อที่สามารถคาดเดาได้" สิ่งนี้จะปิดลง


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