frp介绍
frp是一个可用于内网穿透的高性能的反向代理应用,支持tcp、udp、http、https协议。
Github地址:https://github.com/fatedier/frp
如上图所示,内网主机由于没有外网IP,所以外网用户A是无法直接访问内网的主机的。这时候就需要借助外网主机部署frp服务端frps,并且在内网主机上部署frp客户端frpc,在外网主机与内网主机之间搭建一个桥梁,来实现外网用户访问内网主机的情况。
frp服务端配置
frp服务端也就是上图中的“外网主机”,这里我以外网主机是CentOS 7.3系统为例进行说明。
首先下载frp程序并解压至 /usr/local/frp
目录
编辑frps.ini
文件
vi /usr/local/frp/frps.ini
写入以下内容,保存退出
[common]
bind_port = 7000 #这是frps服务绑定的端口
接下来创建frps服务启动文件
vi /usr/lib/systemd/system/frps.service
写入以下内容,保存退出
[Unit]
Description=frp 内网映射应用外网端服务(frps)
After=network.target
[Service]
Type=simple
User=nobody
Restart=always
RestartSec=5s
StartLimitInterval=0
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
更新系统服务
systemctl daemon-reload
启动frps服务
systemctl start frps
设置frps服务开机启动
systemctl enable frps
frp客户端配置
frp客户端也就是上图中的“内网主机”,这里我以内网主机是CentOS 7.3系统为例进行说明。
基本步骤跟frp服务端的配置方式一致,只是frp客户端需要编辑的文件是frpc.ini
我们还是把frp程序下载并解压至 /usr/local/frp
目录
vi /usr/local/frp/frpc.ini
写入以下内容,保存退出
[common]
server_addr = 0.0.0.0 #这里填外网主机(frps所在主机)的IP地址
server_port = 7000 #这里填frps绑定的端口
#若需要远程登录内网主机,可以配置如下的tcp协议
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22 #内网ssh的端口
remote_port = 6000 #外网通过该端口访问内网主机的ssh端口
#若需要通过外网访问内网主机,可以配置如下的http协议
[web]
type = http
local_port = 8000
更多协议的配置,请参见frp的Github地址。
接下来创建frpc服务启动文件
vi /usr/lib/systemd/system/frpc.service
写入以下内容,保存退出
[Unit]
Description=frp 内网映射应用内网端服务(frpc)
After=network.target
[Service]
Type=simple
User=nobody
Restart=always
RestartSec=5s
StartLimitInterval=0
ExecStart=/usr/local/frp/frpc -c /usr/local/frp/frp/frpc.ini
ExecReload=/usr/local/frp/frpc reload -c /usr/local/frp/frpc.ini
LimitNOFILE=1048576
[Install]
WantedBy=multi-user.target
更新系统服务
systemctl daemon-reload
启动frps服务
systemctl start frpc
设置frpc服务开机启动
systemctl enable frpc
frps和frpc均正确启动后,就打通了外网主机跟内网主机。这时候外网的用户就可以通过外网主机(frps)来访问内网主机(frpc)了。
文章作者:DOTATONG
发布日期:2017-11-07