ฉันจะสร้างอินเตอร์เฟสอีเทอร์เน็ตเสมือนบนเครื่องที่ไม่มีตัวแปลงฟิสิคัลได้อย่างไร?


68

ฉันมี Dell XPS 13 อัลตร้าบุ๊กซึ่งมี wifi nic แต่ไม่มีอีเทอร์เน็ตแบบฟิสิคัล (wlan0 แต่ไม่มี eth0) ฉันต้องสร้างอะแดปเตอร์เสมือนจริงสำหรับใช้กับคนจรจัด NFS แต่ฉันพบว่าโดยทั่วไปล้มเหลวด้วยifup eth0:1... ignoring unknown interface eth0:1=eth0:1ฉันพยายามสร้างส่วนต่อประสานเสมือนกับwlan0แต่ได้รับผลลัพธ์เดียวกัน

ฉันจะสร้างอินเทอร์เฟซเสมือนบนเครื่องนี้โดยไม่มีส่วนต่อประสานทางกายภาพได้อย่างไร


ก่อนอื่นตรวจสอบให้แน่ใจว่าไดรเวอร์ของคุณที่ใช้โดย wlan0 รองรับนามแฝง นั่นคือชื่ออื่นที่อินเตอร์เฟสเสมือนดำเนินไป ดูวิธีการผ่านทางของฉันไป Q นี้: unix.stackexchange.com/questions/108396/... BTW คุณไม่สามารถสร้างนามแฝงกับ eth0 หากคุณไม่มีอุปกรณ์ทางกายภาพนั้น
slm

คุณยังสามารถเพิ่ม IP เพิ่มเติมโดยใช้ipคำสั่งได้เช่นกัน: xmodulo.com/2013/02/…
slm

คำตอบ:


103

การตั้งค่าส่วนต่อประสานแบบหลอก

หากคุณต้องการสร้างเน็ตเวิร์กอินเตอร์เฟส แต่ไม่มีฟิสิคัล NIC ให้สำรองคุณสามารถใช้ประเภทลิงค์จำลอง คุณสามารถอ่านเพิ่มเติมเกี่ยวกับพวกเขาที่นี่: iproute2 หน้าวิกิพีเดีย

สร้าง eth10

ในการสร้างอินเทอร์เฟซนี้คุณต้องตรวจสอบให้แน่ใจว่าคุณได้โหลดโมดูลเคอร์เนลจำลอง คุณสามารถทำเช่นนี้เพื่อ:

$ sudo lsmod | grep dummy
$ sudo modprobe dummy
$ sudo lsmod | grep dummy
dummy                  12960  0 

ด้วยการโหลดไดรเวอร์ตอนนี้คุณสามารถสร้างสิ่งที่คุณต้องการ:

$ sudo ip link set name eth10 dev dummy0

และยืนยัน:

$ ip link show eth10
6: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
    link/ether c6:ad:af:42:80:45 brd ff:ff:ff:ff:ff:ff

การเปลี่ยน MAC

จากนั้นคุณสามารถเปลี่ยนที่อยู่ MAC ได้หากต้องการ:

$ sudo ifconfig eth10 hw ether 00:22:22:ff:ff:ff
$ ip link show eth10
6: eth10: <BROADCAST,NOARP> mtu 1500 qdisc noop state DOWN mode DEFAULT group default 
    link/ether 00:22:22:ff:ff:ff brd ff:ff:ff:ff:ff:ff

การสร้างนามแฝง

จากนั้นคุณสามารถสร้างนามแฝงที่ด้านบนของ eth10

$ sudo ip addr add 192.168.100.199/24 brd + dev eth10 label eth10:0

และยืนยันพวกเขาเช่น:

$ ifconfig -a eth10
eth10: flags=130<BROADCAST,NOARP>  mtu 1500
        ether 00:22:22:ff:ff:ff  txqueuelen 0  (Ethernet)
        RX packets 0  bytes 0 (0.0 B)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 0  bytes 0 (0.0 B)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

$ ifconfig -a eth10:0
eth10:0: flags=130<BROADCAST,NOARP>  mtu 1500
        inet 192.168.100.199  netmask 255.255.255.0  broadcast 192.168.100.255
        ether 00:22:22:ff:ff:ff  txqueuelen 0  (Ethernet)

หรือใช้ip:

$ ip a | grep -w inet
    inet 127.0.0.1/8 scope host lo
    inet 192.168.1.20/24 brd 192.168.1.255 scope global wlp3s0
    inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0
    inet 192.168.100.199/24 brd 192.168.100.255 scope global eth10:0

กำลังลบทั้งหมดนี้ไหม

หากคุณต้องการผ่อนคลายทั้งหมดนี้คุณสามารถเรียกใช้คำสั่งเหล่านี้ได้:

$ sudo ip addr del 192.168.100.199/24 brd + dev eth10 label eth10:0
$ sudo ip link delete eth10 type dummy
$ sudo rmmod dummy

อ้างอิง


4
คำสั่งนี้ใช้ไม่ได้สำหรับฉัน: sudo ip link set name eth10 dev dummy0. ฉันใช้ip link add dummy0 type dummyและใช้อินเทอร์เฟซ dummy0 ในคำสั่งต่อไปนี้แล้ว คำสั่งอื่นทำงานได้ดี ขอบคุณ!
Ikrom

1
ยอดเยี่ยมนี่คือสิ่งที่ฉันต้องการสำหรับ lmgrd รุ่นเก่าซึ่งไม่สามารถอ่าน MAC address จากชื่ออุปกรณ์ RHEL 7 ใหม่ (emX แทนที่จะเป็น ethX)
Thesane

26

คุณสามารถสร้างอินเตอร์เฟสเสมือนโดยใช้ชุดเครื่องมือiproute2

ip link add veth0 type veth peer name veth1

นี้จะสร้าง 2 อินเตอร์เฟซและveth0 veth1คิดว่าพวกเขาเป็นปลายทั้งสองของท่อ ปริมาณข้อมูลใด ๆ ที่ส่งเข้าveth0มาจะออกมาveth1และในทางกลับกัน

หากคุณต้องการกำหนดเส้นทางการจราจรคุณสามารถทำได้:

sysctl -w net.ipv4.conf.veth0.forwarding=1

สิ่งนี้จะบอกให้เคอร์เนลส่งต่อทราฟฟิกที่มาจากveth0(เพื่อใช้veth1สำหรับจุดปลายที่ใช้)

อีกตัวเลือกหนึ่งคือการตั้งค่าบริดจ์ด้วยveth0และอินเทอร์เฟซอื่น จากนั้นการรับส่งข้อมูลใด ๆ ที่ผ่านอินเทอร์เฟซเสมือนจะถูกส่งไปยังเครือข่ายเสมือนว่าเครื่องของคุณทำหน้าที่เป็นสวิตช์

มีสิ่งอื่น ๆ อีกมากมายที่คุณสามารถทำได้กับการรับส่งข้อมูลนี้ (ปลอมแปลงเปลี่ยนเส้นทางเปลี่ยนเป็น DNAT เป็นต้น) แต่ขึ้นอยู่กับสิ่งที่คุณพยายามทำ

วิธีฉีกมัน:

ip link del veth0

สิ่งดีๆ แต่ไม่ใช่สิ่งที่ฉันต้องการในกรณีนี้ (ฉันเพิ่งต้องการอินเทอร์เฟซเสมือนจริงเพื่อให้ VM สามารถเมานต์แชร์ NFS แทนที่จะใช้การแชร์ไฟล์ VBox)
STW

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