You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何限制Docker容器仅访问主机指定端口并允许SSH流量

实现Docker容器的精准网络流量限制

核心需求梳理

  • 保留外部通过主机2020端口SSH访问容器的能力(维持-p 2020:22端口映射)
  • 仅允许容器访问主机的3030端口
  • 禁止容器向互联网发送任何非授权流量
  • 禁止容器与主机之间的其他未授权流量
  • 不能使用--internal网络标志

分步配置iptables规则

1. 优先允许容器访问主机3030端口

这条规则必须放在DROP规则之前,确保授权流量被优先匹配:

iptables -A INPUT -i br-68c6feca2ecb -p tcp --dport 3030 -j ACCEPT

2. 确保外部SSH流量能转发到容器

Docker的端口映射依赖FORWARD链规则,添加以下规则避免自定义规则阻断已映射的SSH流量:

# 允许外部流量转发到容器22端口(对应主机2020端口的映射)
iptables -A FORWARD -o br-68c6feca2ecb -p tcp --dport 22 -j ACCEPT
# 允许容器回包到外部SSH请求方
iptables -A FORWARD -i br-68c6feca2ecb -p tcp --sport 22 -j ACCEPT

3. 禁止容器向互联网发送流量

通过阻断容器网桥到主机外网接口的转发流量,彻底禁止容器访问互联网:

# 替换eth0为你的主机实际外网接口名(可通过`ip addr`查看)
iptables -A FORWARD -i br-68c6feca2ecb -o eth0 -j DROP

4. 阻断容器与主机的其他非授权流量

这条规则放在所有允许规则之后,确保仅放行之前授权的流量:

iptables -A INPUT -i br-68c6feca2ecb -j DROP

5. 验证规则有效性

通过以下命令检查规则顺序是否正确(确保所有ACCEPT规则在DROP规则之前):

iptables -L INPUT --line-numbers
iptables -L FORWARD --line-numbers

补充说明

  • 若需要开放容器对主机其他端口的访问,只需添加类似iptables -A INPUT -i br-68c6feca2ecb -p tcp --dport [目标端口] -j ACCEPT的规则
  • 上述规则会在主机重启后失效,如需持久化,可使用iptables-save > /etc/iptables/rules.v4(Debian/Ubuntu系统)或对应发行版的iptables持久化工具

内容的提问来源于stack exchange,提问作者mehran rahnama

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 01:08:15