type
status
date
slug
summary
tags
category
icon
password

内网穿透

使用 Tailscale 进行穿透

🚃
能够进行不同局域网的打洞,实现两个局域网内的互通,但打洞成功率不高,且局域网A和B的机器各自至少有一台机器需要同一个账号

需要什么

  • 需要去注册一个 Tailscale 账号
  • 在局域网内一台机器上登陆你的 Tailscale 账号

如何进行配置

notion image
绿色:局域网A
黄色:局域网B
设备:指在两个局域网内都要有一台登陆了 Tailscale 账号的设备

基本设置

在登陆了同一账号的两个设备就相当于组网,即拉进了同一个局域网,即可以在异地进行连接

进阶配置

开启设备作为子网网关的功能,可实现类似于局域网网关的功能
  • 在一个局域网内一台设备开启,如在局域网 B 的一台设备开启了子网网关功能,则相当于在局域网 A 且登陆了 Tailscale 同一账号的设备可以访问局域网 B 里面没有登陆 Tailscale账号的设备
  • 如果两个局域网都有开启子网网关功能的设备,则可以两个局域网内设备通过这两台开启了子网网关功能的设备进行访问
以局域网 B 内一台 Windows 设备为例子
  • 命令行输入
  • 如果说找不到 tailscale 可直接去找到 tailscale 安装目录,其实就是环境变量的问题
  • 附上官网开启子网连接
  • 然后进入设置页面
notion image
notion image
  • 然后愉快访问🎉

使用 frp 进行穿透

🪜
frp 能够以docker的形式或者以其他形式进行部署,有丰富的设置,包括一些安全措施,也有端口复用等等,不好的地方在于需要自己对需要的服务进行设置

需要准备什么

  1. 一个能访问的公网的服务器(国内可从阿里云、腾讯云购买)挂载frps服务
  1. (可选)在另一台电脑(系统随意)挂载frpc服务

如何进行配置

  • 先去 Github 进行对应版本的下载

基本配置

  • 最基本的配置,在不做任何安全性措施的情况下直接进行连接,如:
notion image
需要进行如下设置:
  • 在你的公网服务器配置frps服务
  • 在局域网内被访问机本机或者局域网内另一台机器部署frpc服务
  • 要确保你设置的 frpc 的机器能够访问你设置了 frps 服务的服务器
  • 在你的访问机器尝试访问被访问机器

可选配置

notion image
  • token 验证,在 frpc.tomlfrps.toml 配置文件里面添加 token 认证相关内容
  • STCP 互相验证
💴
只有在得到secretKey的情况下才能进行访问,需要在访问机器也配置frpc
💡
如果出现问题,可看服务是否正常运行,用telnetnc127.0.0.1 6000测试
  • XTCP 进行 P2P 模式
📖
不一定能成功,快捷性和稳定性都不保证,好处是成功了后不会消耗公网服务器的流量,而是点对点,所以会设置一个回退机制,如果一定时间内打洞不成功的话就会回退到另一个服务进行连接; 如果打洞成功,下次建立新的连接时,将不需要再次打洞,会很快完成连接建立,不会触发 fallback。
💹
需要注意根据访问端和被访问端的延迟情况来合理设置超时时间,以避免超时时间太短,即使打洞成功连接也来不及建立,而一直触发 fallback。

如何让服务开机自启动和后台持续运行

Linux

⚗️
在 Linux 系统下,使用 systemd 可以方便地控制 frp 服务的启动、停止、配置后台运行以及开机自启动。,以维持 frps 程序为例
操作
命令
说明
启动服务
sudo systemctl start <服务名>
立即启动服务
停止服务
sudo systemctl stop <服务名>
立即停止服务
重启服务
sudo systemctl restart <服务名>
停止再启动服务
重载配置
sudo systemctl reload <服务名>
重新加载配置文件(不停止服务)
查看状态
sudo systemctl status <服务名>
显示服务是否运行、状态和日志
开机自启
sudo systemctl enable <服务名>
设置服务开机自动启动
取消开机自启
sudo systemctl disable <服务名>
禁用开机自动启动
列出所有服务
systemctl list-units --type=service
显示当前正在运行的服务
所有已安装服务
systemctl list-unit-files --type=service
显示所有可管理的服务及其状态
以下是具体的操作步骤:
  1. 安装 systemd
如果您的 Linux 服务器上尚未安装 systemd,可以使用包管理器如 yum(适用于 CentOS/RHEL)或 apt(适用于 Debian/Ubuntu)来安装它:
  1. 创建 frps.service 文件
使用文本编辑器 (如 nano) 在 /etc/systemd/system 目录下创建一个 frps.service 文件,用于配置 frps 服务。
写入内容
  1. 使用 systemd 命令管理 frps 服务
  1. 设置 frps 开机自启动

Windows

🎻
通过 Windows 的 服务管理器(SCM) 可以后台运行、开机自启,并且支持自动重启服务等功能,以 frp 程序为例子
  1. 首先先确保安装了 frp 的 .exe 可执行程序和 .ini 配置文件,并放置同一路经下
  1. 然后下载 windows 包装服务的一个程序,可以选择其他,仅提供选择
进入 NSSM 的目录,然后安装服务
弹出配置窗口,填写以下信息:
  • Application tab
    • Path: C:\Program Files\frp\frpc.exe ,是前面的exe可执行程序和ini配置文件的那个路经
    • Arguments: -c frpc.ini
    • Startup directory: C:\Program Files\frp\
  • Log On tab
    • 建议选择一个具有权限的账户登录(默认是 LocalSystem)
  • Dependencies tab
    • 如果需要依赖网络连接等,可添加依赖项
  • Details tab
    • 设置描述和显示名称,如:
      • Display name: FRP Client
      • Description: Fast Reverse Proxy Client Service
点击 Install service
  1. 设置开机自启动
    1. 打开“服务”管理器(Win + R → services.msc
    2. 找到名为 frpc 的服务
    3. 右键 → 启动
    4. 设置启动类型为 自动
  1. 输出日志配置,通过修改 ini 配置文件让其可以输出日志

Mac

🧸
MAC 和 Linux 差不多,但是 Linux 是利用 systemctl 然后 Mac 是使用 launchctl
⚗️
这里以在 Mac 启动 frpc 服务为例子
  1. 首先确认你需要运行的脚本example.sh或者程序如frpc能够运行,即具有权限
    1. 这里面的example.sh的内容是frpc -c frpc.toml
  1. 创建一个 .plist 文件,且你希望是对全部用户生效还是仅对当前用户生效,选择其一创建
然后编辑里面内容:
或者直接不用 .sh 而是直接用启动frpc的命令
  1. 加载 & 启动服务
  1. 查看日志
  1. 验证是否运行成功
正常运行状态下的输出表示应该是
  • 服务已经成功启动并正在运行
  • 或者:服务启动后立即退出了,但因为设置了 KeepAlive,系统会不断尝试重启它
字段
含义说明
48005
状态码
表示服务当前的状态代码(非负数表示正在运行或已终止)
0
退出码
0 表示正常退出,如果是其他数字则代表错误
your_survice_name
服务名
你配置的服务标识

其他工具

  • 新出不久的一个工具,可以尝试,有新的一个打洞技术,据说可以高效打洞,同时支持自部署
 
实验室配置机器学习核心概念
Loading...