利用FRP实现内网穿透

frp 是一个可用于内网穿透的高性能的反向代理应用,支持 tcp, udp 协议,为 http 和 https 应用协议提供了额外的能力,且尝试性支持了点对点穿透。官方项目地址为(项目地址)


1. 可实现功能

本文主要就是内网穿透,远程访问内网桌面,ssh和内网部署的项目

2. 开始前的准备

  • 一台具有公网ip的服务器 本文的服务器公网ip为120.120.120.120(假,测试用)
  • 内网ip 192.168.1.106
  • 确保你在内网中可以访问你的远程桌面 确保你有足够的权限
  • 映射到公网的域名,本文的域名为everykonw.xyz

本文中所使用内网系统为 win 10,公网系统为ubuntu 16.04 内核为amd64

3. 服务器端配置

3.1 文件下载

项目的release地址

  1. 在其中右键点击你要下载的版本(版本不对可能无法运行),获取其下载链接
  2. 打开Ubuntu的终端,输入以下命令
# 1. 下载
wegt https://github.com/fatedier/frp/releases/download/v0.26.0/frp_0.26.0_linux_amd64.tar.gz
# https://github.com/fatedier/frp/releases/download/v0.26.0/frp_0.26.0_linux_amd64.tar.gz即为你获取的链接地址
# 2. 解压缩
tar -xzvf frp_0.26.0_linux_amd64.tar.gz

其中frps文件都为服务端文件,必须保留下来,而frpc文件frpc frpc.ini frpc_full.ini都为客户端文件,可以删除

3.2 编辑配置文件

编辑frps.ini文件夹

[common]
bind_addr=0.0.0.0
# bind_port为客户端与服务端进行通信的端口
bind_port = 7000
# vhost_http_port为服务端http服务的端口
# vhost_hppts_port为服务端https服务的端口
vhost_http_port = 8012
vhost_hppts_port = 443
# token 用于身份认证,只有和服务端token相同的客户端才可连接到此服务端
token = 12345678
# 设置frps仪表盘的端口号,和用户名密码,用户可通过  服务区ip:端口号来访仪表盘   120.79.252.63
dashboard_port = 7500
dashboard_user = admin
dashboard_pwd = admin
# 为了后面的自定义二级域名,如果不需要多个程序使用同一个fprs时可以不用
subdomain_host = everykonw.xyz

3.3 启动服务端

进入解压后得到的frp目录,然后通过./frps -c frps.ini命令即可启动服务端

3.4 设置开机启动和后台运行

上一步中的frps占据了整个命令窗口,所以接下来要考虑如何让它在后台运行并且开机自启:
首先通过vi /etc/systemd/system/frps.service命令新建文件并写入以下内容:

[Unit]
Description=frps daemon
After=syslog.target  network.target
Wants=network.target

[Service]
Type=simple
ExecStart=/home/admin/frp_0.26.0_linux_amd64/frps -c /home/admin/frp_0.26.0_linux_amd64/frps.ini
Restart= always
RestartSec=1min

[Install]
WantedBy=multi-user.target

注意ExecStart中要配置成自己的路径.
然后使用systemctl start frps即可启动frps
systemctl enable frps即可将frps设置为开机启动
使用systemctl stop frps可以停止fprs

3.5 其他注意事项

3.5.1 通过域名来代替你的ip地址访问(可以不设置)

  1. 购买一个域名
  2. 将域名和你的服务器进行绑定
    捕获1.PNG
  3. 设置域名解析
    捕获2.PNG

使用*.everykonw.xyz:8012即可在客户端绑定不同的web应用

3.5.2 自定义二级域名(建议看完后面的客户端配置再来看这一部分)

在多人同时使用一个 frps 时,通过自定义二级域名的方式来使用会更加方便。

通过在 frps 的配置文件中配置 subdomain_host,就可以启用该特性。之后在 frpc 的 http、https 类型的代理中可以不配置 custom_domains,而是配置一个 subdomain 参数。

只需要将 *.{subdomain_host} 解析到 frps 所在服务器。之后用户可以通过 subdomain 自行指定自己的 web 服务所需要使用的二级域名,通过 {subdomain}.{subdomain_host} 来访问自己的 web 服务。

#frps.ini
[common]
subdomain_host = everykonw.xyz

将泛域名 *.everyknow 解析到 frps 所在服务器的 IP 地址。

# frpc.ini
[web]
type = http
local_port = 80
subdomain = test

4. 客户端配置

4.1 文件下载

具有内网IP的电脑将作为客户端(frpc), 本文中客户端使用的是win10 64位系统,所以在releases页面下载frp_0.16.0_windows_386.zip解压,删除与服务端相关的文件(frps文件夹,frps.ini,frps_full.ini)

4.2 编辑和配置文件

#frpc.ini
[common]
server_addr = 120.120.120.120
server_port = 7000
# token身份认证
token = 12345678
# 设置管理员地址和端口来控制frpc端配置
admin_addr = 127.0.0.1
admin_port = 7400
admin_user = admin
admin_pwd = admin

[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000

# 远程桌面配置
[RDP]
type = tcp
local_ip = 127.0.0.1
local_port = 3389
remote_port = 5200

#配置一个web应用
[web]
type = http
local_port = 80
subdomain = my

注意sever_ addr配置为公网电脑的IP,server_ port与frps.ini中的bind_ port一致。[ssh]为远程连接配置。[RDP]为远程桌面的配置。[web]为http通信的配置,启动frpc后,在游览器输入my.everykonw.xyz:8012即可访问当前项目

4.2.1 添加一个新的web应用

[web01]
type = http
# 81为新的项目端口
# my01为新项目的二级域名
local_port = 81
subdomain = my01

启动frpc后,在游览器输入my01.everykonw.xyz:8012即可访问当前项目

4.3 启动服务端

进入fprc所在文件夹,使用命令frpc -c frpc.ini 即可启动frpc,如下图所示:
捕获3.PNG

4.4 设置开机启动

如果需要对客户端设置后台运行和开机自启。借助 winsw 工具可以将frpc注册为windows系统中的服务。

  1. 下载winsw最新版,为了方便将其重命名为winsw.exe, 将该文件和frpc.exe放在一起,然后新建winsw.xml写入以下内容:
<service>
    <id>frp</id>
    <name>frp</name>
    <description>frp</description>
    <executable>frpc</executable>
    <arguments>-c frpc.ini</arguments>
    <logmode>reset</logmode>
</service>
  1. 使用管理员模式的cmd命令进入winsw所在文件夹,执行winsw.exe install即可将frpc安装为系统服务。
  2. win + R输入services.msc进入服务列表页找到frp服务,启动frp服务,设置为自动启动并如下设置
    捕获4.PNG

5. 测试

5.1 远程桌面连接

everykonw.xyz:5200
success

6. 参考

https://www.jianshu.com/p/a6e9627dbe29
https://blog.csdn.net/u011976966/article/details/82019688
https://www.kafan.cn/edu/20094466.html
https://blog.csdn.net/qq_40276378/article/details/85343844
https://github.com/fatedier/frp/blob/master/README_zh.md

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值