首先,此frp穿透用于通过http通过ssh或http方式由公网访问内网。其次内网穿透需要公网服务器、内网服务器各一台,基于linux系统。

安装步骤:

1、下载所需要的frp,地址https://github.com/fatedier/frp/releases,我本次下载的是这个

ngwork centos 内网穿透 内网穿透linux_端口号

,下载之后解压到本地,注意frpc、frpc.ini和frps、frps.ini这四个文件,前两个是客户端的,对应文中的内网服务器,后两个是服务端的,对应公网。我们的主要操作是在公网和内网服务器中适当的位置建frp文件夹,然后把这四个文件先配置在分类放入即可。

2、建议在本地用notepad++等配置好后再放入frp文件夹。服务端需要修改的文件有frps.ini,如下

(由于两台服务器其中一台时间不对导致时间差距过大会产生认证超时错误authentication timeout ,解决方式在下面添加

authentication_timeout = 0

即可)

[common]
bind_port = 7000           #与客户端绑定的进行通信的端口
vhost_http_port = 9989     #访问客户端web服务自定义的端口号,也就是最终用公网ip访问时的端口号

文件放入之后启动服务./frps -c ./frps.ini(有权限相关报错时把文件逐个改为777)

3、客户端配置,frpc.ini 

(除非同时需要这几种方式,否则需要哪种写那种即可,如需要http映射,只写[common]和[web]即可)

(2020-8-31,发生了带注释报错了情况,无脑去掉注释)

[common]
server_addr = xxx.xx.xx.xx   #公网服务器ip
server_port = 7000            #与服务端bind_port一致
 
#公网通过ssh访问内部服务器
[ssh]
type = tcp              #连接协议
local_ip = 192.168.x.xxx #内网服务器ip
local_port = 22         #ssh默认端口号
remote_port = 6000      #自定义的访问内部ssh端口号
 
#公网访问内部web服务器以http方式
[web]
type = http         #访问协议
local_port = 8989   #内网web服务的端口号,也就是我们想展示的页面的端口号
custom_domains = a.com   #域名,没有的话写公网ip也可以

#公网访问内部数据库,通过公网服务器ip的1006端口访问内网3306端口的数据库
[mysql]
type = tcp
local_ip = 192.168.x.xxx   #内网机器ip地址
local_port = 3306 # 内网机器mysql端口
remote_port = 1006 # 通过公网访问的mysql端口

文件放入之后启动服务./frpc -c ./frpc.ini(有权限相关报错时把文件逐个改为777)

4、具体访问。

ssh方式为ip为公网ip/域名,端口号是文中的22或6000。

http方式为公网ip/域名:9989

mysql连接  主机为公网ip,端口号为自定端口号(文中为1006),用户名和密码与本地相同

5、自启动

首先本地建frps.service、frpc.service,frps.service如下,

[Unit]
Description=frps service
After=network.target network-online.target syslog.target
Wants=network.target network-online.target

[Service]
Type=simple

#此处写你的frps的实际安装目录
ExecStart=/your/path/frps -c /your/path/frps.ini

[Install]
WantedBy=multi-user.target

放入/lib/systemd/system/frps.service

然后启动frps

sudo systemctl start frps

再打开自启动

sudo systemctl enable frps

系统会提示以Created symlink开头的一句话

frpc.service同理

还可以直接用nohup后台启动

nohup ./frps -c ./frps.ini
nohup ./frpc -c ./frpc.ini