没有公网如何远程访问?
1 序言
前面那么多篇博客我都是介绍,域名解析+端口转发。前提是你有公网啊,公网不是人人都有。这篇文章是用来拯救那些没有公网的朋友;然后有 IPv6 搭建的,但是公司没有 IPv6 用不了的;以及其他等等的情况。这篇大多数介绍的都是内网穿透,原理我都不细细说了,会用就行。
2 Tailscale
2.1 什么是 Tailscale
Tailscale 的官网是 https://tailscale.com,用谷歌邮箱登录。


2.2 怎么搭建 Tailscale
首先下载,windows 版本以及安卓(苹果)版本安装,并且用谷歌邮箱登录。那么你就可以在上面看到你的设备。在 setting 中打开 keys,生成两个 keys,但是我们需要的是上面这个 Auth_keys,保存备用。

在 docker 中创建 compose 项目,如代码注释所示替换个人信息。
# 官方文档
# https://tailscale.com
# ---
name: tailscale
# 最后编辑时间:2025-02-14
services:
tailscale:
# 镜像地址
image: tailscale/tailscale
# 容器名字
container_name: tailscale
# 主机名,这里修改为设备的名字,在网页上就会显示对应的名字,和下面配置文件中功能一样
#hostname: nas
# 特权模式,赋予容器几乎与主机相同的权限
privileged: true
environment:
# 需要到TS官网-Setting-keys内生成,可设置多台设备使用同一个key,切勿泄露
# 默认90天失效,需要到TS官网-Machine,点击设备右侧的三个点,点击Disable key expiry进行取消失效
# 如果使用密钥方式登录,则不需要去容器内的ssh终端内进行tailscale login命令登录
# 如果去容器内的ssh终端内使用tailscale login命令登录,则不需要配置该项
#去TS官网获取auth key
- TS_AUTHKEY=替换我
# 192.168.x.0/24为本机所在的局域网网段,注意修改,允许本机作为流量出站点这个需要用到
- TS_ROUTES=192.168.x.0/24 #修改为主机所在的网段
# 允许本机作为流量出站点
- TS_EXTRA_ARGS=--advertise-exit-node
#填写主机名,例如FnOS,和上面hostname功能一样,选一即可
- TS_HOSTNAME=FNOS
# 配置文件目录,默认的
- TS_STATE_DIR=./state/
volumes:
# 配置文件目录
- /docker/apps/tailscale/var/lib:/var/lib
# 内核调用
- ./dev/net/tun:/dev/net/tun
# 网络模式,host模式,无WebUI网页
network_mode: host
# 重启策略,总是重启
restart: always找到 FNOS 设备,然后删除禁用,保持一直在线。

其次打开,编辑线路设置,将异地组网的内网 IP 打勾。

2.3 如何使用 Tailscale
手机打开 Tailscale APP,打开左上角按钮。这样就相当于成功组网了,你可以用注册给的 FNOS 的公网 IP 100.x.x.x + 你飞牛内网哪个服务的端口,就能打开,比如 100.x.x.x:8096 就能打开 emby。
Tailscale 最舒服的就是可以使用内网 IP+端口,不用他给的公网IP,因为我们不是设置过一个子网路由,如图所示。

3 星空组网
3.1 什么是星空组网
星空组网的官网是 https://starvpn.cn,注册一个账号。可能会弹出实名认证,其实不需要实名认证也能使用。为什么要使用星空组网呢?首先上面的 TS 是国外软件,星空组网是国内软件,所以在一些单位或者公司的朋友就可以使用,不会被单位公司防火墙阻拦。
3.2 怎么搭建星空组网
创建星空组网子账号,添加成员,比如添加飞牛 nas 的,添加 openwrt 的,添加电脑的,添加手机的。那么我们下载相对应的软件就可以用这个账号密码登录,比如我们创建飞牛的账号为xkzw:fnos


