tdxmgy
V2EX  ›  Docker

docker 映射的端口如何只允许本机和 docker 访问

  •  
  •   tdxmgy · Jul 10, 2021 · 3353 views
    This topic created in 1796 days ago, the information mentioned may be changed or developed.

    请教一下,docker 端口映射到 30000, 然后主机提供反向代理通过访问 8001 从而访问 30000, 现在怎么添加 iptable 实现 30000 只能本机和 docker 访问,禁止其他机器访问呢

    10 replies    2021-07-11 17:32:33 +08:00
    40EaE5uJO3Xt1VVa
        1
    40EaE5uJO3Xt1VVa  
       Jul 10, 2021
    好像都不用做就可以。

    你是想用 iptables 把 8001 的请求转发到 30000 ?
    anguiao
        2
    anguiao  
       Jul 10, 2021   ❤️ 1
    写 127.0.0.1:8001:30000 就行了啊,没那么复杂吧。。
    tdxmgy
        3
    tdxmgy  
    OP
       Jul 10, 2021
    @anguiao 额, 我没说明白吧,docker 是 30001 映射 8080, 然后再主机 nginx 力反向代理用的是 801 反向到 30001, 现在的需求是其他网段通过 801 访问,因为 30001 没有权限限制,所以想问下是否可以通过防火墙限制?
    tdxmgy
        4
    tdxmgy  
    OP
       Jul 10, 2021
    @yanzhiling2001 这个 nginx 反向代理实现了, 我的需求是只能访问 8001,而 30001 禁止访问,因为 30001 没有鉴权, 我是在 8001 上加了 ldap
    40EaE5uJO3Xt1VVa
        5
    40EaE5uJO3Xt1VVa  
       Jul 10, 2021
    iptables 都不用放行 30000 端口,本机的 8001 也可以访问到本机的 30000

    还是没搞懂你想干什么
    tdxmgy
        6
    tdxmgy  
    OP
       Jul 10, 2021
    @yanzhiling2001 局域网 any--->801 ( nginx 反向代理)-->30001 (映射出来的端口,默认局域网就可以访问)-->8080 ( docker 服务), 需求是禁止局域网访问 30001
    0001110001011
        7
    0001110001011  
       Jul 10, 2021   ❤️ 1
    2 楼正解
    weyou
        9
    weyou  
       Jul 11, 2021 via Android
    2 楼正解,此帖已结
    mmtromsb456
        10
    mmtromsb456  
       Jul 11, 2021
    应该是只允许 nginx 在本机上访问 30001 端口并被 containerd 转发到容器内部的 8080
    二楼是正解,只是端口没对,-p 127.0.0.1:30001:8080 就行了,这样只允许 127.0.0.1 的来源(也就是本机上的 nginx 访问 30001 端口),如果一定要用防火墙来解决的话可以使用 DOCKER-USER 这条 CHAIN
    https://docs.docker.com/network/iptables/#add-iptables-policies-before-dockers-rules
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3267 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 980ms · UTC 11:06 · PVG 19:06 · LAX 04:06 · JFK 07:06
    ♥ Do have faith in what you're doing.