轉【Ubuntu】添加虛擬網卡的三種方式


原文:https://blog.csdn.net/White_Idiot/article/details/82934338

------------------------------

1. ifconfig添加
使用ifconfig -a命令查看已有物理網卡,一般得到如下輸出:

eno1 ...(省略)

lo ...

ppp0 ...
1
2
3
4
5
然后向物理網卡eno1中添加一塊虛擬網卡:

sudo ifconfig eno1:1 192.168.0.10 up
1
以上命令創建了一個叫eno1:1的虛擬網卡,地址是192.168.0.10。

可以使用如下命令刪除:

sudo ifconfig eno1:1 down
1
用這種方式添加的虛擬網卡,重啟服務器或網絡后就沒了。

2. 修改網卡配置文件
在Ubuntu下,網卡的配置文件是/etc/network/interfaces:

sudo vim /etc/network/interfaces
1
增加如下內容:

auto eno1:1
iface eno1:1 inet static
address 192.168.0.10
netmask 255.255.255.0
# network 192.168.10.1
# broadcast 192.168.1.255
1
2
3
4
5
6
然后重啟網卡(重新加載配置文件):

sudo /etc/init.d/networking restart
1
這種方式在重啟服務器或者網卡后配置不會丟失。

3. 創建TAP
前面兩種方式創建的虛擬網卡和物理網卡相比,IP地址不同,但是Mac地址相同:

eno1 Link encap:以太網 硬件地址 da:3d:b0:a0:13:p9
...(省略)

eno1:1 Link encap:以太網 硬件地址 da:3d:b0:a0:13:p9 (相同Mac地址)
inet 地址:192.168.0.10 廣播:192.168.0.255 掩碼:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 躍點數:1
1
2
3
4
5
6
如果需要不同的Mac地址,可以添加虛擬網卡TAP。先安裝uml-utilities:

sudo apt-get install uml-utilities
1
然后使用tunctl添加虛擬網卡,該命令會生成一個TAP,后綴從0遞增:

$ sudo tunctl -b
tap0
$ sudo tunctl -b
tap1
1
2
3
4
最后激活創建的TAP:

$ sudo ip link set tap0 up
$ sudo ip link set tap1 up
1
2
查看網卡信息可以看到TAP有不同的Mac地址:

tap0 Link encap:以太網 硬件地址 be:74:81:f7:27:97
...(省略)

tap1 Link encap:以太網 硬件地址 b2:da:ce:f0:45:5d
...
1
2
3
4
5
這種方式創建的虛擬網卡在重啟后也會消失,需要編寫腳本作為系統服務隨系統自動啟動創建虛擬網卡,可以根據具體需求修改此腳本(符合chkconfig規范)。腳本如下:

$ cat /etc/init.d/config_tap

#!/bin/bash
#
# config_tap Start up the tun/tap virtual nic
#
# chkconfig: 2345 55 25

USER="root"
TAP_NETWORK="192.168.0.1"
TAP_DEV_NUM=0
DESC="TAP config"

do_start() {
if [ ! -x /usr/sbin/tunctl ]; then
echo "/usr/sbin/tunctl was NOT found!"
exit 1
fi
tunctl -t tap$TAP_DEV_NUM -u root
ifconfig tap$TAP_DEV_NUM ${TAP_NETWORK} netmask 255.255.255.0 promisc
ifconfig tap$TAP_DEV_NUM
}

do_stop() {
ifconfig tap$TAP_DEV_NUM down
}
do_restart() {
do_stop
do_start
}
check_status() {
ifconfig tap$TAP_DEV_NUM
}

case $1 in
start) do_start;;
stop) do_stop;;
restart) do_restart;;
status)
echo "Status of $DESC: "
check_status
exit "$?"
;;
*)
echo "Usage: $0 {start|stop|restart|status}"
exit 1
esac
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
然后將腳本加入到系統服務中:

chkconfig --add config_tap
chkconfig --level 345 config_tap on
1
2
操作完成后,就可以像其他標准服務一樣,通過service config_tap start來進行創建和啟動操作。

參考文章
Linux添加虛擬網卡的多種方法
linux下TUN/TAP虛擬網卡的使用
————————————————
版權聲明:本文為CSDN博主「widiot0x」的原創文章,遵循 CC 4.0 BY-SA 版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/White_Idiot/article/details/82934338


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM