有关openwrt旁路网关的那些事
前言
性能羸弱的家用硬路由已经无法满足日益增长的上网需求,
对访问外网有需求的小伙伴建议和我一样转向旁路网关模式,
硬路由负责拨号+NAT确保网络稳定,软路由负责旁路网关,
同时有需求的设备手动修改网关和DNS实现代理。
设备
之前一直使用树莓派,后续也用过z8350单网口低功耗x86小主机,板载2G内存支持AES指令集,
通过Docker实现了openwrt + uptime-kuma + qbittorrent后因USB3.0不能满速置换。
实际上跑网关服务,支持AES的Arm处理器+1GB内存+千兆Ethernet足够满足日常使用。
搭建
搭建过程主要参考文末博客,整理在此防止失联。
sudo ip link set eth0 promisc on
docker network create -d macvlan --subnet=192.168.2.0/24 --gateway=192.168.2.1 -o parent=eth0 macnet
docker pull sulinggg/openwrt:latest
docker run --restart always --name openwrt -d --network macnet --privileged sulinggg/openwrt:latest /sbin/init
docker exec -it openwrt bash
vim /etc/config/network
# option ipaddr '192.168.2.100'
# option gateway '192.168.2.1'
# option dns '192.168.2.1'
/etc/init.d/network restart
出于性能考虑选择了macvlan模式进行部署,注意打开host网卡的混杂sudo ip link set eth0 promisc on
以NanoPi为例image选择国内镜像docker pull registry.cn-shanghai.aliyuncs.com/suling/openwrt-mini:armv8
如果不想折腾可以选择自带插件的非mini版,能够做到开箱即用,内存开销会略大一些。
问题
目前已知的一个Bug是启停Docker服务或openwrt容器会导致系统一分钟之内重启,
正常使用没问题,推测是Arm64的缘故因为N1上也能复现,暂时未见于x86平台。