OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

2023-11-04 18:50:11 47点赞 399收藏 24评论

本文环境:

ubuntu 20.04,x86_64

Docker version 20.10.21

本教程适合入门

设置网卡混杂模式

ifconfig eno1 promisc

eno1是我的物理网卡,如果不知道可以通过ifconfig查看

通过ifconfig也可以确认已经开启混杂模式(PROMISC)

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

添加macvlan类型的docker网络

sudo docker network create -d macvlan

--subnet=192.168.0.0/24

--gateway=192.168.0.1

-o parent=eno1 openwrt_net

注意:subnet、gateway要根据实际网络环境设置,我这里局域网是192.168.0.x所以设置子网

192.168.0.0/24,gateway设置为我自己主路由的地址192.168.0.1

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

下载镜像

我是X86架构64位CPU,所以选择对应x86_64/amd64的镜像,拉取镜像:

sudo docker pull registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64

镜像来源镜像来源

自于SuLingGG大佬分享的镜像

启动镜像及network设置

sudo docker run --restart always

--name openwrt

-d --network openwrt_net --privileged

registry.cn-shanghai.aliyuncs.com/suling/openwrt:x86_64 /sbin/init

启动后,进入容器

docker exec -it openwrt /bin/bash

如果不熟悉命令行,也可以从Portainer中进入容器

然后修改网络配置文件

vim /etc/config/network

将红色框内容根据实际情况修改为可用的IP地址:

option ipaddr -- 容器IP,也就是openwrt系统的地址

option gateway -- 设置为主路由的地址

option dns -- 这里先设置为一个公共的dns,这里选择了腾讯dns,根据自己喜好选择

network配置文件network配置文件

然后重启网络服务:

/etc/inti.d/network restart

以下是直接从命令行进行上述设置的示例

重启network重启network

旁路由配置

上面设置了ipaddr地址为192.168.0.201,从这个地址登录系统web端

OpenWrt webOpenWrt web

初始密码为空,为了安全需要登录后重新设置

要将openwrt设置为旁路由,需要三个必要配置:

  1. 【网络】-【接口】-【物理设置】,将【桥接接口】选项去掉

网络-接口网络-接口OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

2. 【网络】-【防火墙】-【自定义规则】增加规则:

iptables -t nat -I POSTROUTING -j MASQUERADE

防火墙规则防火墙规则
  1. 检查下【网络】-【接口】-【基本配置】,是否符合本地环境,【使用自定义的 DNS 服务器】先配置为一个公共dns

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

PC端修改网关为这个旁路由的地址(移动端类似)

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

至此,Docker部署openwrt,配置为旁路由的步骤就结束了,PC通过旁路由可以正常上网。

AdGuard安装和设置

安装AdGuard

进入容器docker exec -it openwrt /bin/bash

执行 wget --no-verbose -O - https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

脚本会根据操作系统自动选择对应版本下载,并安装

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

配置AdGuard

安装完成后,进入到AdGuard的web页面 192.168.0.201:3000

注意:192.168.0.201是我的openwrt容器的ip地址,需要根据实际环境替换

进入web页面后,根据导引设置,注意DNS服务器端口原为53,需要设置为其他端口号,这里设置为5300。

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

然后再设置DNS,【设置】--【DNS设置】--【上游DNS服务器】这里添加了三个公共的DNS

可以根据自己需要设置

并选择【并行请求】

上游DNS服务器上游DNS服务器

再接下来,【过滤器】--【DNS黑名单】添加自定义过滤规则

我这里添加了一条规则,规则URL:https://gitlab.com/cats-team/adrules/-/raw/main/dns.txt

添加过滤规则添加过滤规则

OpenWrt上的设置

以上AdGuard页面上设置完成后,需要再对OpenWrt的设置做响应调整。

然后回到openwrt页面【网络】-【接口】-【基本设置】,将【使用自定义的DNS服务器】设置为192.168.0.201,即本容器IP,再次提醒需要根据实际环境设置。

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

【网络】-【防火墙】-【自定义规则】修改两条规则,将--to-ports修改为AdGuard配置的DNS端口5300。

修改防火墙规则修改防火墙规则

开启AdGuard的效果比对如下。实际上不增加自定义过滤规则就能达到这个效果了。

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

