frp是什么?
frp是内网穿透的反向代理应用,可以将内网服务通过有公网IP节点的中装暴露到公网。支持 TCP、UDP、HTTP、HTTPS 等多种协议。
怎么实现frp内网穿透?
准备:一台有公网IP的服务器(阿里云等)、一台需要实现内网穿透的机器(设备或者PC)
步骤:内网穿透需要在服务端和客户端分别进行配置。首先分别下载frp并进行解压。
wget https://github.com/fatedier/frp/releases/download/v0.24.1/frp_0.24.1_linux_amd64.tar.gz
tar -zxvf frp_0.24.1_linux_amd64.tar.gz
下载包中通常包括了服务端和客户端的所有配置文件。
服务端可以删掉frpc命名的客户端文件,客户端也可以删除frps命名的服务端文件。
服务端
在服务器终端下载frps,解压后使用vim打开frps.ini,可以看到如下内容:
[common]
bind_port = 7000
vhost_http_port = 8080
[common]
部分是必须有的配置,其中bind_port
是自己设定的frp服务端端口,vhost_http_port
是自己设定的http访问端口。
保存配置后,使用以下代码启动frp服务端
./frps -c ./frps.ini
服务器端的frp就已经成功启动了,如果希望自启动且保持后台运行,可以使用systemctl开控制启动。在服务器终端执行
sudo vim /lib/systemd/system/frps.service
在frps.service里写入以下内容
[Unit]
Description=fraps service
After=network.target syslog.target
Wants=network.target
[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/your/path/frps -c /your/path/frps.ini
[Install]
WantedBy=multi-user.target
启动frps,并打开自启动
sudo systemctl start frps
sudo systemctl enable frps
客户端
在客户端(以PO为例),下载并解压frp。使用Notepad打开frpc.ini,进行客户端配置。
[common]
server_addr = 120.56.37.48 #公网服务器ip
server_port = 7000 #与服务端bind_port一致
#公网通过ssh访问内部服务器
[ssh]
type = tcp #连接协议
local_ip = 192.168.3.48 #内网服务器ip
local_port = 22 #ssh默认端口号
remote_port = 6000 #自定义的访问内部ssh端口号
[common]
中的server_addr
填frp服务端的ip,server_port
填frp服务端的bind_prot
。[ssh]
中的local_port
填ssh端口。
保存配置,在frpc路径进入cmd,运行frpc
./frpc -c ./frpc.ini
客户端自启动方式——使用nssm服务
- 下载NSSM服务。NSSM是一个服务封装程序,它可以将普通exe程序封装成服务,使之像windows服务一样运行。
- 将下载的nssm.exe文件放入frpc同目录
- 在frpc路径下进入cmd,输入nssm
installApplication Path:
选择frpc.exeArguments:
填入-c frpc.iniService name:
服务的名称
4. 打开任务管理器,启动frpc
5. 重启后仍然运行