由于 ipv4 地址的数量不足,大部分中国地区的家庭 ip 地址均是由 ISP 转发,无法实现搭建个人服务器的目标。而如果采用 ddns 服务商如花生壳等,在价格昂贵的同时配置极为复杂且不稳定。为解决这样的问题,localtunnel 出现了。
localtunnel 是一个基于 nodejs 的内网穿透工具。通过简单的安装可以实现将内网里的设备的某个端口暴露在公网中以提供服务
npm install -g localtunnel
lt --port PORT_OF_YOUR_SERVICE // 创建一个请求到 localtunnel.me 来获取一个 URL 指向你的服务
// 输出:your url is: https://RANDOM.localtunnel.me
// Advanced
// 使用 subdomain 参数和 local-host 参数
lt --port PORT_OF_YOUR_SERVICE --subdomain test --local-host HOSTNAME
// 请求将 HOSTNAME:PORT_OF_YOUR_SERVICE 暴露在 test.localtunnel.me 上
localtunnel.me 只适用于开发测试之类的活动,不适合搭载生产环境 (使用自己搭建的localltunnel-server服务端来负载生产环境)
localtunnel.me 服务器在国外,可能造成访问缓慢(使用自己搭建的localltunnel-server服务端来避免)。
localtunnel-server
负责 localtunnel 请求并建立链接
预先要求
一台具有公网 ip 的服务器
服务器需要开放 1000-65535 的 tcp 端口
一个顶级域名 (localtunnel-server master branch 不支持子域名)
将域名 example.com 和 *.example.com 解析到你的服务器上
安装与运行
# pick a place where the files will live
git clone git://github.com/defunctzombie/localtunnel-server.git
cd localtunnel-server
npm install
# server set to run on port 1234
bin/server --port 1234
bin/server --port 80
lt --host http://116.62.78.172:80 --port 8080
npm config set registry http://registry.npm.taobao.org
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
service docker start
docker version
docker加速
mkdir -p /etc/docker
tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://19b12x6i.mirror.aliyuncs.com"]
}
EOF
systemctl daemon-reload
systemctl restart docker
docker安装localtunne
docker run -d
--restart always
--name localtunnel
--net host
defunctzombie/localtunnel-server:latest --port 80
docker pull defunctzombie/localtunnel-server:latest
docker login --username=15088694571 registry.cn-hangzhou.aliyuncs.com
docker tag defunctzombie/localtunnel-server registry.cn-hangzhou.aliyuncs.com/lzj123/docker:localtunnel-server
docker push registry.cn-hangzhou.aliyuncs.com/lzj123/docker:localtunnel-server
C:Usersl>lt --port 8080
your url is: https://empty-emu-72.loca.lt
https://empty-emu-72.loca.lt/blog/
C:Usersl>lt --help
Usage: lt --port [num] <options>
Options:
-p, --port Internal HTTP server port [required]
-h, --host Upstream server providing forwarding
[default: "https://localtunnel.me"]
-s, --subdomain Request this subdomain
-l, --local-host Tunnel traffic to this host instead of localhost,
override Host header to this host
--local-https Tunnel traffic to a local HTTPS server [boolean]
--local-cert Path to certificate PEM file for local HTTPS server
--local-key Path to certificate key file for local HTTPS server
--local-ca Path to certificate authority file for self-signed
certificates
--allow-invalid-cert Disable certificate checks for your local HTTPS server
(ignore cert/key/ca options) [boolean]
-o, --open Opens the tunnel URL in your browser
--print-requests Print basic request info [boolean]
--help Show this help and exit [boolean]
--version Show version number [boolean]
由于我的服务器没有域名绑定,不知道该怎么将本地映射到我的服务器
lt --port 8080
猜测:应该走的是https://localtunnel.me
而不是我的http:116.62.78.172
Upstream server providing forwarding
提供转发的上游服务器
[default: "https://localtunnel.me"]