从AdGuard仪表盘可以验证配置是否生效

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

Docker环境下保存配置

请注意本文的OpenWrt是运行在容器中的,各种配置保存在容器的存储中,如果容器重启可能造成配置丢失。一种简单粗暴的办法是,将配置好的容器保存为新的镜像。

sudo docker commit openwrt openwrt_new:202311v1

"openwrt":运行中的容器名

"openwrt_new:202311v1":新镜像名称:tag

然后remove旧的容器,用新镜像启动

sudo docker run --restart always --name openwrt

-d --network openwrt_net --privileged

openwrt_new:202311v1 /sbin/init

旁路由对网速的影响

在openwrt旁路由模式下,对wifi和有线的网速有一定影响,网上也有一些关于旁路由造成网速变慢的讨论。为了验证上述情况,进行了实测。

为了让减少对网速的影响,参考《OpenWrt 网速慢的解决方法》,对旁路由进行一些设置。进入【网络】-【防火墙】,将启用 SYN-flood 防御的√去掉(默认是选中的),将【lan】的“IP动态伪装”选中,如下图。也可以开启Turbo ACC加速,据说效果不明显。

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

其实,上述设置也不见得有特别明显的效果。

然后通过测速软件对比了使用旁路由前后网速的变化(非专业工具和非专业知识背景)。

首先,对比PC(有线连接到主路由)上将网关设置为openwrt旁路由对网速的影响,结果见下图。使用360自带的测速器,可以看到使用旁路由时最大连接速度低于前后两次未使用旁路由的测试,但是衰减幅度不算大。

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

然后,对比手机wifi连接情况下的速度。测试实例如下图,左边为旁路由模式,右边为非旁路由。经过几次测试,发现在wifi下,两者差异并不大。

OpenWrt in Docker: 打造旁路由,配置AdGuard,只需几步!

以上实验的主路由为某AX3000路由器。但是,如果主路由换成wifi5 AC1900M的路由器,使用旁路由对网速影响较大,速度至少衰减一倍以上。

小结

当然OpenWrt的功能远远不止上述功能,本文仅是记录入门操作作为备忘,其他进阶功能还待继续探索。

作者声明本文无利益相关,欢迎值友理性交流,和谐讨论~

展开 收起

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

¥2259.00

幻隐 HV2000 Pro NVMe M.2 固态硬盘 1TB(PCI-E3.0)

幻隐 HV2000 Pro NVMe M.2 固态硬盘 1TB(PCI-E3.0)

¥225.00

倍控j4125/J4105四六网口千兆软路由迷你主机家用办公嵌入式工控机无风扇静音esxi虚拟机爱快LEDE系统openwrt

倍控j4125/J4105四六网口千兆软路由迷你主机家用办公嵌入式工控机无风扇静音esxi虚拟机爱快LEDE系统openwrt

¥809.00

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

QNAP 威联通 TS-464C2 四盘位 NAS网络存储(赛扬N5095、8GB)黑色

2259元起

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS(赛扬N5095、8GB)

1699元起

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

QNAP 威联通 TS-466C 四盘位NAS(奔腾N6005、8GB)

3099元起

QNAP 威联通 TS-564 五盘位NAS (N5095、8GB)

QNAP 威联通 TS-564 五盘位NAS (N5095、8GB)

1800元起

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

QNAP 威联通 TS-264C-4G 双盘位 NAS存储(N5105、4GB)

1599元起

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

QNAP 威联通 TS-216 双盘位NAS (ARM Cortex A55、2GB)

999元起

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-462C 4盘位NAS(赛扬N4505、4GB)

1579元起

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

QNAP 威联通 TS-262C 双盘位NAS(赛扬N4505、4GB)

1279元起

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

QNAP 威联通 TS-873A 8盘NAS(V1500B、8GB)

7203.75元起

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

QNAP 威联通 TS-416 四盘位NAS(Cortex-A55、4GB)

