¶一、frp的作用
frp的作用就是实现内网穿透,内网穿透就是允许内网的主机能够被外网的其他主机访问,内网穿透是反向代理技术中的一个中间环节技术。对于反向代理的更多理解可见另外一文《关于代理技术的理解》。
-
利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。说罢,也就是给外网提供内网主机的http 或 https 服务。
-
此外,还能利用处于内网或防火墙后的机器,对外网环境提供 tcp 和 udp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。
此处的讲解包括:
- 外网访问内网http 或 https 服务
- 外网访问内网ssh服务
¶二、准备说明
¶实现功能
(1)自定义绑定域名访问内网web服务
¶配置前准备
(1)公网服务器1台
(2)内网服务器1台
(3)公网服务器绑定域名1个
(4)内网服务器部署一个web服务
(5)内网服务器部署安装了ssh服务(如只做web服务,可以省略此步)
¶三、服务端
¶安装配置
1 | #下载frp |
frps
、frps.ini
这个两个是服务端文件,frpc
、frpc.ini
这两个是客户端文件
配置服务端
1 | vi ./frps.ini |
按”i”键进行编辑,按esc
退出编辑状态,输入:wq
退出
¶防火墙配置
1 | #查看当前firewall防火墙服务是否开启 |
如果防护墙处于关闭状态的话无需进行以下端口号的开放步骤,否则继续。
如果7000端口和8080端口已经开放并且没有进程占用端口的话,则无需进行以下端口号的开放步骤,否则继续。
1 | firewall-cmd --permanent --add-port=7000/tcp #开启与客户端绑定的进行通信的端口 |
¶启动服务端
1 | #临时启动 |
¶四、客户端
¶安装配置
根据客户端操作系统的情况下载frp客户端
需要注意的是:客户端和服务端的版本号要一致。
frp服务端和客户端都是在一个包里,如果都是linux则下载相同版本的
frp_版本号_linux_amd64.tar.gz
即可,如果客户端是windows,那么下载frp_版本号_windows_amd64.zip
不同操作系统操作大同小异。下面以linux
为例,假设已经下载并解析好。
1 | vi ./frpc.ini #编辑frpc.ini配置文件 |
1 | [common] |
通过以下命令给服务器开放7001端口
1 | firewall-cmd --permanent --add-port=7001/tcp |
所绑定的公网服务器域名,一级、二级域名都可以,绑定多个域名时用英文“,”分开
¶启动客户端
1 | #临时启动 |
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
¶六、配置详解
¶服务端
1 | # 通用配置段 |
¶客户端
1 | # 通用配置段 |
¶七、参考
https://www.bookstack.cn/read/frp-0.36-zh/70fe76b44fdacf77.md