764 字
4 分钟
使用 Lucky 的 STUN 内网穿透,实现公网 IPv4 访问

什么是 STUN 内网穿透#

STUN(Session Traversal Utilities for NAT)内网穿透技术可以帮助解决因 NAT(Network Address Translation)技术所带来的网络连接问题。

STUN 技术允许 NAT1 用户获取公网端口,通过路由端口转发或者 LUCKY 内置转发,将内网服务端口暴露到外网,从而实现内网穿透的目的。

NOTE

NAT1 是指 NAT 类型为 1 的设备,即全锥型 NAT。

STUN 的公网端口变化频率不固定,可以搭配 DDNS 食用。

开始前的准备#

1. 网络环境检查#

大部分的运营商 NAT 都是全锥型的,而在家庭网络环境下,通常会存在多层 NAT 转换。

这时再去测试 NAT 类型,很有可能显示为 端口受限锥形 NAT

但这并不影响我们使用 STUN 内网穿透,你可以使用下面这篇文章介绍的方法去优化网络:网络环境检测和优化

2. 准备好你的设备#

本教程使用 Ubuntu 22.04 作为演示,使用 Docker Compose 部署 Lucky,设备直连光猫。

开始搭建 STUN 内网穿透#

1. 安装 Docker#

按顺序执行下面的命令:

Terminal window
# 切换到 root 用户
sudo -i
# 安装 Docker
curl -fsSL https://get.docker.com | sh
# 启动 Docker 服务并设置为开机自启
sudo systemctl enable docker --now

接下来配置国内源,打开 /etc/docker/daemon.json 文件:

Terminal window
vim /etc/docker/daemon.json

添加下面的内容:

/etc/docker/daemon.json
{
"registry-mirrors": [
"https://docker.1ms.run",
"https://hub.rat.dev",
"https://docker.m.daocloud.io",
"https://docker.1panel.live"
]
}

重启 Docker 服务:

Terminal window
sudo systemctl restart docker

2. 启动 LUCKY 容器#

我们在 / 目录下,创建一个新的文件夹 lucky,并进入该文件夹:

Terminal window
# 创建文件夹
mkdir /lucky
# 进入刚刚创建的文件夹中
cd /lucky

/lucky 目录下,创建一个新的文件 docker-compose.yml,并添加下面的内容:

/lucky/docker-compose.yml
services:
lucky:
image: gdy666/lucky
container_name: lucky
volumes:
- ./goodluck:/goodluck
network_mode: host
restart: always

启动 Lucky:

Terminal window
docker-compose up -d

3. 修改默认的账号密码#

使用浏览器打开 http://你设备的ip:16601,即可进入 Lucky 的 Web 界面。

默认账号密码均为 666

左侧下拉,找到 设置,在右边设置你的安全入口和账号密码。

设置安全入口和账号密码

设置完成后,页面拉到底部,点击 保存配置 即可。

保存配置

4. 配置 STUN 内网穿透#

点击左侧的 STUN内网穿透,在右边的页面中,点击 添加穿透规则

添加规则 1

添加规则 2

添加后等待几秒,即可在下方看到你的公网 IPv4 连接地址。

公网地址

复制公网地址,我们来测试一下:

PASS

🎉 完美,恭喜你成功实现了公网 IPv4 访问

NOTE

STUN 内网穿透的公网端口变化频率是不固定的,因此我们还需要使用其他方法来实现公网 IPv4 地址和端口的动态更新。

我会在之后的文章中,介绍如何在公网服务器上,使用 Nginx 实现访问域名可以自动跳转到最新的公网地址,做到公网 IPv4 地址和端口的实时更新。

使用 Lucky 的 STUN 内网穿透,实现公网 IPv4 访问
https://blog.ioll.cc/posts/2025/lucky-stun/
作者
星酱
发布于
2025-10-22
许可协议
CC BY-NC-SA 4.0