[树莓派]手把手教你内网穿透

651 阅读3分钟

搭建 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 前面添加以下内容

nohup /home/pi/frp/frpc -c /home/pi/frp/frpc.ini &

访问 windows 主机

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

github.com/fatedier/fr…

  • 解压

image.png

  • 修改 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

image.png

解压,放在 frp 目录下,并且新建一个 WinSW-x64.xml 文件

image.png

WinSW-x64.xml 文件内容如下:

<service>
    <id>frp</id>
    <name>frp</name>
    <description>frp client</description>
    <executable>frpc</executable>
    <arguments>-c frpc.ini</arguments>
	<onfailure action="restart" delay="60 sec"/>
	<onfailure action="restart" delay="120 sec"/>
    <logmode>reset</logmode>
</service>

安装 frp 服务 ,打开 cmd 命令行,执行下面的命令

WinSW-x64.exe install

image.png

按 回车 即可安装,打开任务管理器,点开服务,如果有 frp 服务,表明安装成功

image.png

右键,点击开始,启动服务

image.png

授权 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)模式,需要预共享密钥才能从另一个客户端访问服务。

image.png

服务端:

[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

远程桌面连接

image.png

参考