解决zerotier带端口无法访问docker内的容器(玩客云openwrt)

624 字
3 分钟
解决zerotier带端口无法访问docker内的容器(玩客云openwrt)

设备环境:#

  1. 设备: 玩客云 openwrt(lanlanop)

  2. 主路由 小米AX3000T局域网IPv4地址: 192.168.1.1

  3. 旁路由 玩客云局域网IPv4地址: 192.168.1.3

  4. zerotier虚拟局域网地址(旁路由): 192.168.192.2

zerotier页面
zerotier页面
openwrt插件页面
openwrt插件页面

现状: 局域网正常访问所有docker端口

01
01

在局域网下可以正常访问docker容器端口:8096/8080/7892/6881/8920等端口

比如:

  • 192.168.1.3:8096
  • 192.168.1.3:8080
  • 192.168.1.3:7892
  • 192.168.1.3:6881
  • 192.168.1.3:8920

图片一
图片一
图片二
图片二
对照组: 非docker端口: 5244也可以正常访问
对照组
对照组


zerotier虚拟局域网,docker内端口无法访问

03
03

但是,非docker容器端口可以正常访问

04
04
05
05

使用虚拟局域网依旧可以访问5244端口,说明zerotier不只能访问80端口,其余非docker端口都可以访问


解决方法#

查看 系统-启动项 里的防火墙启动优先级是否早于docker和zerotier,默认是:

  • 防火墙 firewall 优先级:19

  • zerotier 优先级:99

  • dockerd 优先级:99

  • dockerman 优先级:99

    06
    06
    07
    07
    需要改过来 把firewall改到docker和zerotier后面启动。 这里我把

  • 防火墙 firewall 优先级改成:99

  • zerotier 优先级改成:80

  • dockerd 优先级改成:80

  • dockerman 优先级改成:80

08
08
09
09

操作:

Terminal window
/etc/init.d/firewall
/etc/init.d/zerotier
/etc/init.d/dockerd
/etc/init.d/dockerman

打开以上的这些文件逐一进行修改

10
10

Terminal window
START=优先级

START=后面的就是优先级

修改成自己想要的值

然后为他们重新添加权限和开机启动:

SSH连接openwrt并输入:

Terminal window
# 添加权限
chmod +x /etc/init.d/firewall
chmod +x /etc/init.d/zerotier
chmod +x /etc/init.d/dockerd
chmod +x /etc/init.d/dockerman
# 开机启动
/etc/init.d/firewall enable
/etc/init.d/zerotier enable
/etc/init.d/dockerd enable
/etc/init.d/dockerman enable

11
11

然后重启就好了。


效果:#

12
12

这样就能通过zerotier访问docker内的容器了


总结:#

防火墙”firewall”早于docker和zerotier启动,虽然可以通过访问到openwrt内的端口,但是openwrt内的docker容器却无法访问,需等docker和zerotier都启动之后再启动防火墙。


另辟蹊径(方法二):#

经过测试,重启防火墙也可以从zerotier虚拟局域网访问到docker容器,但是每次openwrt开机加载完所有启动项后再重启防火墙才行。

重启防火墙:

Terminal window
/etc/init.d/firewall restart

自动重启防火墙:

将防火墙重启命令添加到系统启动脚本中,以便在系统启动时自动执行重启防火墙就行。

优先级晚于docker和zerotier即可,

如果有两个优先级相同的启动项,会以从小到大0-9,a-z的顺序依次执行。

注:没试过,理论上可行 其他平台文章: https://www.bilibili.com/read/cv31416305

文章分享

如果这篇文章对你有帮助,欢迎分享给更多人!

解决zerotier带端口无法访问docker内的容器(玩客云openwrt)
https://blog.jacksen168.top/posts/docker-container-unreachable-via-zerotier/
作者
jacksen168
发布于
2024-02-17
许可协议
CC BY-NC-SA 4.0

评论区

Profile Image of the Author
jacksen168
Hello, I'm jacksen168.
音乐
封面

音乐

暂未播放

0:00 0:00
暂无歌词
分类
标签
站点统计
文章
19
分类
4
标签
46
总字数
21,887
运行时长
0
最后活动
0 天前
访问统计
当前在线
-
今日访问
-
今日浏览
-
昨日访问
-
昨日浏览
-
本月访问
-
累计访问
-

文章目录