使用桥接虚拟网卡搭建openwrt旁路由
缘起
前段时间折腾在树莓派上搞了个pi-hole
用来去广告,然而经过一段时间发现这台树莓派有时候会死机,导致整个局域网的dns解析跪了。
而openwrt
作为一个非常流行的软路由系统,里边能安装各种网络相关的插件,比如adblock
、v2ray
等,因此就折腾着搞一个旁路由。
现在是没有多余的硬件机器来搞的,只能在j3455的宿主机上虚拟化出来,然而这台nas只有一个网卡,因此桥接虚拟网卡是必须折腾的了。
折腾过程
之前的文章里也介绍过,宿主机nas用的ubuntu server 18.04
系统,因此这里的操作都是基于这个系统来的。
1、从宿主网卡建立网桥
ubuntu 18.04系统使用新的netplan
来设置网络,不是之前的interface了,所以可以使用如下的过程创建网桥。
sudo vi /etc/netplan/01-netcfg.yaml # 编辑文件内容,类似如下,br0桥接了 enp1s0物理网卡, network: version: 2 renderer: networkd ethernets: enp1s0: dhcp4: no bridges: br0: dhcp4: yes interfaces: [enp1s0] # 使用apply命令生效,最好重启一下 sudo netpaln apply
2、安装openwrt虚拟机
libirt
安装虚拟机非常方便,如下命令即可安装
virt-install \ --name openwrt \ --memory 512 \ --vcpus sockets=1,cores=1,threads=1 \ --os-type=linux \ --disk path=/kvm/openwrt/openwrt-x86-64-combined-ext4.img,bus=ide \ --network bridge=br0,model=virtio \ --hvm \ --virt-type kvm \ --import
这里使用了上面步骤生成的br0
创建了虚拟网卡,同时网卡类型使用的半虚拟化的virtio
,性能会高一些。
3、设置多个虚拟网卡,用于旁路
我这里要求比较特殊,需要2个lan口的虚拟网卡,因为可以通过如下命令编辑网卡
virsh edit openwrt
然后在deveices
节点下加入类似如下的配置即可:
<interface type='bridge'> <mac address='33:33:00:33:33:33'/> <source bridge='br0'/> <model type='virtio'/> <driver name='vhost' queues='5'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface>
同样的,这里的网桥依然是桥接br0
,同时这里使用了vhost
的驱动,在virtio
基础上进一步优化了网络性能。
进入openwrt界面进行网卡啥的设置,网上教程很多,我这里就不赘述了,只用设置下网卡ip、路由器、dns这些就好。
4、设置旁路由
经过上面的步骤,我们已经创建了openwrt虚拟机,且上面有几个和路由器lan在一起的网卡,下一步就是将我们路由器的网关,设置到openwrt上面。
这个步骤不同路由器不一样,一般在dhcp设置里,设置下网关和dns,都指向我们openwrt的虚拟网卡ip即可。
总结
经过上面的折腾,旁路由就好了,以后adblock
这些插件可以随意安装啦。
发表评论