树莓派3b内网穿透Frp实战连接VNC(超简单)
在家用树莓派做了个小东西,想穿透内网,查了很久的资料,最终用frp来实现。
1、准备材料
- 树莓派
- 公网IP服务器(我这里使用了公司的Ubuntu)
2、服务器安装Frp
下载一键部署脚本 $sudo wget --no-check-certificate https://raw.githubusercontent.com/clangcn/onekey-install-shell/master/frps/install-frps.sh -O ./install-frps.sh 分配权限 $sudo chmod 700 ./install-frps.sh 安装 FRP 服务端 $sudo ./install-frps.sh install
安装过程如下:
$ ./install-frps.sh install Please select frps download url: [1].aliyun (default) [2].github Enter your choice (1, 2 or exit. default [aliyun]): --------------------------------------- Your select: aliyun --------------------------------------- Loading network version for frps, please wait... frps Latest release file frp_0.15.1_linux_amd64.tar.gz Loading You Server IP, please wait... You Server IP:12.34.56.78 Please input your server setting: Please input frps bind_port [1-65535](Default Server Port: 5443):7000 frps bind_port: 7000 Please input frps vhost_http_port [1-65535](Default vhost_http_port: 80):8080 frps vhost_http_port: 8080 Please input frps vhost_https_port [1-65535](Default vhost_https_port: 443): frps vhost_https_port: 443 Please input frps dashboard_port [1-65535](Default dashboard_port: 6443):7500 frps dashboard_port: 7500 Please input dashboard_user (Default: admin): frps dashboard_user: admin Please input dashboard_pwd (Default: IY0p1bOg):admin frps dashboard_pwd: admin Please input privilege_token (Default: 9BqswPpd1R0TfGR5):mike frps privilege_token: mike Please input frps max_pool_count [1-200] (Default max_pool_count: 50): frps max_pool_count: 50 ##### Please select log_level ##### 1: info (default) 2: warn 3: error 4: debug ##################################################### Enter your choice (1, 2, 3, 4 or exit. default [1]): log_level: info Please input frps log_max_days [1-30] (Default log_max_days: 3 day): frps log_max_days: 3 ##### Please select log_file ##### 1: enable (default) 2: disable ##################################################### Enter your choice (1, 2 or exit. default [1]): log_file: enable ##### Please select tcp_mux ##### 1: enable (default) 2: disable ##################################################### Enter your choice (1, 2 or exit. default [1]): tcp_mux: true ##### Please select kcp support ##### 1: enable (default) 2: disable ##################################################### Enter your choice (1, 2 or exit. default [1]): kcp support: true ============== Check your input ============== You Server IP : 12.34.56.78 Bind port : 7000 kcp support : true vhost http port : 8080 vhost https port : 443 Dashboard port : 7500 Dashboard user : admin Dashboard password : admin Privilege token : mike tcp_mux : true Max Pool count : 50 Log level : info Log max days : 3 Log file : enable ============================================== Press any key to start...or Press Ctrl+c to cancel frps install path:/usr/local/frps config file for frps ... done download frps ... done download /etc/init.d/frps... done setting frps boot... done +--------------------------------------------------+ | Manager for Frps, Written by Clang | +--------------------------------------------------+ | Intro: http://koolshare.cn/thread-65379-1-1.html | +--------------------------------------------------+ Starting Frps(0.15.1)... done Frps (pid 3325)is running. +---------------------------------------------------------+ | frps for Linux Server, Written by Clang | +---------------------------------------------------------+ | A tool to auto-compile & install frps on Linux | +---------------------------------------------------------+ | Intro: http://koolshare.cn/thread-65379-1-1.html | +---------------------------------------------------------+ Congratulations, frps install completed! ============================================== You Server IP : 12.34.56.78 Bind port : 7000 KCP support : true vhost http port : 8080 vhost https port : 443 Dashboard port : 7500 Privilege token : mike tcp_mux : true Max Pool count : 50 Log level : info Log max days : 3 Log file : enable ============================================== frps Dashboard : http://12.34.56.78:7500/ Dashboard user : admin Dashboard password : admin
3、Frp服务端相关操作命令
$sudo ./install-frps.sh config 更新 FRP 服务端
$sudo ./install-frps.sh update 更新 FRP 服务端
$sudo ./install-frps.sh uninstall 卸载FRP 服务端
FRP 服务端安装完成后,一键部署脚本还提供了一个日常管理 FRP 服务端的管理脚本来进行日常的启动、重启、停止等操作,非常的方便。
$sudo /etc/init.d/frps { start | stop | restart | status | config | version }
$sudo ./install-frps.sh config 更新 FRP 服务端
$sudo ./install-frps.sh update 更新 FRP 服务端
$sudo ./install-frps.sh uninstall 卸载FRP 服务端
FRP 服务端安装完成后,一键部署脚本还提供了一个日常管理 FRP 服务端的管理脚本来进行日常的启动、重启、停止等操作,非常的方便。
$sudo /etc/init.d/frps { start | stop | restart | status | config | version }
安装完成后可以打开控制面板查看连接状态,frps 面板 : http://12.34.56.78:7500(ip改为自己的服务器ip)
4、frp客户端安装(树莓派3b)
选择适合树莓派使用的版本:https://github.com/fatedier/frp/releases
我这里选择0.20.0版本(一定要选arm版本,上面的脚本只适合centos、ubuntu安装)
#下载
$sudo wget https://github.com/fatedier/frp/releases/download/v0.20.0/frp_0.20.0_linux_arm.tar.gz
#解压
$sudo tar -zxvf frp_0.20.0_linux_arm.tar.gz
$cd frp_0.20.0_linux_arm
$sudo nano frpc.ini
#写入如下配置信息(记得删掉我注释的文字)
[common]
server_addr = 填写你的服务器ip
server_port = 7000 #服务器绑定的端口号 (Bind port)
token = mike #服务器填写的token,一定要与服务器一致,否则会连接失败
[VNC]
type = tcp
local_ip = 127.0.0.1
local_port = 5900 #vnc端口号
remote_port = 5900 #远程端口(vnc远程的端口,如有多个设备,可以用不同的端口号区分)
#ctrl+o保存,ctrl+x退出
#使用命令测试是否正常启动
$sudo ./frpc -c ./frpc.ini
#成功你会看到类似如下信息
[I] [proxy_manager.go:300] proxy removed: []
[I] [proxy_manager.go:310] proxy added: [VNC]
[I] [proxy_manager.go:333] visitor removed: []
[I] [proxy_manager.go:342] visitor added: []
[I] [control.go:246] [32842bb84c4f06bb] login to server success, get run id [32842bb84c4f06bb], se
[I] [control.go:169] [32842bb84c4f06bb] [VNC] start proxy success
刷新你的frps面板,你会发现Tcp菜单中有一台主机上线了,这样我们就成功穿透内网啦!!!
5、树莓派开机启动Frpc
$sudo nano /lib/systemd/system/frpc.service #写入一下配置(记得删掉我注释的文字) [Unit] Description=frapc service After=network.target syslog.target Wants=network.target [Service] Type=simple #启动服务的命令(此处写你的frps的实际安装目录) ExecStart=/home/pi/frp_0.20.0_linux_arm/frpc -c /home/pi/frp_0.20.0_linux_arm/frpc.ini
#安装目录中frpc和frps,我们客户端使用frpc就可以了,frpc.ini配置文件也一样 [Install] WantedBy=multi-user.target #ctrl+o保存,ctrl+x退出
6、然后启动Frp
$sudo systemctl start frpc
打开自启动(不推荐使用,因为会遇到网络还没连接,服务启动失败的情况,我们使用启动文件延迟启动)
$sudo systemctl enable frpc
关闭自启动
$sudo systemctl disable frpc
打开启动文件添加启动脚本,在exit 0前加入启动命令
$sudo nano /etc/rc.local #加入以下代码 sleep 60 #延迟60秒执行 sudo systemctl start frpc #启动frpc服务 #(如果有多个脚本执行时一定要在后面加“&”符号)
重启,刷新Frp控制面板,查看主机状态。
7、客户端相关操作命令
重启服务:sudo systemctl restart frpc
停止服务:sudo systemctl stop frpc
查看日志:sudo systemctl status frpc
8、打开VNC客户端,测试连接!例如:12.34.56.78:9500
9、Windows 系统内网穿透实例
下载适用windows程序(最好跟自己使用的服务端对应):https://github.com/fatedier/frp/releases
frp_0.20.0_windows_386.zip 为 32 位版本
frp_0.20.0_windows_amd64.zip 为 64 位版本
解压后打开 frpc.ini,将其中的内容替换为以下代码,设置完成后保存文件(记得删掉我注释的文字)。
[common] server_addr = 12.34.56.78 #服务器地址 server_port = 7000 #服务器绑定的端口号 token = mike #必须跟服务端一致 [VNC] type = tcp local_ip = 127.0.0.1 local_port = 5900 remote_port = 5902 #远程端口号,有多个设备的话不能相同
10、开机启动
在解压根目录新建脚本文件frpc.vbs,输入以下代码:
Set ws = CreateObject("Wscript.Shell") ws.run "cmd /c frpc.exe -c frpc.ini",vbhide
保存后创建快捷方式,拖动到windows开机启动。
双击快捷方式,查看Frp控制面板,Windows主机上线啦!!!(因为脚本加了隐藏命令,所有双击不会有任何提示或界面出现!)