侧边栏壁纸
  • 累计撰写 68 篇文章
  • 累计创建 22 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

通过 UFW 和 Nginx,将 127.0.0.1 本地服务安全暴露给 EasyTier 虚拟内网

七月流火
2025-12-23 / 0 评论 / 0 点赞 / 10 阅读 / 0 字

💡 前言:安全与可访问性的平衡

在服务器运维中,一个核心原则是:服务非必要,不暴露公网。

很多应用(如后端 API、数据库)只需要被本地的反向代理访问。因此,将服务绑定到 127.0.0.1 是最安全的做法。但问题随之而来:如何让 EasyTier 或其他虚拟内网(10.10.10.x 网段)中的其他机器访问到这个本地服务呢?

本文将为您提供一个**“应用锁定本地,Nginx 监听内网,UFW 精准放行”**的完整解决方案。


一、架构设计:三层安全防御

要实现内网安全访问,我们需要三层结构:

组件

监听地址

作用

安全目的

应用服务

127.0.0.1:8090

核心服务运行层

绝对安全:公网流量无法直接触及。

Nginx (反代)

10.10.10.1:8090

流量中转层

协议转换:将内网流量转发到本地服务。

UFW (防火墙)

*

网络守卫层

流量过滤:只允许 EasyTier 内网 IP 访问 Nginx 端口。


二、部署步骤 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 上使用 telnetnc 测试端口连通性。

Bash

# 在内网机器上测试
telnet 10.10.10.1 8090

如果 Telnet 失败(连接超时或拒绝),则 99% 的问题出在 UFW 或 Nginx 未成功绑定 10.10.10.1。请再次检查 ufw statusnetstat

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 网络的访问控制,您就拥有了一个既安全又具备内网可访问性的健壮架构。

0

评论区