配置 iptables 禁止 IP + 端口访问〖此方法无效〗
前言
又又新入手一个 VPS 机子,之前,应该是很早之前就用过这家,现在算是又回归,反代之后想着禁止直接通过 IP +端口形式访问特定的 Docker 服务,但是这家没有后台防火墙,不像 LN 商家那么贴心周到。网上搜索很多途径没有成功,什么 UFW 也好,还是 firewalld 也好,都不能起到作用,最后通过和 ChatGPT 若干回合的过招,最终达到目的。就算是通过 ChatGPT 也是费好大劲才搞定,如果单纯靠网络搜索,不知何时才能搞定。
步骤
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
#安装 iptables-persistent 以便在重启后保存和恢复 iptables 规则 apt install iptables-persistent # 清除现有规则 iptables -F iptables -X ip6tables -F ip6tables -X # 创建 DOCKER-USER 链 iptables -N DOCKER-USER ip6tables -N DOCKER-USER # 设置反向代理服务器 IP proxy_server_ipv4="IPV4地址" proxy_server_ipv6="IPV6地址" # 允许反向代理服务器的 IP 访问特定端口 iptables -I DOCKER-USER -p tcp -s $proxy_server_ipv4 --dport 端口 -j ACCEPT ip6tables -I DOCKER-USER -p tcp -s $proxy_server_ipv6 --dport 端口 -j ACCEPT # 拒绝其他所有来源的访问 iptables -I DOCKER-USER -p tcp --dport 端口 -j DROP ip6tables -I DOCKER-USER -p tcp --dport 端口 -j DROP # 确保 DOCKER-USER 链在 FORWARD 链前执行 iptables -I FORWARD -j DOCKER-USER ip6tables -I FORWARD -j DOCKER-USER # 保存规则 iptables-save > /etc/iptables/rules.v4 ip6tables-save > /etc/iptables/rules.v6 # 重启 Docker 服务 systemctl restart docker # 验证规则 iptables -L -v -n ip6tables -L -v -n |
总结
走了很多弯路,好在最后可以了,不过和 LN 直接在后台一分钟搞定结果不同,通过 ChatGPT 搞定后,只能通过域名访问服务,就连自己本地 IP 节点通过 IP + 端口的方式也不能访问。当然,我个人还是喜欢现在的方式。都不能访问就对了。正是我要的结果。
提问
以下是我向 ChatGPT 询问的所有问题,问了这么多才找到正确答案。说明太小白。每一次回答之后,都要尝试一遍,然后没达到效果,就需要全部推倒重来,这整个过程非常需要耐心,好在我很有耐心。耐心的源动力来自兴趣使然。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 |
当然可以。以下是你在这次会话中的提问内容: 1. firewalld禁止外部访问某个端口 2. firewalld 开放所有端口 3. 提示 Warning: INVALID_RULE: unknown element rejectfirewall-cmd 4. 提示 You're performing an operation over default zone ('public'), but your connections/interfaces are in zone 'docker' (see --get-active-zones)You most likely need to use --zone=docker option. 5. 我是在 root 用户,不要使用 sudo,现在 提示 Warning: NOT_ENABLED: 8020:tcp 6. 我使用这个方法以后,8020 端口仍然可以被外部访问 7. 并没有起到作用,在 docker 里面显示我需要禁用的端口具体情况是 Up 28 minutes 0.0.0.0:8020->8080/tcp, :::8020->8080/tcp 8. 如何禁用 firewalld,并且卸载它 9. debian12 自带的防火墙是什么 10. 如何查看 debian12 iptables 状态 11. 通过 iptables 禁止 8020 端口被外部访问 12. 是的我需要永久生效,应该怎么做 13. 给我一个完整的步骤,我的 docker 里面有一个服务 Up 28 minutes 0.0.0.0:8020->8080/tcp, :::8020->8080/tcp ,然后需要永久关闭 8020 端口被外部访问 14. 不考虑 docker,给我一个完整的步骤,永久禁止外部访问 8020 端口 15. 需要 ipv6 也要包含在内 16. 通过 iptables 允许所有端口访问 17. 提示 bash: /etc/iptables/rules.v4: No such file or directory 18. 如何查询 iptables 规则保存路径 19. 提示 touch: cannot touch '/etc/iptables/rules.v4': No such file or directory 20. 如何完整安装 iptables,在 debian12 21. 如何安装 iptables-persistent 包 22. 查看现有规则 23. 现在不能访问 8020 端口了已经,但是域名反向代理指向 8020 的服务也不行了,有什么方法,仅仅禁用 ip 加 8020 端口的访问,同时放行域名指向的 8020 服务 24. iptables -A INPUT -p tcp --dport 8020 -j DROP 25. 还有 ipv6 26. 以 root 身份 27. 同一个域名可以同时代理 ipv4 和 ipv6 吗 28. 如何查看当前 ip 地址,包括 iov4 和 ipv6 29. 查看现有规则 30. 你的方法没有作用,通过反向代理仍然无法访问 31. 如何清除现有规则 32. 我可以直接在下面的命令中替换为域名吗 iptables -A INPUT -p tcp -s proxy_server_ipv4 --dport 8020 -j ACCEPT 33. 现在通过本地 ip 可以访问 8020 端口,但是无法通过域名访问这个端口 34. 现在 docker 里面的 8020 端口服务无法启动 35. 不考虑 docker,给我一个完整的步骤,永久禁止外部访问 8020 端口 36. 现在所有开源都可以访问 8020,还是没有达到目的 37. ufw 呢 38. 你告诉我的需要安装一个服务才能保存规则,是什么,我忘了,你能告诉我吗 39. 我记得你刚才告诉的是 apt install 而不是 apt-get 40. 你能把我和你的对话,就是这个会话的内容,单独把我向你提问的内容,单独给我一份吗 这些问题总结了你在这次对话中的所有提问。希望这对你有所帮助! |
THE END