基于 LocalTunnel 的内网服务公网暴露方案
IPv4 地址资源紧张导致多数家庭网络处于 NAT 环境,无法直接对外提供服务。传统 DDNS 方案存在成本高、配置繁琐、稳定性差等问题。LocalTunnel 作为一款轻量级内网穿透工具,基于 Node.js 构建,能够快速将本地端口映射至公网。
客户端部署
全局安装命令行工具:
npm install -g localtunnel
基础用法,将本地服务暴露至公网:
lt --port 服务端口
执行后会返回类似 https://随机子域名.localtunnel.me 的公网地址。
进阶参数配置:
lt --port 8080 --subdomain 自定义域名前缀 --local-host 目标主机名
服务端自建部署
官方公共服务位于海外,延迟较高且不适合生产环境。建议在有公网 IP 的服务器上搭建私有服务端。
环境要求
- 具备公网 IP 的 Linux 服务器
- 开放 10000-65535 范围的 TCP 端口
- 已备案的顶级域名,并将域名及泛解析
*.example.com指向服务器
源码部署流程
git clone https://github.com/defunctzombie/localtunnel-server.git
cd localtunnel-server
npm install
bin/server --port 80
客户端连接私有服务端:
lt --host http://your-server-ip --port 本地服务端口
容器化部署方案
Docker 环境准备
yum install -y yum-utils device-mapper-persistent-data lvm2
yum-config-manager --add-repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
yum makecache fast
yum -y install docker-ce
systemctl start docker
配置镜像加速
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << 'EOF'
{
"registry-mirrors": ["https://19b12x6i.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
运行 LocalTunnel 服务端容器
docker run -d \
--restart always \
--name tunnel-server \
--net host \
defunctzombie/localtunnel-server:latest --port 80
常见问题排查
若客户端未指定 --host 参数,默认连接官方服务器 https://localtunnel.me。使用自建服务端时务必显式声明:
lt --host http://116.62.78.172 --port 8080
无域名场景下,可直接使用 IP 地址作为 host 参数,但无法使用子域名自定义功能。如需子域名支持,必须完成域名解析配置。
完整参数说明
lt --help
Options:
-p, --port 本地服务端口(必填)
-h, --host 上游转发服务器地址
-s, --subdomain 请求特定子域名
-l, --local-host 指定本地目标主机(非 localhost 时)
--local-https 本地 HTTPS 服务支持
--local-cert 本地证书路径
--local-key 本地私钥路径
--allow-invalid-cert 忽略证书校验
-o, --open 自动打开浏览器
--print-requests 打印请求日志