frp内网穿透的搭建与基本使用
frp内网穿透的搭建
需要准备的工具
- 一个可以供外网访问的主机,这里我使用的是阿里云购买的云服务器。
- 一个已经备案的域名。
- frp软件包,包括frp server和frp client。这里准备了github frp下载的传送门,下载自己所需要的版本。
编写frp server配置文件
frps.ini文件配置
[common]
# 绑定默认的机器端口,frp client注册frp server时,使用此端口,如果是使用的云服务器的话,需要开放此端口
bind_port = 7000
# http虚拟机的端口,http代理时,外网访问的主机端口
vhost_http_port=80
# frps的域名配置,最好以 *.任意三级域名.二级域名.根域名 进行命名,这样可以灵活方便的配置。列入:*.frp.xxx.com
subdomain_host=配置解析好的域名
# frp server的一个看板,可以查看frp client的一些连接信息,需要开放该端口
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = xxxxxxxxx
# frp cleint连接frp server时所需要的token,只有token一致,才可以注册成功,提高frp的安全性
token = *PD7!Qz8f66tf!RG
然后在frp目录下执行以下命令,启动frp server:
./frps -c frps.ini
注:frps.ini文件中配置的域名,需要配置域名解析
编写frp client配置文件
frpc.ini文件配置
[common]
# frp server的地址
server_addr = 47.94.247.230
# frp server的bind_port
server_port = 7000
# 与frp server的连接token,如果没有配置,可以忽略
token = *PD7!Qz8f66tf!RG
# frp client的名字,相当于是唯一的id,不可重复
[web]
# frp client 要代理的类型
type = http
# 设置要代理的本地或局域网内的ip
local_ip = 127.0.0.1
# 代理本地服务的端口
local_port = 8300
# 访问代理服务的域名,根据frp server的subdomain_host属性来配置,配置成功后,就可以通过该域名进行访问你要穿透的服务
custom_domains = web.frp.xxx.com
# 配置可以通过ssh连接到内网的主机,如果需要的话,可以做此配置
[ssh]
# 特权模式,默认需要设置为true
privilege_mode = true
# 代理的类型为tcp
type = tcp
# 设置要代理的本地或局域网内的ip
local_ip = 127.0.0.1
# 设置ssh远程连接的本地端口,默认ssh都为22
local_port = 22
# 远程连接的端口,即使用ssh连接时需要通过此端口进行连接,注意:需要开启云服务器的该端口
remote_port = 5200
启动测试
配置完成后,执行以下命令进行frp client的启动:
./frpc -c frpc.ini
然后在frp client启动的log中看到start proxy success,则为成功,如果没有成功,需要检查以上配置步骤是否有误。
type为http类型的我们可以通过访问在frpc.ini文件中配置的custom_domains = web.frp.xxx.com域名进行测试,如果在浏览器或者以其它方式连通此域名则配置成功。
type为tcp的ssh,我们可以通过使用ssh连接进行测试:
ssh 穿透主机的用户名@云服务器的ip地址 -p 在frpc.ini中配置的端口
# 例如
ssh root@192.168.0.1 -p 5200
执行成功之后,需要输入穿透主机的用户登录密码,完成ssh连接
注:如果需要开启此配置,建议登录密码设置的难度高一些,或者禁止使用密码登录,而是采用秘钥的方式登录。这样可以在一定程度上保证主机的安全性,否则,这样将主机暴露在公网内,是极不安全的。
如果配置了frp server的dashboard,我们可以通过与服务器ip:配置dashboard端口的方式进行访问,如下图:
从中我们可以看到一些frp client连接的信息。