原文: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

转【Ubuntu】添加虚拟网卡的三种方式的更多相关文章

  1. CentOS添加环境变量的三种方式

    CentOS添加环境变量的三种方式,以添加php环境变量为例,假定php的安装目录为 /usr/local/php5 一.仅对当前会话临时生效 [root@bogon ~]# export PATH= ...

  2. Centos7 Apache配置虚拟主机的三种方式

    https://blog.csdn.net/tladagio/article/details/80760261 一.虚机主机的三种方式 1.基于IP 2.基于IP+端口 3.基于域名 官网文档:htt ...

  3. apache配置虚拟主机的三种方式

    Apache 配置虚拟主机三种方式   一.基于IP 1. 假设服务器有个IP地址为192.168.1.10,使用ifconfig在同一个网络接口eth0上绑定3个IP: [root@localhos ...

  4. cocos2d-x 中添加显示文字的三种方式 LabelTTF 、LabelBMFont 和 LabelAtlas

    在 cocos2d-x 中有三个类可以在层或精灵中添加文字: LabelTTF LabelBMFont LabelAtlas LabelTTF 直接支持使用 TTF 字库,可以支持全部的中文,但是效率 ...

  5. 部署web应用到虚拟主机的三种方式

    方式一:            在 [tomcat]/conf/server.xml 文件中的<Engine>标签下的<Host>标签内部, 添加一个 <Context ...

  6. 【Intellij 】Intellij IDEA 添加jar包的三种方式

    一.直接复制:(不推荐) 方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下即可. 注意: 1.对于导入的eclipse项目,该方式添加的jar包没有任何反应,用make编译项目会报错 2.对于 ...

  7. 12.Intellij IDEA 添加jar包的三种方式

    转自:https://blog.csdn.net/zwj1030711290/article/details/56678353/ 一.直接复制:(不推荐) 方法:直接将硬盘上的jar包复制粘贴到项目的 ...

  8. cocos中添加显示文字的三种方式(CCLabelTTF 、CCLabelBMFont 和CCLabelAtlas)

    CCLabelTTF CCLabelTTF 每次调用 setString (即改变文字)的时候,一个新的OPENGL 纹理将会被创建..这意味着setString 和创建一个新的标签一样慢. 这个类使 ...

  9. IntelliJ IDEA 添加jar包的三种方式

    一.直接复制:(不推荐)方法:直接将硬盘上的jar包复制粘贴到项目的lib目录下.

随机推荐

  1. 爬虫存储介质之MongoDB存储

    常用数据库 mongoDB4.0: 下载:https://www.mongodb.com/ windows安装.Linux安装见: https://www.runoob.com/mongodb/mon ...

  2. idea安装svn

    idea不像eclipse那样是用插件,idea是直接指向已经安装好的svn.exe.

  3. 浅谈python反序列化漏洞

    最近看到p神一篇讲python反序列化的文章,结合redis未授权访问组合漏洞,感觉在flask和redis的构架中比较常见,便记录下来. p神原文:https://www.leavesongs.co ...

  4. How George Washington Angered Lawmakers Over Thanksgiving——VOA慢速英语

    听力地址:How George Washington Angered Lawmakers Over Thanksgiving 中英对照:华盛顿总统将感恩节定为全国性节日 Words in This S ...

  5. jenkins publish .net core application to linux server in docker

    上一个Demo进行了单独的Jenkins远程部署, 本Demo将使用流行的Jenkins+Git+Docker进行持续部署. 准备Linux服务器 和上一篇Demo一样, 在Azure创建一台Cent ...

  6. mysql 5.7 停电导致无法启动、如何备份数据,重新安装mysql

    用于记录服务器停电导致,mysql启动失败后,如何备份数据,重新安装mysql,主要分为数据备份,mysql重新安装. 1.mysql无法启动时,进行数据备份. 执行:systemctl start ...

  7. [转帖]理解k8s 的 Ingress

    理解k8s 的 Ingress https://www.jianshu.com/p/189fab1845c5/ 暴露一个http服务的方式 service 是 k8s 暴露http服务的默认方式, 其 ...

  8. Python 实现微信小程序的用户登录

    小程序可以通过官方提供的登录能力来获取用户身份的标示,具体文档可以参考 这里,通过流程时序可以看到,对于需要和前端配合的服务端开发,主要实现的就是通过小程序提供的 code 换取用户的 openid ...

  9. 利用Python进行数据分析 第7章 数据清洗和准备(1)

    学习时间:2019/10/25 周五晚上22点半开始. 学习目标:Page188-Page217,共30页,目标6天学完,每天5页,预期1029学完. 实际反馈:集中学习1.5小时,学习6页:集中学习 ...

  10. str.format() 格式化数字的多种方法

    Python2.6 开始,新增了一种格式化字符串的函数 str.format(),它增强了字符串格式化的功能. 基本语法是通过 {} 和 : 来代替以前的 % . format 函数可以接受不限个参数 ...