内网穿透,Frp服务端和客户端设置教程
前置条件
(必须)想要使用frp服务,将内网中的服务发布到公网。你需要先拥有一台拥有公网ip的主机用于搭建frp服务端,再在内网需要穿透的主机中搭建frp客户端服务才能进行穿透;
(非必需)你需要拥有一个域名解析到公网的ip地址,才能够实现web服务的通过域名进行路由转发的功能。
Frp搭建步骤说明
搭建frp很简单,关键的步骤只有三步:
1、获取frp文件
2、设置frp配置文件
3、启动frp服务。
第一步:获取frp文件
frp支持linux平台和windows平台。按照你主机系统的操作操作系统下载相应的linux版本或者是windows版本文件。官方下载地址:https://github.com/fatedier/frp/releases
一般linux平台下载的版本为:frp_版本号_linux_amd64.tar.gz,windows平台下载的版本为:frp_版本号_windows_amd64.zip。
linux版本文件的解压命令为tar -zxvf 文件名; windows版本文件直接右键解压即可。
第二步:frp配置文件设置
frps.ini(服务端)配置文件解释说明
[common]
# 服务端控制面板访问账号和密码,不设置则默认admin
#注意以及几个是我随便填写的,请根据自己的实际情况,自行修改。
dashboard_user = user
dashboard_pwd = password
# 客户端连接令牌
token = access_token
# 路由地址
subdomain_host = frp.x.com
###########下列配置默认即可,无需改动###############
#穿透监听端口与地址(0.0.0.0表示允许任何地址)
bind_addr = 0.0.0.0
bind_port = 7000
# udp协议监听端口
bind_udp_port = 7001
#udp协议支持kcp模式。kcp的运行端口,不设置表示禁用。可以与'bind_port'端口一致
kcp_bind_port = 7000
#虚拟主机穿透监听端口(指http与https的访问端口)
vhost_http_port = 80
vhost_https_port = 443
#服务端控制面板访问端口
dashboard_addr = 0.0.0.0
dashboard_port = 7500
# frp日志记录路径
log_file = ./frps.log
# 日志记录级别(trace, debug, info, warn, error)
log_level = info
# 日志记录滚动天数
log_max_days = 3
# 客户端与服务端连接心跳检测
heartbeat_timeout = 90
# 允许客户端使用的穿透端口,不设置则全部允许
#allow_ports = 1000-100000
# 穿透服务允许的连接数
max_pool_count = 5
# 单个客户端允许建立的穿透服务,0为不限制
max_ports_per_client = 0
# 连接超时
authentication_timeout = 900
# tcp流多路复用(可以理解为优化传输)
tcp_mux = true
frpc.ini(客户端)配置文件解释说明
#该配置文件,我做了相关的删减,只保留了我们最常用到的几个穿透功能。
#[common为公共配置区域必须存在]
[common]
# 与服务端连接令牌
privilege_token = access_token
# 客户端标识
user = nas
#服务端的访问地址(可用ip或者域名)。
server_addr = 111.222.222.111
####################此处为common的默认配置区域无需修改###################
#服务端用于穿透的端口,与服务端保持一致。
server_port = 7000
# 日志记录路径
log_file = ./frpc.log
# 日志记录级别(trace, debug, info, warn, error)
log_level = info
# 日志记录滚动天数
log_max_days = 3
# frpc客户端管理界面
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_passwd = admin
# 连接池
pool_count = 5
# tcp数据流多路复用,默认开启,服务端客户端需要保持一致
tcp_mux = true
# 失败重连
login_fail_exit = true
# 服务端与客户端通信协议,支持tcp\upd
protocol = tcp
# dns服务选用
# dns_server = 8.8.8.8
#客户端向服务端心跳检查间隔与超时时间
heartbeat_interval = 10
heartbeat_timeout = 90
##############以上为客户端服务的公共信息配置区域############
###############具体的穿透服务功能启用(表示你要使用frp的那个功能)##############
###################下方列举的三个功能模块,按照自己需求选择。例如需要使用tcp穿透,选择第一个即可。下面两个可以忽略##########
[ssh]
#穿透类型
type = tcp
#需穿透服务本地访问地址
local_ip = 127.0.0.1
#需穿透服务本地访问端口
local_port = 22
#是否使用通讯加密,默认false
use_encryption = false
#是否使用通讯压缩,默认false
use_compression = false
#穿透后外网访问端口。
remote_port = 6001
#http或者https模式主要针对于虚拟主机,访问的取决于frps.ini文件中的vhost_http_port设置
[web_http]
type = http
local_ip = 127.0.0.1
local_port = 80
use_encryption = false
use_compression = true
#虚拟主机访问账户密码设置,如果不设置的话。自己通过地址即可访问。
http_user = admin
http_pwd = admin
#如果你的frps域名是xyzbeta.com,那么你可以通过xzybeta.xyzbeta.com 来访问web_http这个穿透服务。
subdomain = xyzbeta
#自己定义域名
custom_domains = xyzbeta.com
# locations is only available for http type
locations = /,/pic
# http重定向地址
host_header_rewrite = example.com
# http请求文件头
header_X-From-Where = frp
[web_https]
type = https
local_ip = 127.0.0.1
local_port = 8000
use_encryption = false
use_compression = false
subdomain = xyzbeta
custom_domains = xyzbeta.xyzbeta.com
第三步:启动服务
linux环境下启动服务,需要先把运行文件添加可执行权限。例如我的文件是在root文件夹中,我需要搭建frp服务端,那么待设置好服务端配置文件(frps.ini)后执行以下命令即可。
cd /root chmod +x frps nuhup ./frps -c ./frps.ini & #执行成功后,会显示frp的进程号。你也可以通过命令来查看frps运行的进程编号。 ps -e | grep frps
#在windows环境下则是以管理员身份运行cmd命令提示符。进入相应的目录后,运行命令即可。 frps -c frps.ini &
关于frp管理的优化设置
debian8.0,或者是centos7.0以上的版本,服务都是基于systemd的方式进行管理的。frp通过设置后也可以实现systemd的方式进行管理,这样我们就可以通过systemctl命令来进行服务的统一管理,同时通过这样的设置也可以将frp服务加入开机自启动。
1、将frp设置成linux系统的服务,基于systemd方式管理# 编写 frp service 文件,以 centos7 为例:
vim /usr/lib/systemd/system/frps.service
# 内容如下
[Unit]
Description=frps daemon
After=syslog.target network.target
Wants=network.target
[Service]
Type=simple
#此处的路劲地址根据自己的实际放置的地址进行修改
ExecStart=/root/frp/frps -c /root/frp/frps.ini
Restart=always
RestartSec=1min
[Install]
WantedBy=multi-user.target
2、将frp设置成开机自启动
systemctl enable frps.service #开机自动启动服务
systemctl disable xxx.service #取消开机自启动服务
systemctl start frps.service #启动服务
systemctl status frps.service #查看服务当前状态
systemctl stop frps.service #停止服务
systemctl restart frps.service #重启服务
以上就是关于frp内网穿透的基本教程了,搭建可以尝试照着教程搭建一下,如果还有不懂的地方欢迎加入维简网交流群进行交流。
本文系作者 @Mr.Lee 原创发布在 维简网。未经许可,禁止转载。