找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
广告投放联系QQ68610888广告投放联系QQ68610888
广告投放联系QQ68610888广告投放联系QQ68610888
查看: 5168|回复: 7

[S905X3] 【小白入门】HK1 BOX在Docker安装OpenWrt实现旁路由功能

[复制链接]
发表于 2022-10-29 15:37 | 显示全部楼层 |阅读模式
本帖最后由 Tongsky 于 2022-10-29 17:12 编辑


最近入手HK1 BOX,一番折腾下来算是入门了,在恩山和网上看了很多帖子,始终没有一篇能完全适合自己的情况,于是动手写了一篇。本文既是备忘,也是分享。

为什么用旁路由?
准备换个好一点的主路由,用了几年的K2P没有WiFi6,配不上我的AX210和千兆宽带,但是好一点的路由器又不能刷固件。上网的稳定性是优先考虑的,暂时不确定电视盒子做主路由是否可靠,不想冒险折腾。因此用来做旁路由,即使旁路由挂了,也不影响日常上网。

前置步骤:
HK1 BOX已经刷入Armbian并且安装好Docker,Portainer管理面板。
主路由:K2P,OpenWrt固件,下载地址

一、打开网卡混杂模式
混杂模式就是接收所有经过网卡的数据包,包括不是发给本机的包,即不验证MAC地址。普通模式下网卡只接收发给本机的包(包括广播包)传递给上层程序,其它的包一律丢弃。Linux下网卡的混杂模式浅谈 - 腾讯云开发者社区-腾讯云 (tencent.com)
1.    通过SSH登录到电视盒子
输入ip addr或者ifconfig,回车,查看并记录网卡名称、IP地址;

2.    打开网卡混杂模式
命令:sudo ifconfig 你的网卡名 promisc
示例:sudo ifconfig eth0 promisc

检查是否已经打开网卡混杂模式,如果显示有“PROMISC”,则为已经打开。
命令:ifconfig 你的网卡名称
示例:
ifconfig eth0


二、创建Docker网络

1.    创建一个macvlan网络
macvlan 模式会为每个容器创建一个独立的 IP,每个容器可以通过独立的IP 进行访问。
docker network create -d macvlan \--subnet=你的子网 \#格式:ip_range\子网掩码,如192.168.3.0/24--gateway= 你家出口网关 \-o parent=开启了混杂模式的网卡名称 \给创建的docker网络命个名
以我为例,主路由IP(出口网关)为10.0.0.1,子网掩码为255.255.255.0(24),要做旁路由的设备(电视盒子)网卡名称为eth0,要创建一个名为openwrt_net的网络,则命令为:
docker network create -d macvlan --subnet=10.0.0.0/24 --gateway=10.0.0.1 -o parent=eth0 openwrt_net
详细帮助可在ssh输入docker network help。

2.    检查网络是否创建成功

命令:
docker network ls

三、创建并启动容器,并加入你创建的docker网络1.  根据设备的架构确定对应的镜像
命令:
arch
#得到返回若是aarch64,则为arm64架构
#得到返回若是armv6l、armv7l、armhf等等,则为32位
以我为例,HK1 BOX是选择镜像:sulinggg/openwrt:armv8


创建并启动容器
docker run --restart always \重启策略:总是自动重启--name 容器名称\#容器名称-d \#后台运行--network 你的docker网络名称\--privileged \#特权模式下运行openwrt:latest \#镜像名称/sbin/init#启动命令,相当于docker每次启动都会运行这个命令
以我为例, docker网络名称为openwrt_net,要创建一个叫OpenWrt的容器,镜像为sulinggg/openwrt:armv8,则输入:
docker run --restart always --name OpenWrt -d --network openwrt_net --privileged sulinggg/openwrt:armv8 /sbin/init


四、配置容器网络

1.    编辑OpenWrt网络配置文件
登录Portaniner面板,进入软路由容器的Bash命令控制台,编辑OpenWrt的网络配置文件。
vim /etc/config/network#(按i进入编辑模式)

2.    按下键盘Esc键退出编辑模式,输入:wq保存并退出。
提醒:进入编辑状态后,系统默认保存了一份文件,即使不编辑,也要输入:q退出,否则下次再进来编辑会提示有重复文件!
:wq:表示保存退出
:wq!:表示强制保存退出
:x:表示保存退出
:q:表示退出
:q!:表示强制不保存退出,不对文件进行保存

运行命令重启网络
/etc/init.d/network restart


五、登录旁路由Web管理面板进行设置
参考上面的option ipaddr,则旁路由的管理地址为10.0.0.2,通过浏览器访问。
用户名:root
密码:password(建议登录后尽快修改)

