利用闲置小主机安装Lede作为旁路由

平时一直使用华为AX3 PRO 作为主路由,但是华为AX3 Pro路由功能少的可怜,于是将闲置的Ubuntu小主机安装上Openwrt来实现功能拓展。
华渣AX3 Pro
效果图

环境说明

Ubuntu 20,千兆单网卡,

安装OpenWrt

1:先安装Docker

sudo apt install docker.io

2:加载 TPROXY 内核模块为支持 UDP 透明代理

sudo modprobe -v xt_TPROXY

3:新建一个macvlan网络

Linux下的Docke包含的网络模式macvlan,它允许在同一个物理网卡上配置多个 MAC 地址,即多个 interface,每个 interface 可以配置自己的 IP。而虚拟机软件能够通过桥接实现虚拟机内部获得一个和宿主机同一网段的ip, 也就是说对路由器来说, 网络上存在两个真实物理设备。
sudo docker network create -d macvlan \
    --subnet=192.168.3.0/24 \ #这里改成你实际网段
    --gateway=192.168.3.1 \ #实际上的路由器网关
    -o parent=enp1s0 \  #你的网卡名,可以使用ifconfig来查看
    macvlan0

4:可以通过命令查看验证该新建的docker网络

sudo docker network ls
sudo docker network inspect macvlan0

image.png

5: 安装Openwrt镜像

sudo docker import http://mirrors.ustc.edu.cn/openwrt/releases/19.07.5/targets/x86/generic/openwrt-19.07.5-x86-generic-generic-rootfs.tar.gz openwrt:19.07.5

可以通过命令查看验证导入的镜像sudo docker iamge ls

6:启动OpenWrt容器

sudo docker run -d \
    --restart unless-stopped \
    --network macvlan0 \
    --ip=192.168.3.35 \#设置容器的ip(之后宿主机网关指向这里,也相当于虚拟的软路由容器; 注意不能和真实路由中已经使用的ip冲突) 
    --privileged \
    --name openwrt \
    openwrt:19.07.5 \
    /sbin/init

7:配置OpenWrt容器

进入容器

sudo docker exec -it openwrt /bin/sh

编辑网络配置文件

vi /etc/config/network
config interface 'lan'
    option type 'bridge'
    option ifname 'eth0'
    option proto 'static'
    option ipaddr '192.168.3.35' #容器的ip
    option netmask '255.255.255.0'
    option ip6assign '60'
    option gateway '192.168.3.1' #实际路由器网关
    option dns '127.0.0.1'

重启网络

/etc/init.d/network restart

8:初始化OpenWrt

浏览器打开(你在是上一步设置的容器IP): http://192.168.3.35
初始密码为空直接登陆即可,然后点击System->Software->Configure opk。将opkg/distfeeds.conf里面的内容换成以下内容。(更改软件源为国内镜像源)

src/gz openwrt_core http://mirrors.ustc.edu.cn/lede/releases/19.07.5/targets/x86/64/packages
src/gz openwrt_base http://mirrors.ustc.edu.cn/lede/releases/19.07.5/packages/x86_64/base
src/gz openwrt_freifunk http://mirrors.ustc.edu.cn/openwrt/releases/19.07.5/packages/x86_64/freifunk
src/gz openwrt_luci http://mirrors.ustc.edu.cn/lede/releases/19.07.5/packages/x86_64/luci
src/gz openwrt_packages http://mirrors.ustc.edu.cn/lede/releases/19.07.5/packages/x86_64/packages
src/gz openwrt_routing http://mirrors.ustc.edu.cn/lede/releases/19.07.5/packages/x86_64/routing
src/gz openwrt_telephony http://mirrors.ustc.edu.cn/lede/releases/19.07.5/packages/x86_64/telephony

然后进入命令行安装一些依赖、中文语言包、和material主题

opkg update
opkg install luci-i18n-base-zh-cn
opkg install luci
opkg install luci-base
opkg install iptables
opkg install dnsmasq-full
opkg install coreutils
opkg install coreutils-nohup
opkg install bash
opkg install curl
opkg install jsonfilter
opkg install ca-certificates
opkg install ipset
opkg install ip-full
opkg install iptables-mod-tproxy
opkg install kmod-tun
opkg install luci-compat
opkg install luci-theme-material

如果安装某个不可说服务提示:Capsh异常,请尝试重新安装依赖【libcap】和相应的Capsh库,只需要安装附件里面的两个包即可。

附件:

https://cdn.nextrt.com/blog/libcap_2.43-1_x86_64_1608701236924.ipk
https://cdn.nextrt.com/blog/libcap-bin_2.43-1_x86_64_1608701236970.ipk

9:配置客户端网关

安装好科学服务后,只需要修改客户端网关和DNS服务器地址为 容器IP即可。
image.png

备注

由于容器每次使用镜像重启都会
丢失未保存的设置,最好在设置好之后将当前运行容器commit到镜像。

sudo docker commit 容器id openwrt:v1
# openwrt   lede   路由  

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×