参考网络上其他人文章。将他人技术文章亲自测试并总结补充。
实现内网穿需要有一台公网服务器,域名。(本文将公网服务器称为服务端,内网服务器称为客户端)
(需要开启相关的端口。相关端口没开通,访问就会失败。)
frp下载地址:http://getfrp.yzxx-soft.com/
https://github.com/fatedier/frp
本文使用软件:frp_0.8.1_linux_amd64.tar.gz
本文使用系统:centos7(公网一台,内网一台),其他系统配置类似
本文使用a.com代替实际域名,10.10.10.10代替实际公网ip,实际中请使用自己的域名和ip并解析到服务端
主域名:a.com
公网服务器ip:10.10.10.10
内网服务器ip:192.168.198.229
centos7 frp安装和配置(其他系统配置类似)
将软件下载到服务器和客户端(服务端和客户端相同)
解压frp软件包
tar -zxvf frp_0.8.1_linux_amd64.tar.gz
进入解压后的文件夹
cd frp_0.8.1_linux_amd64
文件说明
frps.ini: 服务端配置文件
frps: 服务端软件
frpc.ini: 客户端配置文件
frpc: 客户端软件
2、修改服务端配置
修改服务端frps.ini
vi frps.ini
修改如下内容(由于本文为测试,所以将原配置文件清空),或对照如下修改。
[common] bind_port = 7000 vhost_http_port = 80 [ssh] listen_port = 6000 auth_token = 123 [web] type = http custom_domains = test1.a.com auth_token = 123 [web2] type = http custom_domains = test2.a.com auth_token = 123
开启服务端服务(在frp_0.8.1_linux_amd64目录下)
./frps -c ./frps.ini
配置说明
[common] 必须设置 bind_port 是自己设定的frp服务端端口 vhost_http_port 是自己设定的http访问端口 [ssh] ssh反向代理(不是必须设置) listen_port 是自己设定的ssh访问端口 auth_token用于身份认证(以下皆是)。 [web] http反向代理[]里的内容可以自己设定,但是客户端和服务端必须要对应(如[aaa],[bbb]); type 为服务类型,可以设为http,https custom_domains为要映射的域名,记得域名的A记录要解析到外网主机的IP。 [web2]同上(可设置多个)
3、修改客户端配置(win系统找到相应配置文件进行类似配置)
修改服务端frpc.ini
vi frpc.ini
修改如下内容(由于本文为测试,所以将原配置文件清空),或对照如下修改。
[common] server_addr = 10.10.10.10 server_port = 7000 auth_token = 123 [ssh] local_port = 22 [web] type = http local_port = 80 [web2] type = http local_port = 8080
开启客户端服务(在frp_0.8.1_linux_amd64目录下)
./frpc -c ./frpc.ini
配置说明
[common]必填 server_addrfrp服务端的ip(也就是外网主机的IP) server_portfrp服务端的bind_prot。 [ssh] local_port客户端ssh端口。 [web] type对应服务端配置 local_port客户端访问端口。 [web2]同上
测试(本文中客户端已经装了Nginx服务)
http测试
访问内网http://192.168.198.229
3.win系统也可通过tcp远程桌面连接,只需要把客户端端口改成win远程默认端口:3389。
后台启动(使用nohup,以服务端为例子,客户端类似)
启动(进入frp目录)
nohup ./frps -c ./frps.ini & #启动服务端 带&符号
启动后会返回相关的pid
关闭
kill 19619 #输入你系统中返回的pid kill -9 $(pidof frps) #或者使用这个命令关闭,$(pidof frps)中frps为进程名称客户端为frpc
查看状态
netstat -antpl #看到7000端口说明后台启动成功(配置文件中配置的frp服务端口)