我们在 docker 中新建 compose 项目。
# 官方文档
# https://www.starvpn.cn/
# ---
name: stars_client
# 最后编辑时间:2025-02-14
services:
stars_client:
# 镜像地址
image: registry.cn-beijing.aliyuncs.com/ld_beijing/stars.client:5.0.5
# 容器名字
container_name: stars_client
# 主机名
hostname: stars_client
# 特权模式,赋予容器几乎与主机相同的权限
privileged: true
environment:
# 指定您的星空组网成员账号
- STARS_USER=填写成员账号
# 指定您的星空组网成员密码
- STARS_PASS=填写成员密码
# 网络模式
network_mode: host
# 重启策略,总是重启
restart: always3.3 如何使用星空组网
打开手机星空组网 APP,输入子成员手机账号密码登陆,我们就会获得一个内网 IP 为 192.168.188.1,可以去星空组网网页查看飞牛给的内网IP为 192.168.188.2。那么我们访问飞牛 OS 就是 192.168.188.2:5666,如图所示。

4 皎月连
4.1 什么是皎月连
皎月连得官网是 https://natpierce.cn,登录网站用手机注册,下载一个手机 APP。
4.2 怎么搭建皎月连
手机或者异地电脑端下载好软件,用注册的手机号登录。
我们在 docker 中新建 compose 项目。
# 官方文档
# https://www.natpierce.cn/
# ---
name: natpierce
# 最后编辑时间:2025-02-14
services:
natpierce:
# 镜像地址
image: natpierce/natpierce:latest
# 容器名字
container_name: natpierce
# 主机名
hostname: natpierce
# 特权模式,赋予容器几乎与主机相同的权限
privileged: true
# 网络模式,host模式
# webui端口33272
network_mode: host
# 重启策略,总是重启
restart: always4.3 如何使用皎月连
创建好 compose 项目 webUI 打开端口为 33272 的网页,输入密码然后打开组网,打开服务。最后在手机上登录账号,指定 FNOS 连接,就可以用内网 IP+端口访问了。


5 总结
内网穿透服务,对于没有公网用户还是挺友好的。我们可以把三个 compose 项目合成一个 yaml 文件。
services:
tailscale:
# 镜像地址
image: tailscale/tailscale
# 容器名字
container_name: tailscale
# 主机名,这里修改为设备的名字,在网页上就会显示对应的名字,和下面配置文件中功能一样
#hostname: nas
# 特权模式,赋予容器几乎与主机相同的权限
privileged: true
environment:
# 需要到TS官网-Setting-keys内生成,可设置多台设备使用同一个key,切勿泄露
# 默认90天失效,需要到TS官网-Machine,点击设备右侧的三个点,点击Disable key expiry进行取消失效
# 如果使用密钥方式登录,则不需要去容器内的ssh终端内进行tailscale login命令登录
# 如果去容器内的ssh终端内使用tailscale login命令登录,则不需要配置该项
#去TS官网获取auth key
- TS_AUTHKEY=替换我
# 192.168.x.0/24为本机所在的局域网网段,注意修改,允许本机作为流量出站点这个需要用到
- TS_ROUTES=192.168.x.0/24 #修改为主机所在的网段
# 允许本机作为流量出站点
- TS_EXTRA_ARGS=--advertise-exit-node
#填写主机名,例如FnOS,和上面hostname功能一样,选一即可
- TS_HOSTNAME=FNOS
# 配置文件目录,默认的
- TS_STATE_DIR=./state/
volumes:
# 配置文件目录
- /docker/apps/tailscale/var/lib:/var/lib
# 内核调用
- ./dev/net/tun:/dev/net/tun
# 网络模式,host模式,无WebUI网页
network_mode: host
# 重启策略,总是重启
restart: always
stars_client:
# 镜像地址
image: registry.cn-beijing.aliyuncs.com/ld_beijing/stars.client:5.0.5
# 容器名字
container_name: stars_client
# 主机名
hostname: stars_client
# 特权模式,赋予容器几乎与主机相同的权限
privileged: true
environment:
# 指定您的星空组网成员账号
- STARS_USER=填写成员账号
# 指定您的星空组网成员密码
- STARS_PASS=填写成员密码
# 网络模式
network_mode: host
# 重启策略,总是重启
restart: always
natpierce:
# 镜像地址
image: natpierce/natpierce:latest
# 容器名字
container_name: natpierce
# 主机名
hostname: natpierce
# 特权模式,赋予容器几乎与主机相同的权限
privileged: true
# 网络模式,host模式
# webui端口33272
network_mode: host
# 重启策略,总是重启
restart: always