利用FRP实现内网穿透

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

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

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

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

3.1 文件下载

# 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 其他注意事项

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

在多人同时使用一个 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.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即可访问当前项目

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

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

4.3 启动服务端

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

4.4 设置开机启动

<service> <id>frp</id> <name>frp</name> <description>frp</description> <executable>frpc</executable> <arguments>-c frpc.ini</arguments> <logmode>reset</logmode> </service> 

5.1 远程桌面连接

everykonw.xyz:5200
success

原文链接:https://blog.csdn.net/wb15374515921/article/details/89450378

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享