¶一、frp的作用
frp的作用就是实现内网穿透,内网穿透就是允许内网的主机能够被外网的其他主机访问,内网穿透是反向代理技术中的一个中间环节技术。对于反向代理的更多理解可见另外一文《关于代理技术的理解》。
-
利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。说罢,也就是给外网提供内网主机的http 或 https 服务。
-
此外,还能利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
此处的讲解包括:
- 外网访问内网http 或 https 服务
- 外网访问内网ssh服务
¶二、配置说明
¶1、实现功能
(1)自定义绑定域名访问内网web服务
¶2、配置前准备
(1)公网服务器1台
(2)内网服务器1台
(3)公网服务器绑定域名1个
(4)内网服务器部署一个web服务
(5)内网服务器部署安装了ssh服务(如只做web服务,可以省略此步)
¶三、安装frp
¶1.通过以下命令下载frp
1 | wget https://github.com/fatedier/frp/releases/download/v0.16.1/frp_0.16.1_linux_amd64.tar.gz |
¶2.解压文件
1 | tar -zxvf frp_0.16.1_linux_amd64.tar.gz |
¶3.进入解压目录
1 | cd frp_0.16.1_linux_amd64 |
frps
、frps.ini
这个两个是服务端文件,frpc
、frpc.ini
这两个是客户端文件
¶4.配置服务端
1 | vi ./frps.ini |
按”i”键进行编辑,按esc
退出编辑状态,输入:wq
退出
¶四、公网服务器开启端口
1 | firewall-cmd --state #查看当前firewall防火墙服务是否开启 |
如果防护墙处于关闭状态的话无需进行以下端口号的开放步骤,否则继续。
1 | firewall-cmd --list-all #查看当前firewall服务所有端口开放情况 |
如果7000端口和8080端口已经开放并且没有进程占用端口的话,则无需进行以下端口号的开放步骤,否则继续。
1 | firewall-cmd --permanent --add-port=7000/tcp #开启与客户端绑定的进行通信的端口 |
1 | firewall-cmd --permanent --add-port=8080/tcp #开启访问客户端web服务自定义的端口号 |
1 | firewall-cmd --reload #重启防火墙(修改配置后要重启防火墙) |
¶五、启动服务端
临时启动
1 | ./frps -c ./frps.ini |
后台保持启动
1 | nohup ./frps -c ./frps.ini & |
¶六、配置客户端
根据客户端操作系统的情况下载frp客户端
需要注意的是:客户端和服务端的版本号要一致
不同操作系统操作大同小异。以linux
为例:
1 | vi ./frpc.ini #编辑frpc.ini配置文件 |
1 | [common] |
通过以下命令给服务器开放7001端口
1 | firewall-cmd --permanent --add-port=7001/tcp |
所绑定的公网服务器域名,一级、二级域名都可以,绑定多个域名时用英文“,”分开
¶六、启动客户端(内网端)
临时启动
1 | ./frpc -c ./frpc.ini |
后台保持启动
1 | nohup ./frpc -c ./frpc.ini & |
Windows操作系统完成以上类似配置后直接双击运行frpc.exe即可。
如果需要通过ssh访问内网端,则内网端主机还要安装ssh服务,这里的ssh以ubuntu为例:
-
SSH服务端安装
(1) ubuntu关闭防火墙
sudo ufw disable
或者放行ssh默认的22端口(关闭防火墙不同linux发行版可能不同)(2)查看是否安装
ssh
,ls /etc/ssh/
(3)安装
openssh-server
:sudo apt-get install openssh-server
(4)还没结束,执行
sudo vim /etc/ssh/sshd_config
编辑sshd_config
配置文件,找到PermitRootLogin
并将其值修改为yes
(5)执行
/etc/init.d/ssh restart
重启ssh服务以生效
¶七、测试http和ssh
-
http:
浏览器打开访问
http://域名:8080/资源路径
,如:http://qcmoke.top:8080/myproject/index.html
-
ssh:
1
2
3
4
5ssh [-p port] user@remote #ssh远程连接服务器
如:
ssh -p 7001 root@144.34.145.10
或者
ssh -p 7001 root@qcmoke.top