openwrt 单网卡路由模拟实现
关键字
vlan openwrt 单臂路由
一直以来都认为路由器要至少要求是双网卡,因为至少要有lan/wan。最近看了单臂路由的介绍,自己在虚拟机测试了一把,发现单网口做路由器确实可行!
测试环境
Manjaro Linux 主机
qemu openwrt 虚拟机环境(openwrt 固件可以在官方下载)
host 主机配置
这里因为是模拟,所以在宿主机(majaro)上要做一些配置。 实际使用的单臂路由,路由器网卡接口下一定是一个支持vlan的交换机,只需要配置交换机 vlan 即可。
这里仅给出本次测试的宿主机的 vlan 相关网卡的修改,单臂路由下的交换机配置的原理一样。
网桥配置
因为虚拟机选择的是NAT 网络,所以需要做如下配置(注,这里vnet1 是openwrt 虚拟机对应的qemu虚拟网卡。virbr0 是qemu NAT 网桥)
➜ ip link add link vnet1 name vnet1_11 type vlan id 11
➜ ip link add link vnet1 name vnet1_10 type vlan id 10
➜ brctl delif virbr0 vnet1
➜ brctl addif virbr0 vnet1_11
➜ brctl show
bridge name bridge id STP enabled interfaces
docker0 8000.0242f80d773e no
virbr0 8000.5254008e3f49 yes virbr0-nic
vnet0
vnet1_11
➜ ip link set dev vnet1_11 up
➜ ip link set dev vnet1_10 up
这里操作原理是: 因为即将配置的路由器wan 口是vlan 11,所以这里需要创建vlan 子接口支持vlanid 11。
vlan 10 的子网卡,这里假装是路由器下的设备。
openwrt 配置
参考链接,openwrt 官方介绍
下面截取修改的部分: /etc/config/network, 新增部分很容易理解,没加注释。
config interface 'lan'
# 这里注释掉是因为没必要用桥接,不注掉其实也一样,区别就是:
# 桥接时候会创建一个 br-lan 的网桥,vlan10 将被加入到网桥里,配置的静态 IP 是在桥(br-lan)上
# 因为这里只有一个 vlan10 所以要不要桥都可以。如果设备上还有一个无线网卡,那么桥就是必须的,因为他们都是 lan 网络。
# option type 'bridge'
option ifname 'vlan10'
option proto 'static'
option ipaddr '192.168.10.1'
option netmask '255.255.255.0'
config interface 'wan'
option ifname 'vlan11'
option proto 'dhcp'
config device
option type '8021q'
option ifname 'eth0'
option via '10'
option name 'vlan10'
config device
option type '8021q'
option ifname 'eth0'
option via '11'
option name 'vlan11'
修改完重启network,使修改生效service network restart

测试
在 wan 口做dhcp

wireshark抓取 dhcp 时网卡报文


抓包目的解释了为什么要在host 创建 vlan 子网卡。如上图,在 vnet1 上openwrt wan 口发来的报文是包含 vlan tag 的,而 qemu 虚拟网桥是不认识 vlan(8021q)报文的,经过子网卡后会剥离掉vlan 头,将二层 8021q 报文转为普通以太网报文。只有这样openwrt wan 的dhcp 报文才能到qemu 网桥,整个dhcp 过程才会成功。
这时候可以尝试ping 对端都是ok的。
ping:host->openwrt

ping:openwrt->host

在lan侧做dhcp

