禁止〖 IP + 端口 〗访问〖 Docker 〗〖 IPv6 优化版 〗

摘要

由于 Seafile 不能原生支持 IPv6 访问,决定不再使用,用了这么多年,终于还是说再见,通过尝试得知 Nextcloud 符合需求,通过第三方脚本里面的自动安装,是非常轻量,但是会提示数据库不推荐,最终决定使用 Nextcloud All-In-One 版本,这中间需要按照官方操作,反向代理在另外一台机子上,所以采取的是反代途径安装,经过一番周折搞定之后,发现,并不能固定自动安装容器的 IP 地址,除了第一个容器可以,其余几个,不知道如何去固定 IP 地址,因为是通过 WEB 端点击的安装,都是后台自动进行的,所以,就引出一个问题,无法通过防火墙去设定规则,经过反反复复磨合 ChatGPT 之后,最终优化出合适的脚本内容,通过自动获取各个容器的 IP 地址,然后自动设定容器防火墙的规则,由于是多个容器,需要设定名称和端口的键值合集,以解决 IPv6 规则有些容器不生效的问题,最大的难点,在于有一个容器,确切的说是 Nextcloud 反代的容器,无论怎么尝试,就是不能自动生效 IPv4 规则,排查原因,可是费了大力气,最后发现,之所以不生效,是因为同时连接两个容器网络导致,无法自动识别到底需要哪个 IP 地址,然后尝试退出容器默认网络,发现不行,必须得保留,只能想办法让脚本自动识别需要的那个 IP 地址,这个过程及其难受、及其折磨,通过不断训练磨合 ChatGPT 之后,得到了满意答案。目前的脚本版本,可以说非常满意。在没有遇到其他另类情况之前,这个脚本可以完美开机自动获取各个容器的 IP 地址,然后自动归类设定防火墙规则,以达到限制外界通过 IP + 端口的形式直接访问容器提供的各类服务。

THE END