本帖最后由 Tongsky 于 2022-10-29 17:12 编辑
最近入手HK1 BOX,一番折腾下来算是入门了,在恩山和网上看了很多帖子,始终没有一篇能完全适合自己的情况,于是动手写了一篇。本文既是备忘,也是分享。
为什么用旁路由? 准备换个好一点的主路由,用了几年的K2P没有WiFi6,配不上我的AX210和千兆宽带,但是好一点的路由器又不能刷固件。上网的稳定性是优先考虑的,暂时不确定电视盒子做主路由是否可靠,不想冒险折腾。因此用来做旁路由,即使旁路由挂了,也不影响日常上网。
前置步骤: HK1 BOX已经刷入Armbian并且安装好Docker,Portainer管理面板。
一、打开网卡混杂模式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(建议登录后尽快修改)
六、禁止旁路由DHCPIP地址让主路由统一分配,因此要禁止旁路由的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
|