frp安装配置之内网穿透最佳方案

Frp是一款流行的跨平台开源免费内网穿透反向代理应用,支持 Windows、macOS与 Linux,支持 TCP、UDP 协议,支持http 和 https 协议,在公网服务器安装一个server端,内网服务器安装一个客户端,起到一个中转转发的作用,从而实现内网暴露到外网,实际就是一个反向代理转发器。

服务器端安装配置 Frp

FRP 使用 Go 语言开发,可以支持 Windows、Linux、macOS、ARM 等多平台部署。FRP 安装非常容易,只需下载对应系统平台的软件包并解压就可用了。这里以 Linux 系统为例:

1
2
3
4
5
6
export FRP_VERSION=0.41.0
sudo mkdir -p /etc/frp
cd /etc/frp
sudo wget "https://github.com/fatedier/frp/releases/download/v${FRP_VERSION}/frp_${FRP_VERSION}_linux_amd64.tar.gz"
sudo tar xzvf frp_${FRP_VERSION}_linux_amd64.tar.gz
sudo mv frp_${FRP_VERSION}_linux_amd64/* /etc/frp

截止写这篇文章为止,github上的最新版本是0.41.0,如果以后出了更新的版本只要改一下上面的版本号就行了,可以去https://github.com/fatedier/frp/查看最新版本信息。

FRP 默认提供了 2 个服务端配置文件,一个是简化版的 frps.ini,另一个是完整版的 frps_full.ini。初学者只需用简版配置即可,在简版 frps.ini 配置文件里,默认设置了监听端口为 7000,可以按需修改它。

需要将服务器的系统防火墙安全组放行,设置 7000 或修改过的对应端口的「允许入站和出站」,否则会一直连接不上的哦!!!这个切记!!

启动 FRP 服务端(非后台启动,未配置开机自启的情况下)

1
./frps -c ./frps.ini

如服务器使用 Win 系统,假设解压到 c:\frp 文件夹,那么只需这样启动:

1
c:\frp\frps.exe -c c:\frp\frps.exe

当然,这样的启动一般测试可以,生产环境多数为后台启动,需要配置后台运行和开机自启

使用systemctl配置后台运行和开机自启

1
sudo vim /lib/systemd/system/frps.service

在frps.service里写入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/etc/frp/frps -c /etc/frp/frps.ini

[Install]
WantedBy=multi-user.target

启动frps

1
2
3
sudo systemctl start frps
#打开自启动
sudo systemctl enable frps

如果要重启应用,sudo systemctl restart frps
如果要停止应用,sudo systemctl stop frps
如果要查看应用的日志,sudo systemctl status frps

如果启动时7000端口被占用

1
2
#查看端口号 
netstat -anp|grep 7000

1
2
#查看端口号
lsof -i:7000

1
2
#查看程序进程 
ps -ef|grep frps

得到进程id(pid)之后,杀掉进程

1
kill -9 进程号

至此服务端安装完毕并已经启动

配置frp客户端(内网机器上)

可以将 Frp 客户端安装在内网的 Windows 电脑、Linux 设备 比如树莓派 或者 NAS,甚至部分路由器等设备上。Linux 客户端的安装和启动与服务器端没有太多区别,只是对应运行程序是 frpc 而不是 frps。

如果是linux设置,安装和设置重启过程这里就省略了,和上面一样的,如果是windows电脑,Frp 是绿色程序,下载软件包回来解压后,启动 frpc.exe 即可。

在启动前,我们需要先修改配置文件frpc.ini
比如服务器的公网ip是1.2.3.4.5

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[common]
server_addr = 1.2.3.4.5
server_port = 7000

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 7001

[hexo]
type = tcp
local_ip = 127.0.0.1
local_port = 4000
remote_port = 7002

如上,中括号里面的文字是标识,可以自定义,第一个server-port = 7000是服务器上的server端端口。
这里配置了四个应用,分别是
1.ssh远程登录22端口,映射公网的7001;
2.hexo应用,4000端口映射公网的7002

以上还可以配置更多端口,上面的7001到7002都要在服务器安全组放行

启动frp客户端

linux和上面写的服务端启动方法一样
windows假设已将 Frp 的客户端解压缩到 c:\frp 目录中,那么启动 Frp 客户端的命令就是:

1
c:\frp\frpc.exe -c c:\frp\frpc.ini

Linux 启动 Frp 客户端命令(非后台启动,未配置开机自启的情况下):

1
./frpc -c ./frpc.ini

启动之后看到 “start proxy success”字样就表示启动成功了。

远程访问

公网ip或域名:7001就可以登录内网linux

公网ip或域名:7002就可以访问到内网的hexo应用

这样真的就完美舒服了。

last update time 2022-04-25