可以知道 lan 侧也是ok的。ping测试这里就不帖图了。
openwrt 单网卡路由模拟实现的更多相关文章
- 详解eNSP下的单臂路由模拟实验配置
不同VLAN之间的通信可以通过两种方式:单臂路由和三层交换机.其中,单臂路由是通过路由子接口,交换机的某个端口以trunk的方式与路由器的某个端口相连,同时路由器的链接端口配置子接口,配置子接口承载的 ...
- 移动H5页面微信支付踩坑之旅(微信支付、单页面路由模拟、按钮加锁、轮询等常见功能)
开发背景: .net混合开发的vue模板语法的单页面应用,所以不存在脚手架以及没有路由可以跳转. 项目描述: 需要写两个页面,在订单详情页需要点击“请输入手机号”进入手机号绑定页面,手机号绑定成功后自 ...
- Hyper-V 搭建独臂路由器(单网卡也可以)
2020年原本难得清闲的春节,由于疫情的原因只能在家里看视频打发时间.打开某奇艺,全是某某公寓的推荐真的是受不了.一群人在那里叽叽喳喳,超前点播更是吃像难看,实在是没意思,所以决定搞一个独臂路由器玩一 ...
- Windows Server 2003/2008 单网卡搭建VPN
Windows Server 2003/2008 单网卡搭建VPN 1.打开[控制面板] --> [管理工具] --> [路由和远程访问] 2.鼠标右击你要管理的电脑 在弹出式菜单中选中[ ...
- windows2003 单网卡 搭建vpn ,windows 2008 R2 类似吧。网上转的,自己加了点经验总结
先说说可能的坑,也就是我自己搭建的时候碰到的问题. 其实搭建起来很简单,我不知道我总结的对还是不对,但是按下面这样操作做绝对能搭好!因为我就是按这样搭起来的,但是我发现,好像pptp已经被墙了,我也不 ...
- Windows Server 2003单网卡搭建VPN
Windows Server 2003单网卡搭建VPN 1.打开[控制面板] --> [管理工具] --> [路由和远程访问] 2.鼠标右击你要管理的电脑 在弹出式菜单中选中[配置并启 ...
- [OpenStack] [Liberty] Neutron单网卡桥接模式访问外网
环境配置: * Exsi一台 * Exsi创建的单网卡虚拟机一台 * Ubuntu 14LTS 64位操作系统 * OpenStack Liberty版本 * 使用Neutron网络而非Nova网络 ...
- ccna 闫辉单臂路由 和 acl access control list
ccna 闫辉单臂路由 和 acl access control list 一单臂路由 当前园区网设计很少用到 成本低 小型的.局域网可用 二ACL acc ...
- eNSP仿真软件之利用单臂路由实现VLAN间路由
1. 实验原理 以太网中,通常会使用VLAN技术隔离二层广播域来减少广播的影响,并增强网络的安全性和可管理性.其缺点是同时也严格地隔离了不同VLAN之间的任何二层流量,使分属于不同VLAN的用户不能直 ...
随机推荐
- vue keep-alive 不生效和多级(三级以上)缓存失败
vue keep-alive https://cn.vuejs.org/v2/api/#keep-alive keep-alive 不生效的可能原因 如果安装官方的写法,已经正常完成keep-aliv ...
- 浅谈:C#中的非泛型集合
1.首先:ArrayList:非泛型集合 List:泛型集合 集合跟数组比较我们更容易理解.数组:1,长度固定2,数据类型预先声明 集合:1,长度可变2,数据类型预先声明的为泛型集合,数据类型不限定为 ...
- 求正整数2和n之间的完全数
[题目描述] 求正整数22和nn之间的完全数(一行一个数). 完全数:因子之和等于它本身的自然数,如6=1+2+36=1+2+3 [输入] 输入n(n≤5000)n(n≤5000). [输出] 一行一 ...
- Java继承后访问成员的特点
继承后的特点--成员变量 对象访问成员变量时,会先在子类中查找有没有定义对应的变量,若子类中存在就会就近使用子类中的变量,若子类中没有定义就会沿着继承关系往上找有没有定义相应的变量,若父类中也没有则编 ...
- 详解Apache Hudi如何配置各种类型分区
1. 引入 Apache Hudi支持多种分区方式数据集,如多级分区.单分区.时间日期分区.无分区数据集等,用户可根据实际需求选择合适的分区方式,下面来详细了解Hudi如何配置何种类型分区. 2. 分 ...
- Url跳转漏洞常见
Url跳转漏洞常见出现点: 1.用户登录.统一身份认证处,认证完后会跳转. 2.用户分享.收藏内容过后,会跳转. 3.跨站点认证.授权后,会跳转. 4.站内点击其它网址链接时,会跳转. Url跳转漏洞 ...
- 实现直方图均衡化(java+opencv)
什么是直方图均衡化? 直方图均衡化是一种简单有效的图像增强技术,通过改变图像的直方图来改变图像中各像素的灰度,主要用于增强动态范围偏小的图像的对比度.原始图像由于其灰度分布可能集中在较窄的区间,造成图 ...
- 用终端命令行(BASH)将本地项目上传到Github并提交代码
第一步: 在Github上创建自己的repository 第二步:建立本地仓库cd到你的本地项目根目录下,执行git命令 1:$ cd 到你的项目目录下 2:$ git init 第三步:将本地项目工 ...
- 如何理解Vue.js中的ref及$ref,$
1.vue官方文档 首先我们来看一下vue官方是怎么解释的 好了,我知道很多刚接触的vue的小白其实都不太看的懂官方文档在讲什么,下面我用自己的话翻译一下. 2.ref以及$ref 通过 ref 标注 ...
- call、apply、bind 的用法
例1 obj.objAge; //17 obj.myFun() //小张年龄undefined 例2 shows() //盲僧 比较一下这两者this 的差别,第一个打印里面的this 指向obj,第 ...