Làm cách nào để tạo giao diện ethernet ảo trên máy mà không cần bộ điều hợp vật lý?


68

Tôi có một ultrabook Dell XPS 13 có wifi nic, nhưng không có ethernet nic vật lý (wlan0, nhưng không có eth0). Tôi cần tạo một bộ điều hợp ảo để sử dụng Vagrant với NFS, nhưng tôi thấy rằng điều đó ifup eth0:1...không thành công ignoring unknown interface eth0:1=eth0:1. Tôi cũng đã thử tạo một giao diện ảo chống lại wlan0, nhưng nhận được kết quả tương tự.

Làm cách nào để tạo giao diện ảo trên máy này mà không có giao diện vật lý?


Trước hết, hãy đảm bảo rằng trình điều khiển của bạn đang được wlan0 sử dụng hỗ trợ khử răng cưa. Đó là tên khác mà giao diện ảo đi theo. Xem làm thế nào thông qua A của tôi đến Q này: unix.stackexchange.com/questions/108394/ . BTW bạn không thể tạo bí danh chống lại eth0 nếu bạn không có thiết bị vật lý đó.
slm

Bạn cũng có thể thêm IP bổ sung bằng cách sử dụng iplệnh: xmodulo.com/2013/02/ trên
slm

Câu trả lời:


103

Thiết lập giao diện giả

Nếu bạn muốn tạo giao diện mạng, nhưng thiếu một NIC vật lý để sao lưu nó, bạn có thể sử dụng loại liên kết giả. Bạn có thể đọc thêm về chúng ở đây: trang Wikipedia iproute2 .

Tạo eth10

Để tạo giao diện này, trước tiên bạn cần đảm bảo rằng bạn đã tải mô-đun hạt nhân giả. Bạn có thể làm điều này như vậy:

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

Với trình điều khiển đã được tải, bạn có thể tạo giao diện mạng giả mà bạn thích:

$ sudo ip link set name eth10 dev dummy0

Và xác nhận nó:

$ 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

Thay đổi MAC

Sau đó, bạn có thể thay đổi địa chỉ MAC nếu bạn muốn:

$ 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

Tạo bí danh

Sau đó, bạn có thể tạo bí danh trên đầu trang của eth10.

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

Và xác nhận chúng như vậy:

$ 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)

Hoặc sử dụng 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

Loại bỏ tất cả điều này?

Nếu bạn muốn thư giãn tất cả điều này, bạn có thể chạy các lệnh này để làm như vậy:

$ 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

Người giới thiệu


4
Lệnh này đã không làm việc cho tôi : sudo ip link set name eth10 dev dummy0. Tôi đã sử dụng ip link add dummy0 type dummyvà sử dụng giao diện dummy0 trong các lệnh sau. Các lệnh khác hoạt động tốt. Cảm ơn!
Ikrom

1
thật tuyệt vời, đây chính xác là những gì tôi cần cho một lmgrd cũ không thể đọc địa chỉ MAC từ tên thiết bị mới của RHEL 7 (emX thay vì ethX)
Gordonane

26

Bạn có thể tạo giao diện ảo bằng bộ công cụ iproute2 .

ip link add veth0 type veth peer name veth1

Điều này sẽ tạo ra 2 giao diện, veth0veth1. Hãy nghĩ về chúng như 2 đầu của một đường ống. Bất kỳ lưu lượng gửi vào veth0sẽ đi ra veth1và ngược lại.

Nếu bạn muốn lưu lượng được định tuyến, bạn có thể làm:

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

Điều này sẽ cho hạt nhân chuyển tiếp lưu lượng đến từ veth0(vì vậy hãy sử dụng veth1cho điểm cuối đã sử dụng).

Một tùy chọn khác là thiết lập một cây cầu với veth0và một giao diện khác. Sau đó, bất kỳ lưu lượng truy cập nào đi qua giao diện ảo sẽ được chuyển đến mạng như thể máy của bạn chỉ hoạt động như một công tắc.

Có nhiều thứ khác bạn có thể làm với lưu lượng truy cập này (giả trang, chuyển hướng nó, DNAT, v.v.), nhưng điều đó phụ thuộc vào những gì bạn đang cố gắng thực hiện.

Xé nó ra:

ip link del veth0

Những thứ tuyệt vời, nhưng không hoàn toàn là những gì tôi cần trong trường hợp này (tôi thực sự chỉ cần một giao diện ảo để VM có thể gắn kết chia sẻ NFS thay vì sử dụng chia sẻ tệp VBox)
STW

Làm thế nào để đặt địa chỉ IP veth0 trong ví dụ?
MURATSPLAT
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.