在Docker 中运行 OpenWrt 旁路网关
步骤开始
成功登陆到树莓派的 SSH 后,在拉取镜像之前,我们还需要进行一些额外的工作:
1.打开网卡混杂模式
|
2.创建网络
(须结合实际网络情况,不能照抄命令)
|
这一条命令需要根据树莓派所处的网络环境来做修改,可以使用 sudo ifconfig
命令来查看树莓派 eth0 网卡获得的 IP 地址,如果树莓派获得的 IP 地址为 192.168.2.154
,那么说明树莓派处在 192.168.2.x
网段,相应的,命令中的192.168.123.0
和192.168.123.1
需要被替换成 192.168.2.0
和192.168.2.1
:
|
此时,我们使用 docker network ls
命令可以看到网络macnet
已建立成功:
|
3.拉取镜像
若身处国内,为提高拉取速度,请拉取阿里云仓库中的镜像:
|
同时小苏也提供存放在 Docker 官方仓库 中的镜像:
|
镜像拉取完成后,我们可以执行docker images
命令查看现存镜像:
|
可见,镜像已成功拉取到本地。
4.创建并启动容器
|
其中:
--restart always
参数表示容器退出时始终重启,使服务尽量保持始终可用;
--name openwrt
参数定义了容器的名称;
-d
参数定义使容器运行在 Daemon 模式;
--network macnet
参数定义将容器加入 maxnet
网络;
--privileged
参数定义容器运行在特权模式下;
registry.cn-shanghai.aliyuncs.com/suling/openwrt:latest
为 Docker 镜像名,因容器托管在阿里云 Docker 镜像仓库内,所以在镜像名中含有阿里云仓库信息;
/sbin/init
定义容器启动后执行的命令。
启动容器后,我们可以使用 docker ps -a
命令查看当前运行的容器:
|
若容器运行信息STATUS
列为 UP
状态,则说明容器运行正常。
5.进入容器并修改相关参数
(须结合实际网络情况,不能照抄配置)
|
其中:
openwrt
为容器名称;
bash
为进入容器后执行的命令。
执行此命令后我们便进入 OpenWrt 的命令行界面,首先,我们需要编辑 OpenWrt 的网络配置文件:
|
我们需要更改 Lan 口设置:
|
其中:
所有的 192.168.123.x
需要根据树莓派所处网段修改,option gateway
和option dns
填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154
,路由器 IP 为192.168.2.1
,则需要这样修改:
|
option ipaddr
项目定义了 OpenWrt 的 IP 地址,在完成网段设置后,IP最后一段可根据自己的爱好修改(前提是符合规则且不和现有已分配 IP 冲突)。
6.重启网络
|
7.进入控制面板
在浏览器中输入第 5 步option ipaddr
项目中的 IP 进入 Luci 控制面板,若option ipaddr
的参数为 192.168.123.100
,则可以在浏览器输入 http://192.168.123.100
进入控制面板。
用户名:root
密码:password
8.关闭 DHCP 服务
在 “网络 - 接口 - Lan - 修改” 界面中,勾选下方的 “忽略此接口(不在此接口提供 DHCP 服务)”,并“保存&应用”。
9.主路由 DHCP 设置
进入路由器后台中,将主路由的 DHCP 的默认网关和 DNS 服务器设置为第 5 步中option ipaddr
项目中的 IP。
10.重新连接路由器
完成以上操作后,断开设备(如手机,电脑)与路由器的连接,重新连接路由器,连接路由器的设备将获取到我们设置到的 IP。
其他修复
1.关闭 WLAN 硬件加速
设置旁路路由后,若出现访问国内网站网速慢,不稳定的情况(多见于 Pandavan 及其改版固件,如华硕老毛子固件),请在路由器的控制面板中关闭有关 WLAN 的硬件加速,比如选择“Offload TCP/UDP for LAN”(若未出现此现象请忽略):
2.宿主机网络修复
OpenWrt 容器运行后,宿主机内可能无法正常连接外部网络,需要修改宿主机的 /etc/network/interfaces
文件以修复:
(须结合实际网络情况,不能照抄配置)
|
以“树莓派爱好者基地”64 位 Debian 为例,向文件末尾添加:
|
其中,所有的 192.168.123.x
都需要按照树莓派所处网段更改,gateway
和dns-nameservers
填写路由器的 IP,若树莓派获得的 IP 为 192.168.2.154
,路由器 IP 为192.168.2.1
,则需要这样修改:
|
修改后重启树莓派,之后树莓派的局域网 IP 地址将会固定为/etc/network/interfaces
文件中address
参数中的地址。
3.手动指定网关
如果路由器固件不支持自定义 DHCP 服务的网关及 DNS 地址(常见于路由器官方固件),或者只希望局域网下的个别设备接入旁路网关时,须在接入设备上做以下配置:
安卓:
需要在安卓的 WIFI 设置内将 IP 获取方式更改为“静态”或“手动”,其中:
“IP 地址”项目需要更改为网段内不冲突的地址;
“网关”或“路由器”项目需要更改为旁路网关 IP 地址;
“前缀长度”项目填写“24”;
“DNS”项目需要更改为旁路网关 IP 地址(两个 DNS 输入框填写一个就可以)。
完成并提交设置后,关闭 WIFI 开关再打开,连接设置的 WIFI 热点,若当前网络参数为设定值,则证明设置成功。
Windows:
在无线热点的“属性”界面下,点击 “IP 设置 - 编辑”按钮,在弹出框中更改 IP 分配模式为“手动”,打开 IPV4 的开关,根据所处网段及上文安卓的相关设置填写相关参数即可。
注意事项
文章所述方案适用于光猫或路由器已完成宽带拨号的网络环境,未测试也不推荐使用 Docker 内的 OpenWrt 进行宽带拨号;
OpenWrt 容器跟随树莓派系统启动,无需手动干预;
由于容器内系统内核共享宿主机内核,所以在 Luci 面板的 “内核版本”项与宿主机内核版本一致;
在对容器进行停止或删除操作时,树莓派可能会发生卡顿现象,SSH 可能会断开,1~2 分钟后会恢复正常,目前原因不明;
经测试,发现 Adblock 不工作,UnblockNeteaseMusic 需要自行设置代理,除此之外容器中的 OpenWrt 多数应用工作正常,如有发现不能正常工作的应用请评论反馈~
功能展示
参考资料
1.OpenWrt By Lean · coolsnowwolf/lede - GitHub
https://github.com/coolsnowwolf/lede
2.【小狮子编译贴】抛砖引玉,为打造N1路由神器 - 恩山无线论坛
https://www.right.com.cn/forum/thread-588747-1-1.html
3.docker openwrt 踩坑的几个小问题解决过程分享 - 恩山无线论坛
https://www.right.com.cn/forum/thread-1048535-1-1.html
4.N1刷入LEAN OPENWRT做旁路网关,导致访问国内网站卡顿 - 恩山无线论坛
https://www.right.com.cn/forum/thread-506510-1-1.html
在Docker 中运行 OpenWrt 旁路网关相关推荐
- N1刷Armbian系统并在Docker中安装OpenWrt旁路由的详细教程
最近入手了个传说中的N1,CPU.内存.存储卡的配置还不错,但只有1个网口(不过是千兆的),USB接口又是2.0的,实在没有想好到底能干啥.本来想只刷个openwrt路由固件来测试哈的,但又觉得浪费了 ...
- docker保护python源码_Tensorflow在Docker中运行和源码编译
本文分享在在Docker中运行Tensorflow和进行源码编译的方法和步骤,包括:编译.构建docker镜像.创建和运行Docker容器.部署完的容器可以通过Jupyter Notebook进行访问 ...
- ASP.NET Core 网站在Docker中运行
Docker作为新一代的虚拟化方式,未来肯定会得到广泛的应用,传统虚拟机的部署方式要保证开发环境.测试环境.UAT环境.生产环境的依赖一致性,需要大量的运维人力,使用Docker我们可以实现一次部署, ...
- 在docker中运行ASP.NET Core Web API应用程序
本文是一篇指导快速演练的文章,将介绍在docker中运行一个ASP.NET Core Web API应用程序的基本步骤,在介绍的过程中,也会对docker的使用进行一些简单的描述.对于.NET Cor ...
- 在Docker中运行ASP.NET Web API解决方案
目录 介绍 先决条件 如何容器化现有项目 添加docker-compose项目 带有docker-compose的容器化解决方案 添加环境变量 后端 前端 不使用Visual Studio运行您的应用 ...
- 如何在docker中运行MySQL实例(转载)
如何在docker中运行MySQL实例 转自:https://blog.csdn.net/siying8419/article/details/79670246 通常初学者学习docker时,不太清楚 ...
- zkeacms mysql_在Docker中运行纸壳CMS并配置使用MySql
纸壳CMS是基于ASP .Net Core开发的可视化内容管理系统,可以跨平台部署,可以在容器中运行.接下来看看如何在docker中运行纸壳CMS. 方式一 直接运行以下命令即可在docker中运行纸 ...
- k3d入门指南:在Docker中运行K3s
在本文中,我们将简单了解k3d,这是一款可让您在安装了Docker的任何地方运行一次性Kubernetes集群的工具,此外在本文中我们还将探讨在使用k3d中可能会出现的一切问题. 什么是k3d? k3 ...
- 在Docker中运行EOS(MAC版)
在Docker中运行EOS(MAC版) 在Docker中也可以简单快速的构建EOS.IO.笔者在Mac平台下参考官方文档躺了一次河.记录如下: 安装依赖 Docker 版本 17.05或者更高 tes ...
最新文章
- python脚本调度程序_Windows 任务调度程序定时执行Python脚本
- 4.1.9 文件系统的层次结构
- 在国企当程序员是什么体验?
- oracle 如何数组变成表,Oracle从零开始19——表的管理09——嵌套表和可变数组
- STM32F10x随笔(gcc+scons)
- ofbiz webservice 例解
- 火山PC_POST教程
- Wannafly Winter Camp 2019 Day4 G 置置置换 (oeis/DP)
- python怎么对excel进行排序_python – 使用openpyxl对Excel进行排序和自动过滤
- java机票编程_携程预订机票后台java开发编程
- 【论文解读 WSDM 2020 | KRF】Integrating Knowledge Relations into Style Correlations for 多标签音乐风格分类
- 代码主题darcula_设置 IntelliJ IDEA 的彩色代码主题
- 量子有什么特性计算机,量子是什么、量子具有什么特性、又有什么作用?
- 霍华德:二呆青年勤修苦练终成一代大侠记
- 计算机考试感受作文,关于考试感受作文5篇
- 等我怎么怎了,就如何如何
- 回首2015年小文codeRoad
- 少年不惧岁月长,奋楫笃行国学香
- CocoaPods添加和删除某个库
- 关于使用多普达windows mobile 手机使用联通卡不能上网的问题