使用桥接虚拟网卡搭建openwrt旁路由

缘起

前段时间折腾在树莓派上搞了个pi-hole用来去广告,然而经过一段时间发现这台树莓派有时候会死机,导致整个局域网的dns解析跪了。

openwrt作为一个非常流行的软路由系统,里边能安装各种网络相关的插件,比如adblockv2ray等,因此就折腾着搞一个旁路由。

现在是没有多余的硬件机器来搞的,只能在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这些插件可以随意安装啦。


发表评论

必填

选填

选填

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。