记忆一隅

Docker下安装openwrt做旁路由

2020-03-31 · 4 min read
网络

Install openwrt under Docker for bypass router

前言

我的斐讯N1 运行着armbian linux用作校园网的免流服务器,但是就做着一个功能,实在有点浪费,同时现在因为疫情迟迟没有开学,在家里科学上网查资料手机电脑都要开个科学客户端很是麻烦,就决定在斐讯N1上再安装一个Docker openwrt做旁路由网关。
自己配置好之后又指导着同学在贝壳云上安装成功,方法应该是通用于所以装有armbian-linux的服务器。网上的教程都或多或少有点问题,很多个教程看起来很麻烦,决定写下来方便自己以后再次配置。

配置

  • 为方便配置,最好使用root用户,若不是root用户则输入su进行切换。
  • 在命令中分别输入以下命令,安装Docker
curl -fsSL https://get.docker.com -o get-docker.sh #获取安装脚本
sh get-docker.sh –mirror Aliyun #使用阿里云源进行安装,加快安装速度
  • 安装完Docker后,打开网卡的混杂模式:
ip link set eth0 promisc on
  • 给Docker创建网络,运行以下命令,其中192.168.1.0192.168.1.1都要修改到自己的对应网段192.168.x.0192.168.x.1
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 macnet
  • 拉取openwrt镜像,这里我使用的是buddyfly的openwrt-aarch64,在docker hub找到的docker镜像,地址:buddyfly/openwrt-aarch64 ,以下配置基于这个docker镜像。
docker pull buddyfly/openwrt-aarch64
  • 开启openwrt容器,并把这个容器命名为openwrt
docker run --name openwrt --restart always -d --network macnet --privileged buddyfly/openwrt-aarch64:latest
  • 修改docker内的openwrt网络设置,首先输入:
docker exec -it openwrt /bin/bash

输入之后会进入docker容器内,修改网络设置vi /etc/config/network
输入i开始编辑,编辑完成之后按ESC退出编辑,然后输入:wq(不要忘记冒号)回车保存,这里需要给容器内的openwrt指定静态地址,网关和dns,这些配置要和你家中的网络处于一个网段。

完成后按Crtl+D退出docker容器。

  • 重启docker容器,到这里openwrt已经安装好了:
docker restart openwrt
  • 在浏览器输入刚刚配置的静态地址,进入openwrt的luci界面,我这个固件的密码是password。进入网络-接口-修改,进行配置。需要检查ip,子网掩码,ipv4网关以及dns是否配置正确。


选择忽略DHCP服务

然后保存应用。

  • 配置防火墙,在网络-防火墙-自定义规则添加以下命令后重启防火墙:
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE 


到这里,docker openwrt就全部配置完了。

使用

旁路由网关的使用有两种方式

  • 一种是分设备配置网关,这样配置只影响修改过配置的设备,只有这些设备的流量走旁路由。
  • 另一种是将主路由的网关指向docker openwrt,家庭中所有网络的流量都走旁路由。

第一种方式需要分设备配置,比较麻烦,第二种在修改时则会影响家中的网络访问,造成网络中断。我使用的是第一种方式,需要修改电脑或者手机的网关,将网关指向openwrt。

update at 2021-10-12
另外推荐flippy制作的openwrt docker镜像,使用方法类似:https://hub.docker.com/r/unifreq/openwrt-aarch64

部分内容参考:https://zorz.cc/post/n1-docker-openwrt.html