多朋友没有独立ip,但是又想把nas上的服务映射到公网上使用。
比较简单的方案是通过zerotier,tailscale,wireguard等虚拟内网工具,把需要访问的设备都加到虚拟内网中,通过穿透实现异地访问服务。
其实tailscale本身可以提供类似于群晖的公网访问。
这个工具叫Tailscale Funnel
基本原理是在tailscale会给你的设备分配一个二级域名,你通过二级域名的访问会被转发到指定的内网服务上,来实现。
这个服务是免费的
下面开始配置
首先要去tailscale管理页面开启它,先登录你的tailscale
https://login.tailscale.com/admin/dns
系统会分配一个默认的二级域名
然后激活magicDNS
然后激活https
打开access controls页面,激活funnel
建议使用完整功能的linux系统操作,方便把局域网中其他设备的服务映射出去,我这里以ubuntu20为例。
首先安装tailscale,打开
https://pkgs.tailscale.com/stable/
找到对应的平台安装tailscale
申请证书
tailscale cert
#会提示需要输入三级域名,格式是 node_name.tailxxx.ts.net
# 输入正确的节点域名,重新执行
tailscale cert g4560.tail471ed.ts.net
首先确保这台机器上的服务正常启动了,注意一定要localhost也就是127.0.0.1的本机服务,这是funnel的限制,不要问我为什么不能直接把127.0.0.1写成局域网的其他设备ip,tailscale不让!!!那如果想映射局域网的其他设备怎么办,后面讲。
tailscale serve https / http://127.0.0.1:9091
tailscale funnel 443 on
tailscale funnel status
#https://example.pango-lin.ts.net (Funnel on)
可以看到已经激活了
但是如果你现在访问它是访问不了的,因为域名生效是需要时间的,稍等片刻一般来说就能更新出来
不用等很久就可以访问了
如果我们想把局域网中其他的服务访问出去怎么办
要么你在有服务的节点上安装tailscale启用funnel
如果那台机器不方便使用funnel怎么办,比如它是一台群晖
办法总是有的,我们在一台可以安装tailscale的节点上,这台机器可以是虚拟机
通过nginx先把服务给代理一下,本机上就可以通过localhost访问到了
比如,我现在要把我的jellyfin服务映射出去。
就需要nginx之类的反代工具了,其他的类似的caddy也是可以的,不过我个人是喜欢用nginx的。
首先安装nginx
sudo apt install nginx -y
创建并配置/etc/nginx/conf.d/jellyfin.conf
server {
listen 8801;
server_name _;
charset utf-8;
keepalive_timeout 70;
location / {
# proxy_redirect off;
proxy_pass http://192.168.188.167:8096; # port
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
重启nginx使配置生效
systemctl restart nginx
查看服务是否已经启动
netstat -nltp
# 看到8801已经启动了
重新配置funnel 443指向8096
tailscale serve https / http://127.0.0.1:8096
tailscale funnel 443 on
tailscale funnel status
#https://example.pango-lin.ts.net (Funnel on)
刷新你的页面,可以看到页面已经变成了jellyfin,至此就完成了内网服务到公网的映射。
速度取决于你的搭建tailscale的节点到tailscale的服务器的速度,并不快,但是免费的服务
这个funnel功能适合实在没有办法的朋友,可以用于一些文字类的内网服务或者用于临时的内网服务管理。
你可能要问能不能搭建一个中间服务器提速啊
你是不是傻,如果你能自己搭建中间服务器,你有一台独立ip的vps,你还需要这个东西做什么呢,直接搭建ngrok、frp等等,他不香么