💡 前言:安全与可访问性的平衡
在服务器运维中,一个核心原则是:服务非必要,不暴露公网。
很多应用(如后端 API、数据库)只需要被本地的反向代理访问。因此,将服务绑定到 127.0.0.1 是最安全的做法。但问题随之而来:如何让 EasyTier 或其他虚拟内网(10.10.10.x 网段)中的其他机器访问到这个本地服务呢?
本文将为您提供一个**“应用锁定本地,Nginx 监听内网,UFW 精准放行”**的完整解决方案。
一、架构设计:三层安全防御
要实现内网安全访问,我们需要三层结构:
二、部署步骤 1:应用与 Nginx 配置
1. 确认应用服务状态
请确保您的应用服务已经配置为监听在 127.0.0.1。
Bash
netstat -tuln | grep 8090
理想输出: 必须是 127.0.0.1,而非 0.0.0.0。
tcp 0 0 127.0.0.1:8090 0.0.0.0:* LISTEN
2. 配置 Nginx 反向代理
Nginx 必须绑定到您的宿主机内网 IP(例如 10.10.10.1),才能从 EasyTier 网络接收流量。
Nginx 配置文件 (/etc/nginx/conf.d/proxy.conf 示例):
Nginx
server {
# 🎯 Nginx 监听在宿主机的内网 IP 10.10.10.1
listen 10.10.10.1:8090;
server_name _;
location / {
# 🔑 将请求代理到本地环回地址 (127.0.0.1)
proxy_pass http://127.0.0.1:8090;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
配置完成后,请执行 sudo nginx -t && sudo systemctl reload nginx 重启 Nginx。
三、部署步骤 2:UFW 防火墙精准放行(重点)
ufw 将扮演网络守卫的角色,只放行 EasyTier 虚拟内网中的 IP 流量。
1. UFW 基础配置(安全启动)
如果您尚未启用 ufw,请先配置默认策略和 SSH 端口,防止被锁定。
Bash
# 默认拒绝所有传入连接,最安全
sudo ufw default deny incoming
# 开放 SSH 端口 (默认 22)
sudo ufw allow 22/tcp
# 启用防火墙
sudo ufw enable
2. 针对 EasyTier 虚拟内网的精准放行
假设您的 EasyTier 虚拟内网 IP 段是 10.10.10.0/24,我们只允许这个网段的机器访问 8090 端口。
Bash
# 语法: sudo ufw allow from <源IP/网段> to any port <目标端口> proto <协议>
# 🚀 仅允许 10.10.10.0/24 网段的 TCP 流量访问 8090 端口
sudo ufw allow from 10.10.10.0/24 to any port 8090 proto tcp
# 重新加载规则
sudo ufw reload
这是实现安全内网访问的核心命令。 它确保即使您的宿主机有公网 IP,只有来自 10.10.10.x 的流量才能访问 Nginx 代理。
3. 验证 UFW 规则
使用 ufw status verbose 检查规则是否已生效:
Bash
sudo ufw status verbose
关键验证点: 列表中必须有您设置的精准放行规则。
四、故障排查与验证
如果完成上述步骤后,EasyTier 内网设备(例如 10.10.10.2)仍无法访问 http://10.10.10.1:8090:
1. 确认 EasyTier 本身连接正常
在 10.10.10.2 上 Ping 宿主机 (10.10.10.1)。如果 Ping 不通,则问题在于 EasyTier 隧道连接未建立或被底层防火墙阻止。
Bash
# 在内网机器上测试
ping 10.10.10.1
2. 检查端口是否被 UFW 阻止
在 10.10.10.2 上使用 telnet 或 nc 测试端口连通性。
Bash
# 在内网机器上测试
telnet 10.10.10.1 8090
如果 Telnet 失败(连接超时或拒绝),则 99% 的问题出在 UFW 或 Nginx 未成功绑定 10.10.10.1。请再次检查 ufw status 和 netstat。
3. 检查 Nginx 错误日志
如果 Telnet 成功(端口开放),但浏览器返回 502 Bad Gateway 或其他错误,请检查 Nginx 的错误日志 (/var/log/nginx/error.log)。这通常是 Nginx 无法访问 127.0.0.1:8090 的后端服务导致的。
总结
通过 127.0.0.1 绑定实现后端服务公网隐身,利用 Nginx 实现内网流量转发,并借助 UFW 的精准放行规则实现跨 EasyTier 网络的访问控制,您就拥有了一个既安全又具备内网可访问性的健壮架构。
评论区