堡塔618特惠活动,企业版1099元/年,永久授权最高立减20000元查看活动
当前位置:论坛首页 > Linux面板 > 建议

【已记录】Docker端口无法限制解决方法

发表在 Linux面板2024-5-12 22:11 [复制链接] 3 228

宝塔与docker都是用iptables作为防火墙设置,但是宝塔是用的是 INPUT 链,而DOCER使用的是 DOCER-USER链,如下图所示:

微信截图_20240512203140.png

根据docker 说明文档,可以在DOCKER-USER链进行限制操作
限制与Docker主机的连接
默认情况下,允许所有外部源IP连接到Docker主机。要仅允许特定的IP或网络访问容器,请在DOCKER-USER过滤器链的顶部插入一个否定的规则。例如,以下规则限制从以下所有IP地址进行的外部访问192.168.1.1:

$ iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.1 -j DROP
请注意,您将需要更改ext_if以与主机的实际外部接口相对应。您可以改为允许来自源子网的连接。以下规则仅允许从子网进行访问192.168.1.0/24:

$ iptables -I DOCKER-USER -i ext_if ! -s 192.168.1.0/24 -j DROP
最后,您可以指定要接受的IP地址范围--src-range (请记住-m iprange在使用--src-range或时也要添加--dst-range):

$ iptables -I DOCKER-USER -m iprange -i ext_if ! --src-range 192.168.1.1-192.168.1.3 -j DROP
您可以结合使用-s或--src-range与-d或--dst-range一起控制源和目标。例如,如果Docker守护程序同时监听 192.168.1.99和10.1.2.3,则可以制定特定于10.1.2.3并保持 192.168.1.99打开的规则。



根据以上说明,我的服务器的对外网卡名是 eth0,执行以下命令,则可限制容器端口只可以 192.168.1.0 子网访问

  1. $ iptables -I DOCKER-USER -i eth0 ! -s 192.168.1.0/24 -j DROP
复制代码



使用道具 举报 只看该作者 回复
发表于 2024-5-13 09:19:31 | 显示全部楼层
您好,感谢您的反馈,已记录
使用道具 举报 回复 支持 反对
发表于 2024-5-13 11:02:13 | 显示全部楼层
本帖最后由 宝塔用户_ntrhlu 于 2024-5-13 11:56 编辑
运维技术南一 发表于 2024-5-13 09:19
您好,感谢您的反馈,已记录

我又查了资料,因为docker是通过DNAT 把外部端口映射到内部,比如9393映射到容器的3000,规则走的是 nat表, 微信图片_20240513115220.png
所以我现在改为在iptables的 raw(优先级最高)表上对访问源做限制,如下:
  1. iptables -t raw -I PREROUTING ! -s 114.80.40.214 -p tcp --dport 9393 -j DROP
复制代码
即本机9393端口从最外层只允许114.80.40.214访问,目前看来可以正常使用,所以宝塔的网络防火墙是不是可以考虑针对iptable_filteriptable_mangleiptable_natiptable_raw 四个表都做过滤检查和设置

使用道具 举报 回复 支持 反对
发表于 2024-5-13 14:42:18 | 显示全部楼层
宝塔用户_ntrhlu 发表于 2024-5-13 11:02
我又查了资料,因为docker是通过DNAT 把外部端口映射到内部,比如9393映射到容器的3000,规则走的是 nat表 ...

好的,已记录
使用道具 举报 回复 支持 反对
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

普通问题处理

论坛响应时间:72小时

问题处理方式:排队(仅解答)

工作时间:白班:9:00 - 18:00

紧急问题处理

论坛响应时间:10分钟

问题处理方式:1对1处理(优先)

工作时间:白班:9:00 - 18:00

工作时间:晚班:18:00 - 24:00

立即付费处理

工作时间:09:00至24:00

快速回复 返回顶部 返回列表