如何限制从Internet到远程linux服务器上的容器端口的访问?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (94)

我在远程服务器上的ubuntu 18上使用docker-compose。如何使用iptables,我可以阻止从Internet访问docker端口,并且只允许从该服务器的localhost访问它?

例如,我想阻止4150端口上网。试试这个: iptables -A DOCKER-USER -p tcp --dport 4150 -j DROP不阻止端口 - 仍然可以从互联网(而不是从服务器机器)访问它。

如何阻止从Internet访问服务器上的所有端口,但只允许22,80?并保持从服务器的localhost(例如从服务器本身)可用的端口?

提问于
用户回答回答于

不是您正在寻找的基于IPTables的解决方案,但更简单的解决方案是仅发布到特定接口,而不是所有接口。当该接口是环回接口时,例如127.0.0.1,您将只能在本地访问该端口。为此,请将接口添加到发布规范的开头:

docker run -p 127.0.0.1:4150:4150 ...

或者在compose文件中使用类似的语法:

...
  ports:
  - 127.0.0.1:4150:4150
...

至于为什么你尝试使用的命令不起作用,我相信你需要包含一个-m tcp匹配tcp端口号:

iptables -A DOCKER-USER -p tcp -m tcp --dport 4150 -j DROP

扫码关注云+社区

领取腾讯云代金券