ฉันสามารถสร้างอินเตอร์เฟสอีเทอร์เน็ตเสมือนชื่อ 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.