禁止〖 IP + 端口 〗访问〖 Docker 〗〖 规则优化版 〗
摘要
复盘所有规则过程中,发现有一个规则顺序有概率会在服务器重启后颠倒,这是严重的问题,会直接导致放行的地址无法访问到服务,询问 ChatGPT 多次后,没有真正解决,原因不明,然后就想着是否可以接着这个思路继续往前走走看,是否能够解决每次添加新的容器到各种脚本之后,都要重启服务器才能避免重复添加之前已经存在的规则,经过多次尝试之后,最终选择 ChatGPT 提供的循环删除已存在的规则这种方法,然后顺便莫名其妙的解决了刚才说的规则顺序颠倒的问题。同样的,适用于 SSH 、X-UI 的规则脚本。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
# 定义IPV4规则 ACCEPT_RULE_IPV4="-m set --match-set allowed_ips src -d $CONTAINER_IP -p tcp --dport $port -j ACCEPT" DROP_RULE_IPV4="-d $CONTAINER_IP -p tcp --dport $port -j DROP" # 删除可能存在的重复规则 while iptables -D DOCKER-USER $DROP_RULE_IPV4 2>/dev/null; do :; done while iptables -D DOCKER-USER $ACCEPT_RULE_IPV4 2>/dev/null; do :; done # 添加IPV4规则 iptables -I DOCKER-USER 1 $ACCEPT_RULE_IPV4 iptables -I DOCKER-USER 2 $DROP_RULE_IPV4 # 定义IPV6规则 ACCEPT_RULE_IPV6="-m set --match-set allowed_ipv6_ips src -d $CONTAINER_IPV6 -p tcp --dport $port -j ACCEPT" DROP_RULE_IPV6="-d $CONTAINER_IPV6 -p tcp --dport $port -j DROP" # 删除可能存在的重复规则 while ip6tables -D DOCKER-USER $DROP_RULE_IPV6 2>/dev/null; do :; done while ip6tables -D DOCKER-USER $ACCEPT_RULE_IPV6 2>/dev/null; do :; done # 添加IPV6规则 ip6tables -I DOCKER-USER 1 $ACCEPT_RULE_IPV6 ip6tables -I DOCKER-USER 2 $DROP_RULE_IPV6 |
THE END