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

LOGOSJ · 2024-9-18 12:31:56 · 141 次点击
[环境]
路由器拨号(局域网 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 访问这些端口。
虽然这是一个很基础的问题,但是由于本人能力水平实在有限,反请各位高手指点一二!
举报· 141 次点击
登录 注册 站外分享
12 条回复  
rnv 小成 2024-9-19 09:07:06
看到 DMZ 就明白了。如果你想要安全点的方式,就关闭 DMZ ,使用端口映射
lonelyduan 小成 2024-9-18 14:59:15
配置 DMZ 不就是这个效果吗…
tool2dx 初学 2024-9-18 14:01:07
@LOGOSJ 能看见 IP 不代表什么的,DMZ NAT 替换的 dst ip ,也就是目标 IP 被替换为了 192.168.1.2 。你这个 123.158.*是 src ip ,不替换的。
Jhma 小成 2024-9-18 13:48:18
docker 的网络权限很高,像在 centos7 上部署 docker 他会绕过系统防火墙 firewall-cmd ,且是基于最底层的 iptables 来操作的
cdlnls 小成 2024-9-18 13:41:07
配置了 DMZ 之后不就是这个效果吗?
dodakt 小成 2024-9-18 13:41:03
https://github.com/chaifeng/ufw-docker
sagaxu 初学 2024-9-18 13:36:03
这就是 DMZ 的工作方式,它将所有非 NAT 后的流量转发到指定的 IP ,你在路由器上设置 DMZ 主机为 192.168.1.2 ,那么所有监听在 192.168.1.2:*上的端口,都暴露在了公网,能在内网通过 IP:192.168.1.2 访问的服务,全部暴露在公网。

所以一般 DMZ 主机,都要开防火墙,默认阻止所有。
IvanLi127 小成 2024-9-18 13:16:46
看起来就是单纯 DMZ 的效果,DMZ 就是能让外网通过 NAT 访问内网,你这机子监听内网 IP 地址,刚刚好呀。
Laoz666 小成 2024-9-18 12:55:37
docker 的问题 docker 开出的端口不受防火墙限制 默认是 0.0.0.0:port
gam2046 小成 2024-9-18 12:49:03
DMZ 就是一层 NAT 呀,外部请求过路由器的时候,source ip 就变成了路由器的 IP ,因此能够访问你的服务,是符合预期的。
12下一页
返回顶部