限制docker端口的连接/只允许CF回源
折腾了一个晚上,很失败。想象中很简单,就是对 DOCKER-USER 链加上白名单,然后禁止其余即可。然而,它就是不工作,或者全部允许,或者全部不允许,反正不按照预期中的来。
AI就不消说了,我把GPT老娘操了一万次它也改不对,BARD(老名字,现在叫啥忘了),更是差劲。
最后还是只能看GOOGLE,看上去洋人们很认真的讨论了这个问题,并号称找到了解决方案,还有好几种。。然而,在我这里还是失败。
放弃。也不想再深究了,我是实用主义者,不是科学家。
关闭掉DOCKER的iptables,人工维护规则算了: /etc/default/docker加上 DOCKER_OPTS="--iptables=false"。 还别说,就算这个也是坑,文档都说改 /etc/docker/daemon.json这个文件,然而这个文件并不存在。(文档不会和你说,新建一个即可)
完成后的规则,其实就是以前一直用的规则了,和docker无关。列在这里给有需要的人看看吧。
# Generated by iptables-save v1.8.9 (nf_tables) on Wed May 1 01:06:24 2024
*filter
:INPUT DROP [3816:196637]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [2700:502529]
-A INPUT -i lo -j ACCEPT
-A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m tcp --dport 22 -j ACCEPT #SSH,正常应该白名单,我这个玩具机就开着了。
-A INPUT -p tcp -m tcp --dport 81 -j ACCEPT #这个是NPM的管理端口
-A INPUT -s 173.245.48.0/20 -p tcp -m tcp --dport 80 -j ACCEPT #CF白名单,IP段几十年不变,写死即可。
-A INPUT -s 103.21.244.0/22 -p tcp -m tcp --dport 80 -j ACCEPT #CF使用灵活模式,就是回源HTTP。回源HTTPS没有意义,除了消耗自己的CPU资源。
-A INPUT -s 103.22.200.0/22 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 103.31.4.0/22 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 141.101.64.0/18 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 108.162.192.0/18 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 190.93.240.0/20 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 188.114.96.0/20 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 197.234.240.0/22 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 198.41.128.0/17 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 162.158.0.0/15 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 104.16.0.0/13 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 104.24.0.0/14 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -s 172.64.0.0/13 -p tcp -m tcp --dport 80 -j ACCEPT
-A INPUT -j DROP
COMMIT