Linux
Linux software install
Google repo的使用
Vector AP StartApplication编译脚本解析
Yocto的cmake版本升级
不能自动安装的解决方式
S32G-BSP35.0-SDK使用方法
S32G从SDK生成文件系统的制作过程
Linux Samba设置
Linux添加双网卡
S32G USB-Redirector安装指南
VS code自动生成Doxygen格式注释
Linux下使用多线程下载
使用pandoc 生成带中文的pdf
minicom无法输入的问题解决办法
使用 systemd unit 添加一条路由规则
CMake 教程
步骤 1:基本起点
步骤 2:添加lib库
步骤 3:为库添加使用要求
步骤 4:添加生成器表达式
步骤 5:安装和测试
步骤 6:添加支持测试仪表板
步骤 7: 添加系统内省
步骤 8:自定义命令和生成的文
步骤 9:打包安装程序
步骤 10:选择静态库或共享库
步骤 11:添加导出配置
步骤 12:打包 Debug 和 Release
添加虚拟网卡
Vector AP 去掉防篡改校验
Vector AP startapplication编译与使用
Vector AP问题汇总
Vector AP大型项目开发流程
Vector AP EM
Vector AP 最简单的开发示例
Linux kernel 版本降级
Vector AP StartApplicaiton
startappplication-machine-design
startapplicaiton-machine-integration
amsr-vector-fs-em-executionmanager-design
amsr-vector-fs-em-executionmanager
Vector AP 复杂模型的开发
第一章 Machine和MachineDesign
第二章 Execute Manager
第三章 Log
第四章 State Manager
第五章 State Manager 源码的理解
第六章 Someip daemon
第七章 IPC Service Discovery Daemon
crond的使用方法
解决蓝牙鼠标在 Ubuntu 中单位时间内断开的问题
VPS服务器自建教程
v2rayA的客户端使用配置
GDB调试指南入门篇:揭开程序运行世界的神秘面纱
GDB调试指南高级篇:成为调试专家,掌控程序的命运
Linux安装PyQt5并配置Qt Designer
ADB 命令大全
GoogleTest(一)
GoogleTest(二)简单的TEST宏
GoogleTest(三)简单类函数测试
C++ Template
1. 函数模板
2. 类模板
3. 非类型模板参数
软件版本号规范
EPOLL
C++手札
C++ 使用{}初始化有哪些好处?
现代 C++ decltype 深入解析
函数对象(functor)
Linux性能剖析:CPU、内存、网络与I/O压力测试
AP StateManager
C++ Lambda表达式
C++ 中的Lambda表达式
Lambda 表达式语法
Lambda 表达式的示例
手动发送UDP数据包
pyqt5生成的UI界面不能输入中文
自己搭建repo镜像
摄影
Sony仿富士PP值设置
诗词歌赋
本文档使用 MrDoc 发布
-
+
首页
添加虚拟网卡
### 1\. ifconfig添加 使用`ifconfig -a`命令查看已有物理网卡,一般得到如下输出: ```shell eno1 ...(省略) lo ... ppp0 ... ``` 然后向物理网卡eno1中添加一块虚拟网卡: ```shell sudo ifconfig eno1:1 192.168.7.2 up ``` 以上命令创建了一个叫`eno1:1`的虚拟网卡,地址是`192.168.7.2`。 可以使用如下命令删除: ```shell sudo ifconfig eno1:1 down ``` 用这种方式添加的虚拟网卡,重启服务器或网络后就没了。 ### 2\. 修改网卡配置文件 在Ubuntu下,网卡的配置文件是`/etc/network/interfaces`: ```shell sudo vim /etc/network/interfaces ``` 增加如下内容: ```shell 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 ``` 然后重启网卡(重新加载配置文件): ```shell sudo /etc/init.d/networking restart ``` 这种方式在重启服务器或者网卡后配置不会丢失。 ### 3\. 创建TAP 前面两种方式创建的虚拟网卡和物理网卡相比,IP地址不同,但是Mac地址相同: ```shell 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 ``` 如果需要不同的Mac地址,可以添加虚拟网卡TAP。先安装uml-utilities: ```shell sudo apt-get install uml-utilities ``` 然后使用`tunctl`添加虚拟网卡,该命令会生成一个TAP,后缀从0递增: ```shell $ sudo tunctl -b tap0 $ sudo tunctl -b tap1 ``` 最后激活创建的TAP: ```shell $ sudo ip link set tap0 up $ sudo ip link set tap1 up ``` 查看网卡信息可以看到TAP有不同的Mac地址: ```shell tap0 Link encap:以太网 硬件地址 be:74:81:f7:27:97 ...(省略) tap1 Link encap:以太网 硬件地址 b2:da:ce:f0:45:5d ... ``` 这种方式创建的虚拟网卡在重启后也会消失,需要编写脚本作为系统服务随系统自动启动创建虚拟网卡,可以根据具体需求修改此脚本(符合chkconfig规范)。脚本如下: ```shell $ 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 ``` 然后将脚本加入到系统服务中: ```shell chkconfig --add config_tap chkconfig --level 345 config_tap on ``` 操作完成后,就可以像其他标准服务一样,通过`service config_tap start`来进行创建和启动操作。 ### 参考文章 + [Linux添加虚拟网卡的多种方法](https://blog.csdn.net/hzhsan/article/details/44677867) + [linux下TUN/TAP虚拟网卡的使用](http://blog.51cto.com/wushank/1306849)
admin
2024年4月8日 08:46
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码