frp 是一个高性能的内网穿透的反向代理软件,支持 TCP、UDP、HTTP、HTTPS 等常见协议(TCP最常用),可以将处于局域网或者家用电脑主机、办公电脑主机通过中转服务器的方式暴露在公网里,使用户可以通过访问公网的IP(域名)的方式获取内网里的信息,对于开发者来说,frp帮助我们调试接口(微信公众号或其他拥有IP白名单的接口),frp帮助我们取流内网的摄像头,访问内网数据库资源等
下载frp地址
https://github.com/fatedier/frp
https://github.com/fatedier/frp/releases
在centos下安装frp内网穿透代理
frp服务端和客户端都是使用的同一套,因此我们可以将之解压并改名
服务端:frp_server
客户端:frp_client
在这里我服务端和客户端都是使用的一台服务器安装的(可以分2台服务器主机,或者一台centos服务器主机和一台本地的linux(centos)电脑主机)
[root@myw ~]# cd /home
[root@myw home]# tar -zxvf frp_0.33.0_linux_amd64.tar.gz
frp_0.33.0_linux_amd64/
frp_0.33.0_linux_amd64/frps_full.ini
frp_0.33.0_linux_amd64/frps.ini
frp_0.33.0_linux_amd64/frpc
frp_0.33.0_linux_amd64/frpc_full.ini
frp_0.33.0_linux_amd64/frps
frp_0.33.0_linux_amd64/LICENSE
frp_0.33.0_linux_amd64/frpc.ini
frp_0.33.0_linux_amd64/systemd/
frp_0.33.0_linux_amd64/systemd/frpc@.service
frp_0.33.0_linux_amd64/systemd/frpc.service
frp_0.33.0_linux_amd64/systemd/frps.service
frp_0.33.0_linux_amd64/systemd/frps@.service
[root@myw home]# ls
frp_0.33.0_linux_amd64 frp_0.33.0_linux_amd64.tar.gz tomcat7
[root@myw home]# mv frp_0.33.0_linux_amd64 frp_server
[root@myw home]# tar -zxvf frp_0.33.0_linux_amd64.tar.gz
frp_0.33.0_linux_amd64/
frp_0.33.0_linux_amd64/frps_full.ini
frp_0.33.0_linux_amd64/frps.ini
frp_0.33.0_linux_amd64/frpc
frp_0.33.0_linux_amd64/frpc_full.ini
frp_0.33.0_linux_amd64/frps
frp_0.33.0_linux_amd64/LICENSE
frp_0.33.0_linux_amd64/frpc.ini
frp_0.33.0_linux_amd64/systemd/
frp_0.33.0_linux_amd64/systemd/frpc@.service
frp_0.33.0_linux_amd64/systemd/frpc.service
frp_0.33.0_linux_amd64/systemd/frps.service
frp_0.33.0_linux_amd64/systemd/frps@.service
[root@myw home]# mv frp_0.33.0_linux_amd64 frp_client
[root@myw home]# ls
frp_0.33.0_linux_amd64.tar.gz frp_client frp_server tomcat7
[root@myw home]#
frps.ini 这个s指的是server 服务端
frpc.ini这个c指的是client 客户端
centos下启动服务端
进入/home/frp_server里面找到frps.ini文件,修改原有文件内容,我的配置如下
bind_port = 36542 #绑定的端口,需要与客户端中 server_port 参数保持一致
vhost_http_port = 36543 #虚拟主机运行在本机的端口
dashboard_port = 36544 #后台web服务页面的端口
dashboard_user = mywadmin #后台服务页面的管理员用户名
dashboard_pwd = mywadmin #后台服务页面的管理员密码
privilege_token = myyhtw147258 #自定义token 必须与客户端中的 privilege_token 保持一致
[common]
bind_port = 36542
vhost_http_port = 36543
dashboard_port = 36544
dashboard_user = mywadmin
dashboard_pwd = mywadmin
privilege_token = myyhtw147258
配置文件里不能有注释,不然可能无法启动(很奇怪遇到的)
启动的指令
./frps -c ./frps.ini
[root@myw home]# cd /home/frp_server
[root@myw frp_server]# ls
frpc frpc_full.ini frpc.ini frps frps_full.ini frps.ini LICENSE systemd
[root@myw frp_server]# chmod u+x frps
[root@myw frp_server]# ./frps -c ./frps.ini
2023/02/05 12:12:29 [I] [service.go:178] frps tcp listen on 0.0.0.0:36542
2023/02/05 12:12:29 [I] [service.go:220] http service listen on 0.0.0.0:36543
2023/02/05 12:12:29 [I] [service.go:277] Dashboard listen on 0.0.0.0:36544
2023/02/05 12:12:29 [I] [root.go:209] start frps success
这样的启动关闭窗口可能就关闭了,如此需要写一个脚本frp_server.sh 放在frp_server目录下
#!/bin/sh
nohup ./frps -c ./frps.ini &
[root@myw frp_server]# ls
frpc frpc_full.ini frpc.ini frps frp_server.sh frps_full.ini frps.ini LICENSE systemd
[root@myw frp_server]# chmod u+x frp_server.sh
[root@myw frp_server]# ./frp_server.sh
[root@myw frp_server]# nohup: appending output to ?.ohup.out?
^C
[root@myw frp_server]# netstat -lnp|grep frp
tcp6 0 0 :::36542 :::* LISTEN 1820/./frps
tcp6 0 0 :::36543 :::* LISTEN 1820/./frps
tcp6 0 0 :::36544 :::* LISTEN 1820/./frps
[root@myw frp_server]# ps aux | grep frp
root 1820 0.0 0.5 716052 22120 pts/0 Sl 12:18 0:00 ./frps -c ./frps.ini
root 1914 0.0 0.0 112808 964 pts/0 S+ 12:31 0:00 grep --color=auto frp
在frp_server/systemd里有service,找到frps.service打开并修改当前的路径配置
将配置好的frps.service文件放入/etc/systemd/system/里面后刷新加载
[Unit]
Description=Frp Server Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/home/frp_server/frps -c /home/frp_server/frps.ini
[Install]
WantedBy=multi-user.target
[root@myw frp_server]# systemctl daemon-reload
[root@myw frp_server]# systemctl start frps.service
[root@myw frp_server]# netstat -lnp|grep frp
tcp6 0 0 :::36542 :::* LISTEN 2025/frps
tcp6 0 0 :::36543 :::* LISTEN 2025/frps
tcp6 0 0 :::36544 :::* LISTEN 2025/frps
[root@myw frp_server]# systemctl restart frps.service
[root@myw frp_server]# netstat -lnp|grep frp
tcp6 0 0 :::36542 :::* LISTEN 2045/frps
tcp6 0 0 :::36543 :::* LISTEN 2045/frps
tcp6 0 0 :::36544 :::* LISTEN 2045/frps
[root@myw frp_server]# systemctl stop frps.service
[root@myw frp_server]# netstat -lnp|grep frp
[root@myw frp_server]#
[root@myw frp_server]# systemctl enable frps.service
Created symlink from /etc/systemd/system/multi-user.target.wants/frps.service to /usr/lib/systemd/system/frps.service.
[root@myw frp_server]#
刷新:systemctl daemon-reload
启动:systemctl start frps.service
重启:systemctl restart frps.service
停止:systemctl stop frps.service
开机启动:systemctl enable frps.service
取消开机启动:systemctl disable frps.service
centos下启动客户端
进入/home/frp_client里面找到frpc.ini文件,修改原有文件内容,我的配置如下
server_addr = 127.0.0.1 服务端的IP地址
server_port = 36542 # 客户端的连接服务端的端口
privilege_token = myyhtw147258 # 服务端token 保持一致
type = tcp # 使用协议类型tcp
local_ip = 127.0.0.1 # 客户端的本地ip
local_port = 8081 # 客户端的本地端口
remote_port = 8082 # 内网穿透代理端 也就是用户访问frp服务端的端口
[common]
server_addr = 127.0.0.1
server_port = 36542
privilege_token = myyhtw147258
[tomcat7]
type = tcp
local_ip = 127.0.0.1
local_port = 8081
remote_port = 8082
我这里8081端口是tomcat服务器,按理来说后续只需要访问8082端口就能访问到tomcat7
启动的指令
./frpc -c ./frpc.ini
如果权限不够
chmod u+x frpc
写一个脚本frp_client.sh 放在frp_client目录下
#!/bin/sh
nohup ./frpc -c ./frpc.ini &
[root@myw /]# cd /home/frp_client
[root@myw frp_client]# ls
frpc frpc_full.ini frpc.ini frp_client.sh frps frps_full.ini frps.ini LICENSE systemd
[root@myw frp_client]# chmod u+x frp_client.sh
[root@myw frp_client]# ./frp_client.sh
[root@myw frp_client]# nohup: appending output to ?.ohup.out?
^C
[root@myw frp_client]# ps aux | grep frp
nobody 2180 0.0 0.5 716052 22452 ? Ssl 12:58 0:00 /home/frp_server/frps -c /home/frp_server/frps.ini
root 2251 0.0 0.2 712224 9644 pts/1 Sl 13:06 0:00 ./frpc -c ./frpc.ini
root 2257 0.0 0.0 112808 964 pts/1 S+ 13:06 0:00 grep --color=auto frp
[root@myw frp_client]#
在frp_client/systemd里有service,找到frpc.service打开并修改当前的路径配置
将配置好的frpc.service文件放入/etc/systemd/system/里面后刷新加载
[Unit]
Description=Frp Client Service
After=network.target
[Service]
Type=simple
User=nobody
Restart=on-failure
RestartSec=5s
ExecStart=/home/frp_client/frpc -c /home/frp_client/frpc.ini
ExecReload=/home/frp_client/frpc reload -c /home/frp_client/frpc.ini
[Install]
WantedBy=multi-user.target
[root@myw ~]# cd /home/frp_client
[root@myw frp_client]# systemctl daemon-reload
[root@myw frp_client]# systemctl start frpc.service
[root@myw frp_client]# systemctl enable frpc.service
Created symlink from /etc/systemd/system/multi-user.target.wants/frpc.service to /usr/lib/systemd/system/frpc.service.
[root@myw frp_client]# ps aux | grep frp
nobody 743 0.0 0.5 716052 22380 ? Ssl 13:14 0:00 /home/frp_server/frps -c /home/frp_server/frps.ini
nobody 1604 0.0 0.2 713376 9896 ? Ssl 13:16 0:00 /home/frp_client/frpc -c /home/frp_client/frpc.ini
root 1640 0.0 0.0 112812 964 pts/0 S+ 13:17 0:00 grep --color=auto frp
[root@myw frp_client]#
可以看到服务端和客户端都已启动的
刷新:systemctl daemon-reload
启动:systemctl start frpc.service
重启:systemctl restart frpc.service
停止:systemctl stop frpc.service
开机启动:systemctl enable frpc.service
取消开机启动:systemctl disable frpc.service
2.在windows下安装frp内网穿透代理
同样的在windows下使用frp部署frp_server和frp_client 配置文件信息除了IP根据具体外,其他的完全一致
启动2个服务(win系统的杀毒软件很烦人的,会把他认为是木马病毒)
mywadmin mywadmin
可以看到客户端内网穿透已经部署成功
访问(客户端主机)
http://127.0.0.1:8081
访问(服务端主机)
http://127.0.0.1:8082
在此处,都是一样的(因为在同一台电脑上部署的)