1399元起

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS私有云(内含硬盘8T

QNAP 威联通 TS-464C 4盘位8G内存四核心处理器网络存储服务器内置双M.2插槽NAS私有云(内含硬盘8T

6899元起

QNAP 威联通 QNA-T310G1T Thunderbolt 3 雷电3 转换10GbE 万兆网络存储转换器

QNAP 威联通 QNA-T310G1T Thunderbolt 3 雷电3 转换10GbE 万兆网络存储转换器

1559元起

QNAP 威联通 TS-832PX 8盘位NAS(AL324、4GB)

QNAP 威联通 TS-832PX 8盘位NAS(AL324、4GB)

6280元起

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

QNAP 威联通 TS-464C 4盘位NAS 黑色(赛扬N5095、8GB)

3059元起

QNAP 威联通 TVS-675 8G NAS桌面型文件网络智能云(内含8T*2)

QNAP 威联通 TVS-675 8G NAS桌面型文件网络智能云(内含8T*2)

7199元起

QNAP 威联通 TS-564内存8G四核五盘位双2.5GbE 网络端口NAS网络存储4K影片转档

QNAP 威联通 TS-564内存8G四核五盘位双2.5GbE 网络端口NAS网络存储4K影片转档

4999元起
24评论

  • 精彩
  • 最新
  • 旁路由网速减半怎么解决

    校验提示文案

    提交
    正文里我增加了对网速影响的测试,发现是有衰减,但是幅度不大。可能是我的旁路由还没启用一些应用。

    校验提示文案

    提交
    收起所有回复
  • 为什么不直接在docker里部署,不是多此一举吗

    校验提示文案

    提交
    我难道不是直接在docker里部署的?

    校验提示文案

    提交
    收起所有回复
  • 这思路好,NAS上开个Docker直接省了我的树莓派网关

    校验提示文案

    提交
    nas上还可以用虚拟机 [小眼睛]

    校验提示文案

    提交
    收起所有回复
  • 在CSDN看到一片文章讲到了IP动态伪装就等于iptables -t nat -I POSTROUTING -j MASQUERADE这辆开启一个就行了,MASQUERADE就是伪装的意思

    校验提示文案

    提交
    上面不是加了这段规则了吗

    校验提示文案

    提交
    收起所有回复
  • 为什么开始要把桥接取消掉

    校验提示文案

    提交
    可以试试不取消

    校验提示文案

    提交
    我试过 只要是一直没弄成,所以没法知道不取消桥接有啥影响 [喜极而泣]

    校验提示文案

    提交
    收起所有回复
  • 能让nas的docker走openwrt吗

    校验提示文案

    提交
    nas的网关设置为openwrt得ip?

    校验提示文案

    提交
    收起所有回复
  • 👍👍👍

    校验提示文案

    提交
  • 有没有在docker下主路由的方案?怎么全都是旁路油?

    校验提示文案

    提交
    应该是网关配置问题吧,宿主加入docker网络吗?

    校验提示文案

    提交
    收起所有回复
  • 高级

    校验提示文案

    提交
  • 我用lxc

    校验提示文案

    提交
  • 涨见识

    校验提示文案

    提交
  • 请教个问题,困扰很久了,
    前提:我是主路由,拨号,后面接群辉,群辉虚拟机装op当旁路由,里面装梯子,以后群辉走旁路由以便全局代理。
    问题:我家有公网,再群辉中成功进行了ddns,但是如果我在家庭网络中就无法通过ddns的域名访问群辉,在家庭网络外就可以,怎么能让家内家外都可以通过ddns访问群辉?

    校验提示文案

    提交
    很简单啊,在路由器(静态域名映射)或者adguard(DNS重写)里面,直接把域名指向群晖在本地局域网中的ip。这样外面访问是公网ip,家里访问是内网ip,两不误。

    校验提示文案

    提交
    收起所有回复
  • 我用 n1 做旁路由好几年了,稳定功耗低,简单易用。

    校验提示文案

    提交
    我也是n1做旁路由,但我的很容易像网易网站图片就打不开。重启一下才可以

    校验提示文案

    提交
    换个固件试试。

    校验提示文案

    提交
    收起所有回复
提示信息

取消
确认
评论举报

相关好价推荐
查看更多好价

相关文章推荐

更多精彩文章
更多精彩文章
天猫超级红包
距结束::
现金红包天天领,最高8888元
红包按钮
最新文章 热门文章
399
扫一下,分享更方便,购买更轻松