frp内网穿透

frp是什么

frp是一个专注于内网穿透的高性能的反向代理应用,支持TCP、UDP、HTTP、HTTPS等多种协议。可以将内网服务以安全、便捷的方式通过具有公网IP节点的中转暴露到公网。

原理

frp主要由客户端(frpc)和服务端(frps)组成,服务端通常部署在具有公网ip的机器上,客户端通常部署在需要穿透的内网服务所在的机器上。

官方文档地址

官方文档地址

下载

客户端和服务端的所有文件被打包在一个压缩包中
https://github.com/fatedier/frp/releases

部署

解压缩下载的压缩包,将其中的frpc拷贝在内网服务所在的机器上,将frps拷贝到具有公网IP的机器上,放置在任意目录。

开始使用

1.编写配置文件(如下示例)
2.服务端启动:

./frps -c ./frps.ini

3.客户端启动

./frpc -c ./frpc.ini

示例

示例一:通过SSH访问内网机器

1.在具有公网IP的机器上部署frps,修改frps.ini文件:

[common]
bind_port = 7000

2.在需要被访问的内网机器上(SSH服务通常监听在22端口)部署frpc,修改frpc.ini文件,假设frps所在服务器的公网IP为x.x.x.x:

[common]
server_addr = x.x.x.x
server_port = 7000

[ssh(任意名称)]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

3.分别启动frps和frpc。
4.通过SSH访问内网机器:

  • 内网SSH访问:
内网IP:22
  • 内网穿透SSH访问:
公网IP:6000

示例二:mysql服务内网穿透

[mysql(任意名称)]
type = tcp
local_ip = 127.0.0.1
local_port = 3306
remote_port = 6009
  • 内网SSH访问:
内网IP:3306
  • 内网穿透SSH访问:
公网IP:6009

示例三:通过自定义域名访问内网的Web服务

0.域名解析配置为 * ,表示二级域名 test.yourdomain.com ,test2.yourdomain.com 等都能解析到对应的公网服务器ip

1.在具有公网IP的机器上部署frps,修改frps.ini文件:

[common]
bind_port = 7000
vhost_http_port = 8281

2.在需要被访问的内网机器上部署frpc,修改frpc.ini文件,假设frps所在服务器的公网IP为x.x.x.x:

[common]
server_addr = x.x.x.x
server_port = 7000

[websockect(任意名称)]
type = http
local_port = 8689
custom_domains = test.yourdomain.com

3.分别启动frps和frpc。
4.访问:

  • 内网访问:
内网IP:8689
  • 内网穿透访问:
# 二级域名:vhost_http_port 
http://test.yourdomain.com:8281

示例四:为本地HTTP服务启用HTTPS

1.修改frps.ini文件:

[common]
bind_port = 7000

2.frpc.ini内容如下:

[common]
server_port = 7000

[htts2http]
type = https
custom_domains = xm.app.dingcloud.com.cn
plugin = https2http
plugin_local_addr = 127.0.0.1:3000
# HTTPS 证书相关的配置
plugin_crt_path = ./server.pem
plugin_key_path = ./server.key
plugin_host_header_rewrite = 127.0.0.1
plugin_header_X-From-Where = frp


3.分别启动frps和frpc。
4.访问:

  • 内网访问:
http://127.0.0.1:3000
  • 内网穿透访问:
# 二级域名:vhost_http_port 
https://xm.app.dingcloud.com.cn

systemd开机自启

  1. 编写frpc.service,放入路径:/usr/lib/systemd/system/frpc.service
[Unit]
Description=frpc service
After=network.target syslog.target
Wants=network.target

[Service]
Type=simple
#启动服务的命令(frpc的实际安装目录)
ExecStart=/usr/local/bin/frpc -c /usr/local/bin/frpc.ini

[Install]
WantedBy=multi-user.target
  1. 执行命令:
systemctl daemon-reload
  1. 根据参数“ExecStart”的值将frpc执行程序和frpc.ini放入指定目录,(需要将改文件夹权限设置为777,否则会有权限报错)

systemctl命令

  1. 重启frpc服务
systemctl restart frpc
  1. 查看frpc状态
systemctl status frpc

停止frp服务

先执行

ps -aux|grep frp| grep -v grep

再执行

kill xxxx

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值