第三方服务

natapp

手把手教你内网穿透 - 图1

  • 购买免费隧道
  • 选择隧道协议 web 、tcp 或者 udp ,输入本地端口,域名和远程端口是系统随机分配的,免费的不能自定义域名
  • 查看已拥有的隧道,复制 authtoken
  • 下载客户端,natapp.cn/#download
  • 客户端启动

./natapp -authtoken=9ab6b9040a624f40 复制代码

搭建 frp 内网穿透服务

准备材料

  • 公网IP 的 ECS 一台
  • 域名 (若不需要解析则不需要)

    安装 frps 服务端

  • 下载 frp 安装包

根据操作系统下载不同版本,我这边使用的 ECS 操作系统为 centos ,选择 frp_0.34.0_linux_amd64.tar.gz
lsb_release -a 复制代码

  • 解压压缩包,修改 frps.ini

[common] bind_port = 16001 # frps 服务启动,占用的端口 vhost_http_port = 80 # frps 服务监听转发的端口 复制代码
注意: 如果 vhost_http_port=9200,最后浏览器访问域名就是 frp.hntool.vip:9200

  • 后台启动 frps 服务

nohup ./frps -c frps.ini > frp.log 2>&1 & 复制代码

  • 查看日志

tail -f frp.log 复制代码

  • 自定义开启脚本,新建 start.sh 文件,加入以下内容

!/bin/sh nohup ./frps -c frps.ini > frp.log 2>&1 & # 注意 /usr/local/src/frp_0.34.0_linux_amd64 这个目录是 frp 服务所在的目录 echo $!> /usr/local/src/frp_0.34.0_linux_amd64/obj.pid 复制代码

  • 自定义关闭脚本,新建 shutdown.sh 文件,加入以下内容

!/bin/sh PID=$(cat /usr/local/src/frp_0.34.0_linux_amd64/obj.pid) kill -9 $PID 复制代码

安装 frpc 客户端

下载 frp 客户端
在目标内网设备机器,安装客户端。 根据操作系统下载不同版本
树莓派 : frp_0.34.0_linux_arm.tar.gz
Windows : frp_0.34.0_windows_amd64.zip 或 frp_0.34.0_windows_386.zip
Mac : frp_0.34.0_darwin_amd64.tar.gz
Centos : frp_0.34.0_linux_amd64.tar.gz
自定义域名访问内网服务

  • 修改 frpc.ini

[common] server_addr = 111.111.111.111 # ECS的公网IP server_port = 16001 [web] # 随意但必须唯一 type = http local_port = 8099 # 本地目标服务的端口 custom_domains = frp.hntool.vip # 自定义的域名(全域名) 复制代码

  • 启动客户端

./frpc -c ./frpc.ini 复制代码

  • 添加开机自启

    sudo vim /etc/rc.local 复制代码
    在exit 0 前面添加以下内容
    手把手教你内网穿透 - 图2
    nohup /home/pi/frp/frpc -c /home/pi/frp/frpc.ini & 复制代码
    访问 windows 主机

  • 下载 windows 版本的 frp 客户端,如果下载比较慢的话,可以用迅雷下载。

github.com/fatedier/fr…

  • 解压

手把手教你内网穿透 - 图3

  • 修改 frpc.ini

[common] server_addr = 111.111.111.111 server_port = 16001 [win] type = tcp local_ip = 127.0.0.1 local_port = 3389 remote_port = 16004 复制代码

  • 前台启动

frpc.exe -c frpc.ini 复制代码

  • 后台启动,下载 winsw

手把手教你内网穿透 - 图4
解压,放在 frp 目录下,并且新建一个 WinSW-x64.xml 文件
手把手教你内网穿透 - 图5
WinSW-x64.xml 文件内容如下:
frp frp frp client frpc -c frpc.ini reset 复制代码
安装 frp 服务 ,打开 cmd 命令行,执行下面的命令
WinSW-x64.exe install 复制代码
手把手教你内网穿透 - 图6
按 回车 即可安装,打开任务管理器,点开服务,如果有 frp 服务,表明安装成功
手把手教你内网穿透 - 图7
右键,点击开始,启动服务
手把手教你内网穿透 - 图8

授权 token

为了安全起见,建议设置一个 token ,frp 客户端必须使用正确的 token 才能连接 frp 服务端
服务端 frps.ini 配置修改,加入以下内容
[common] bind_port = 16001 vhost_http_port = 16002 token = 12345678 复制代码
客户端 frpc.ini 配置修改,加入以下内容
[common] server_addr = 111.111.111.111 server_port = 16001 token = 12345678 复制代码

安全问题(stcp)模式

如果直接暴露于公共网络,一些服务将面临风险。对于STCP(秘密TCP)模式,需要预共享密钥才能从另一个客户端访问服务。
手把手教你内网穿透 - 图9
服务端:
[common] bind_port = 16001 复制代码
客户端1:
[common] server_addr = 111.111.111.111 server_port = 16001 # 注意这里的 win 就是客户端2的 server_name [win] type = stcp # 只有 sk 一致的用户才能访问到此服务 sk = abcdefg local_ip = 127.0.0.1 # 远程桌面本地端口号 local_port = 3389 复制代码
客户端2:
[common] server_addr = 111.111.111.111 server_port = 16001 [rdp_visitor] type = stcp # stcp 的访问者,默认就这个,无须更改 role = visitor # 要访问的 stcp 代理的名字 server_name = win # 只有 sk 一致的用户才能访问到此服务 sk = abcdefg # 绑定本地端口用于访问 远程桌面 服务 bind_addr = 127.0.0.1 bind_port = 6000 复制代码
远程桌面连接
手把手教你内网穿透 - 图10

参考