一.准备工具

准备工作: 至少两台电脑,其中一台需要是有公网IP的服务器

工具: frp, centOS


 

frpc数据上传 frpc详细教程_frpc数据上传



三.配置Frp 服务器端(公网IP) 和 客户端(电脑)



(1) 服务器端

1.新建目录
 
mkdir ~/frp

2.上传frp_0.30.0_linux_amd64.tar.gz至linux服务器~/frp目录下

3.解压,并进入目录
 
tar -zxvf frp_0.30.0_linux_amd64.tar.gz  
cd frp_0.30.0_linux_amd64

4.这里主要关注4个文件,分别是frpc、frpc.ini和frps、frps.ini,前者两个文件是客户端所关注文件,后者两个文件是服务端所关注两个文件。

frpc数据上传 frpc详细教程_linux_02

5.可以先删掉frpc、frpc.ini两个文件,然后再进行配置,也可以不用删除。
 
vim ./frps.ini -

[common] bind_port = 7000 #与客户端绑定的进行通信的端口 vhost_http_port = 8080 #访问客户端web服务自定义的端口号

frpc数据上传 frpc详细教程_frpc数据上传_03

6.然后启动服务
 
./frps -c ./frps.ini,这是前台启动



(2) 客户端
1.下载frp_0.30.0_darwin_amd64.tar.gz (对应自己的电脑系统版本, 这是Mac系统)

frpc数据上传 frpc详细教程_运维_04

2.解压后,首先删掉frps、frps.ini两个文件,然后再进行配置,修改 frpc.ini 配置文件
 
[common]
server_addr = xxxxxxx #公网服务器ip
server_port = 7000 #与服务端bind_port一致
 
[web]
type = http #访问协议
local_port = 8080 #内网web服务的端口号(Vue调试模式,默认8080端口) custom_domains = www.xxx.com #所绑定的公网服务器域名,一级、二级域名都可以,IP也可。

frpc数据上传 frpc详细教程_客户端_05


frpc.ini的配置跟Windows或者Linux下没什么区别,注意填上你正确的FRP服务器地址和端口就行了,上边代码里server_addr=xxx.xxx.xxx.xxx代表你的FRP服务器地址,server_port = 7000代表你FRP服务器的端口,千万别照抄我的,macOS系统下配置FRP客户端并实现开机自启动 SSH默认的端口是22,VNC默认的端口是5900,如果你修改过,请填写正确的本地端口,remote_port则表示穿透到外网使用的端口,请确保在服务器的系统防火墙上放行了这些端口,且没有被其他程序占用,否则你是连不上的。


 


上面的配置和服务端是对应的。



(3) 开始穿透
  • 方式一:后台运行

1.需先 运行frps 服务器S

./frps -c ./frps.ini

2.然后 运行frpc 客户端C

./frpc -c ./frpc.ini



  • 方式二:Linux下添加frp内网穿透服务端工具开机启动

1.frps 服务器

在/etc/rc.local里面添加 nohup /usr/local/frp/frps -c /usr/local/frp/frps.ini >/dev/null 2>&1 &

frpc数据上传 frpc详细教程_客户端_06

2.frpc 客户端

在/etc/rc.local里面添加 nohup /usr/local/frp/frpc -c /usr/local/frp/frpc.ini >/dev/null 2>&1 &

frpc数据上传 frpc详细教程_服务器_07

补充:

windows下添加frp客户端开机启动

(1)创建 frpc.bat启动脚本
(2)脚本内容:
@echo off
cd “D:\Program Files\frp”
frpc -c frpc.ini
@echo on
(3)创建frpc.bat快捷方式,将此快捷方式复制到所有程序-启动(右击,选择打开)文件夹下。



mac下添加frp客户端开机启动

要实现macOS下程序的自启动,很多人都知道在“系统偏好设置” - “用户和群组”中设置和取消开机启动,但这里要说的是另外一种方式,那就是launchd的方式,通过在launchd下编写plist启动文件实现FRP带参数启动。这里要啰嗦两句,在launchd下其实有两种实现程序自启的方式

1.如果需要 root,并且是需要用户登陆后才能运行,把 plist 放在 /Library/LaunchAgents/
2.如果需要 root,并且不需要用户登陆后都能运行,把 plist 放在 /Library/LaunchDaemons/

怎么理解呢,第一种就是系统启动后,你不登录到桌面,程序就不会在后台启动,类似于Windows下的开始菜单里的startup。第二种就是系统启动后,程序也随系统在后台启动,不管用户是否登录桌面,类似于Windows下的系统服务。你需要哪种方式让程序自启,自行选择第一种或者第二种。

选择在/Library/LaunchDaemons/创建plist

sudo vim ~/Library/LaunchDaemons/frpc.plist

让我们用上面的命令创建FRP的启动文件frpc.plist,并用vim编辑它,你当然也可以用你自己喜欢的编辑器编辑macOS系统下FRP客户端配置并实现开机自启动

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>frpc</string>
<key>ProgramArguments</key>
<array>
<string>/Users/xxxxxxxx/Downloads/frp_0.30.0_darwin_amd64/frpc</string>
<string>-c</string>
<string>/Users/xxxxxxxx/Downloads/frp_0.30.0_darwin_amd64/frpc.ini</string>
</array>
<key>KeepAlive</key>
<true/>
<key>RunAtLoad</key>
<true/>
</dict>
</plist>

将上面一段代码粘贴到frpc.plist里,粗体字部分请修改为你的frpc和frpc.ini的真实路径,千万别照抄作业哦,老师会发现的。

最后,在终端输入下面的两段命令给frpc.plist赋予权限,并加载配置到系统使配置生效

sudo chown root ~/Library/LaunchDaemons/frpc.plist
sudo launchctl load -w ~/Library/LaunchDaemons/frpc.plist

重启系统,FRP客户端已经可以随系统自启了。



踩坑处理:

(1)先看看服务器是否开启了任务监听对应端口,我这里端口是7000
        sudo netstat -tunlp | grep 7000  
(2)如果任务已开始监听,然后看看防火墙是否开放了这个端口,很重要
        sudo iptables -L -n --line-numbers | grep 7000  
(3)如果防火墙没有开启这个端口,需要自己添加规则开启
        sudo iptables -I INPUT -ptcp --dport 7000 -j ACCEPT  
(4)补充iptables相关命令 查找所有规则
        sudo iptables -L INPUT --line-numbers