如何过滤在Docker上运行的特定服务的外部连接?具体来说,如何将传入的请求过滤到白名单IP的静态列表?
答案 0 :(得分:1)
这个答案假定:
-p hostIp:hostPort:containerPort
命令中使用选项docker run
可以轻松完成此操作。根据这两个假设,可以假设容器中运行的服务将始终侦听定义为hostIp:hostPort
的同一主机套接字。
现在,您所要做的只是防火墙,它独立于docker。
我不是专家,没有测试这些线!在执行之前要注意。
# DROP every packets coming from every sources sent to the port $PORT
iptables -A INPUT -p tcp --dport $PORT -j DROP
# ACCEPT every packets coming from source xx.xx.xx.xx sent to port $PORT
iptables -A INPUT -p tcp -s xx.xx.xx.xx --dport $PORT -j ACCEPT
# Repeat the last command if needed, you can also specify a network, such as 192.30.252.0/22 instead of xx.xx.xx.xx
这些规则应按此精确顺序设置。白名单可以比作黑名单。