六、禁止旁路由DHCP
IP地址让主路由统一分配,因此要禁止旁路由的DHCP。
1.   在 “网络 - 接口 - Lan - 修改” 界面中,勾选下方的 “忽略此接口(不在此接口提供 DHCP 服务)”,点击“保存并应用”。
2.   在“网络 - DHCP/DNS- 高级设置”中禁用所有IPv6服务,点击“保存并应用”。
3.   在“网络”-“防火墙”中,关闭“SYN-flood 防御”,点击“保存并应用”。
4.   重启旁路由。

七、使用旁路由上网1.    所有的设备都使用旁路由
登录主路由(以openwrt为例),在 “网络 - 接口 - Lan - 编辑 – DHCP服务器 – 高级设置”添加两个选项,保存,然后“保存及应用”。
  • 3,你的网关IP  ——代表网关,IP就是旁路由的IP
  • 6,你的网关IP  ——代表DNS,IP就是旁路由的IP


2.    指定设备才使用旁路由
在指定的设备上,手动设置IP地址,将其“网关”和“首选 DNS”改为旁路网关的IP地址,即指向旁路由的IP,在本例中就是10.0.0.2。

八、其他

1.    设置防火墙规则
我还不知道有什么用的,有的文章说没必要,我就没有加这条规则。
路径:网络 > 防火墙 > 自定义规则 ,加入规则并保存:
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

本文主要参考如下文章并结合自己的操作实践整理而成,算是做个备忘吧。


原文发布在我的博客:https://www.migai.top/openwrt-in-docker.html

logo

只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
发表于 2022-10-29 16:04 | 显示全部楼层
我来思考思考,确实专业
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2022-10-30 02:41 | 显示全部楼层
armbian +1 ,不过是 x86
硬件直接安装 linux 再部署 docker 时,网卡混杂模式其实不是必须打开
如果先跑虚拟机再部署,那混杂模式还是打开比较好
而且 ifconfig 设置只是一次性,重启后会恢复默认,混杂模式会失效
要永久生效,需要修改配置文件,或设置一个开机自启

portainer 虽然好,但如果只是为了跑透明网关其实没必要部署
毕竟已经部署了 openwrt 容器,下一步,就是一条命令进入容器跑 ash 或 bash
# docker exec -it openwrt ash
# docker exec -it openwrt bash



进入容器后,修改 IPv4 可以用 openwrt 默认的 uci 命令,官网有详细文档
# uci set network.lan.ipaddr=your.device.ipv4.address
# uci set network.lan.gateway=your.router.ipv4.address
# uci set network.lan.dns=your.router.ipv4.address
# uci commit network
# service network restart

然后浏览器就可以打开 luci 后台了,建议取消 lan 口桥接并锁定 eth0
刚看了下,那条防火墙规则,sulinggg 默认已添加并指向 eth0

又及,可以试试用 docker 部署一下 v贰raya 其实更简单

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

×

点评

谢谢大佬分享~看上去你的方法更简单一点。我是主路由、旁路由互为网关,旁路由直接把Armbian刷进去emmc了,混杂模式设置了开机自启,全部设备通过旁路由访问网络。昨天旁路由有过几次断连接重启,然后整个网络就上不  详情 回复 发表于 2022-10-30 10:03
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

 楼主| 发表于 2022-10-30 10:03 | 显示全部楼层
edywh 发表于 2022-10-30 02:41
armbian +1 ,不过是 x86
硬件直接安装 linux 再部署 docker 时,网卡混杂模式其实不是必须打开
如果先跑 ...

谢谢大佬分享~看上去你的方法更简单一点。我是主路由、旁路由互为网关,旁路由直接把Armbian刷进去emmc了,混杂模式设置了开机自启,全部设备通过旁路由访问网络。昨天旁路由有过几次断连接重启,然后整个网络就上不了,不太稳定的感觉。我今天试试你说的方法,感谢~~
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2022-11-4 15:51 | 显示全部楼层
我进入那个bash控制台显示错误咋整
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2022-12-26 23:19 | 显示全部楼层
谢谢分享
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2023-1-17 12:54 来自手机 | 显示全部楼层
make......
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

发表于 2025-2-28 23:04 | 显示全部楼层
为啥不直接弄OPENWRT
只谈技术、莫论政事!(点击见详情) | 互相尊重、友善交流、切勿过度反应、玻璃心。胡乱输入灌水等操作将会被封禁ID。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

欢迎大家光临恩山无线论坛上一条 /2 下一条

有疑问请添加管理员QQ86788181|手机版|小黑屋|Archiver|恩山无线论坛(常州市恩山计算机开发有限公司版权所有) ( 苏ICP备05084872号 )

GMT+8, 2026-8-24 01:40

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

| 江苏省互联网有害信息举报中心 举报信箱:js12377 | @jischina.com.cn 举报电话:025-88802724 本站不良内容举报信箱:68610888@qq.com 电话:13506125623

快速回复 返回顶部 返回列表