监听本地 IP 的服务居然可以被公网访问 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
LOGOSJ
V2EX    宽带症候群

监听本地 IP 的服务居然可以被公网访问

  •  
  •   LOGOSJ 2024-09-18 12:31:56 +08:00 3192 次点击
    这是一个创建于 389 天前的主题,其中的信息可能已经有所发展或是发生改变。
    [环境]
    路由器拨号(局域网 IP192.168.1.1 公网 IP123.12.12.12 )
    主机 Ubuntu 24.04.1 LTS (局域网 IP192.168.1.2 ,与路由器 DMZ )

    [异常情况]
    在主机上运行有一些服务,有的是直接跑,有的用 Docker 部署。监听地址为本机局域网 IP192.168.1.2 ,期望只允许内网访问。但实际上外网设备可以通过公网 IP+端口的形式访问这些服务。

    [做过的尝试]
    1.关闭了 UTUN 接口,由于本机采用 Sing box 的 tun 模式入站,猜测可能有关系。了 UTUN 接口依然如此。
    2.使用 Pyhone 起了一个最简单的文件服务,监听本地 IP ,依然可以被公网访问,说明与服务无关。
    3.在阿里云服务器上测试,服务监听局域网 IP ,也可以被公网访问(排除本机故障)

    [一些猜想]
    1.DMZ 引起的,但是查到 DMZ 不涉及 NAT ,而且服务日志可以看见正确的外网访问的源 IP 。目前没有条件关闭 DMZ 测试,一关就失联
    2.安装 Singbox 时的一些设置所引起的。例如开启了 IP 转发;修改了转发规则(源 IP 伪装);防火墙放行了所有 TUN 接口的流量。
    3.安装了 snell 服务端,这是和阿里云服务器唯一的共同点,但是不认为这会有什么影响


    目前先用 UFW 防火墙只允许内网子网 IP 访问这些端口。
    虽然这是一个很基础的问题,但是由于本人能力水平实在有限,反请各位高手指点一二!
    17 条回复    2024-09-19 19:35:46 +08:00
    xclrr
        1
    xclrr  
       2024-09-18 12:38:55 +08:00 via Android
    我了解的一种情况是,docker 开了端口映射不指定监听 ip 会突破 ufw ,docker 会自己修改 iptables ,不知道你是不是这种
    jimmy2010
        2
    jimmy2010  
       2024-09-18 12:45:51 +08:00
    就是 dmz 引起的吧,dmz 就相当于把整个内网的某个 ip 暴露在公网了,如果进来的流量没有匹配到 nat 规则,就直接全部发给 dmz 主机,反倒是 nat 端口映射可以指定要暴露的端口,而不是全部。
    gam2046
        3
    gam2046  
       2024-09-18 12:49:03 +08:00
    DMZ 就是一层 NAT 呀,外部请求过路由器的时候,source ip 就变成了路由器的 IP ,因此能够访问你的服务,是符合预期的。
    Laoz666
        4
    Laoz666  
       2024-09-18 12:55:37 +08:00
    docker 的问题 docker 开出的端口不受防火墙限制 默认是 0.0.0.0:port
    IvanLi127
        5
    IvanLi127  
       2024-09-18 13:16:46 +08:00
    看起来就是单纯 DMZ 的效果,DMZ 就是能让外网通过 NAT 访问内网,你这机子监听内网 IP 地址,刚刚好呀。
    sagaxu
        6
    sagaxu  
       2024-09-18 13:36:03 +08:00   1
    这就是 DMZ 的工作方式,它将所有非 NAT 后的流量转发到指定的 IP ,你在路由器上设置 DMZ 主机为 192.168.1.2 ,那么所有监听在 192.168.1.2:*上的端口,都暴露在了公网,能在内网通过 IP:192.168.1.2 访问的服务,全部暴露在公网。

    所以一般 DMZ 主机,都要开防火墙,默认阻止所有。
    dodakt
       7
    dodakt  
       2024-09-18 13:41:03 +08:00
    cctv6
        8
    cctv6  
       2024-09-18 13:41:07 +08:00 via Android
    配置了 DMZ 之后不就是这个效果吗?
    LOGOSJ
        9
    LOGOSJ  
    OP
       2024-09-18 13:41:34 +08:00
    @xclrr 不光是 docker 中的服务,直接跑的服务也是一样的。
    cctv6
        10
    cctv6  
       2024-09-18 13:43:13 +08:00 via Android
    LOGOSJ
        11
    LOGOSJ  
    OP
       2024-09-18 13:44:13 +08:00
    @gam2046 可是那些服务是可以看见源 IP 的,比如我用 python 起的一个最简单的文件服务,用外网设备访问的时候,在服务器上可以看见访问的源 IP 的,说明 DMZ 没有替换掉
    Jhma
        12
    Jhma  
       2024-09-18 13:48:18 +08:00
    docker 的网络权限很高,像在 centos7 上部署 docker 他会绕过系统防火墙 firewall-cmd ,且是基于最底层的 iptables 来操作的
    LOGOSJ
        13
    LOGOSJ  
    OP
       2024-09-18 13:54:48 +08:00
    @gam2046 比如测试用的 python 文件服务

    Serving at http://192.168.1.2:32187
    192.168.1.2 - - [17/Sep/2024 23:06:16] "GET / HTTP/1.1" 200 -
    192.168.1.2 - - [17/Sep/2024 23:06:16] code 404, message File not found
    192.168.1.2 - - [17/Sep/2024 23:06:16] "GET /favicon.ico HTTP/1.1" 404 -
    123.158.***.**- - [17/Sep/2024 23:07:41] "GET / HTTP/1.1" 200 -
    123.158.***.** - - [17/Sep/2024 23:07:57] code 404, message File not found
    123.158.***.** - - [17/Sep/2024 23:07:57] "GET /favicon.ico HTTP/1.1" 404 -

    123.158.*.*的就是我用于访问的外网设备的公网 IP
    tool2dx
        14
    tool2dx  
       2024-09-18 14:01:07 +08:00   1
    @LOGOSJ 能看见 IP 不代表什么的,DMZ NAT 替换的 dst ip ,也就是目标 IP 被替换为了 192.168.1.2 。你这个 123.158.*是 src ip ,不替换的。
    lonelyduan
        15
    lonelyduan  
       2024-09-18 14:59:15 +08:00
    配置 DMZ 不就是这个效果吗…
    rnv
        16
    rnv  
       2024-09-19 09:07:06 +08:00
    看到 DMZ 就明白了。如果你想要安全点的方式,就关闭 DMZ ,使用端口映射
    LOGOSJ
        17
    LOGOSJ  
    OP
       2024-09-19 19:35:46 +08:00
    感谢各位朋友的指导,确定是 DMZ 的预期行为。更大的问题是我对“监听”的含义理解错误了,某个服务监听在某个 IP 的某个端口,意味着主机只响应发往该 IP 该端口的请求。而我之前错误的理解成只接受源于与监听地址同子网网段的请求。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     2402 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 26ms UTC 15:44 PVG 23:44 LAX 08:44 JFK 11:44
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86