跨局域网远程连接神器——frp内网穿透

  • Post author:
  • Post category:其他




跨局域网远程连接神器——frp内网穿透

​ 放寒假回家想用服务器跑代码、想用校园网下文章、甚至还想用服务器打两把游戏。这该怎么办?有的大佬会想,可以在家买一个服务器嘛!如果是这样就打扰了。。。对于我这样的穷人就只能合理利用学校的资源,远程连接学校的服务器了。但是家里网和校园网不在同一局域网这该如何连接?frp内网穿透是一个很好的选择!



1、frp是什么?

​ frp 是一个高性能的反向代理应用,可以帮助您轻松地进行内网穿透,对外网提供服务,支持 tcp, http, https 等协议类型,并且 web 服务支持根据域名进行路由转发。frp 是一款跨平台的内网穿透工具,支持 Windows、macOS 与 Linux,它需要你有一台拥有固定公网 IP 的电脑,VPS 最好,然后就能愉快的进行内网穿透了。还支持 https,甚至可以用它进行小程序开发。



2、frp的作用

  • 利用处于内网或防火墙后的机器,对外网环境提供 http 或 https 服务。

  • 对于 http 服务支持基于域名的虚拟主机,支持自定义域名绑定,使多个域名可以共用一个80端口。

  • 利用处于内网或防火墙后的机器,对外网环境提供 tcp 服务,例如在家里通过 ssh 访问处于公司内网环境内的主机。

  • 可查看通过代理的所有 http 请求和响应的详细信息。(待开发)



3、远程为什么选用frp

  • 远程桌面使用TeamViewer。可用,但需要访问端也拥有TeamViewer软件,不是很方便,希望能使用Windows自带的远程桌面。且TeamViewer不易实现远程文件访问。
  • 使用蒲公英VPN软件进行组网,可用,但免费版本网络速度极慢,体验不佳,几乎无法正常使用。
  • 使用花生壳软件进行DDNS解析,可用,但同第二点所述,免费版本有带宽限制,无法实际使用。

  • 搭建frp服务器进行内网穿透,可用且推荐,可以达到不错的速度,且理论上可以开放任何想要的端口,可以实现的功能远不止远程桌面或者文件共享



4、frp配置



3.1 前期工作

搭建一个完整的frp服务链,我们需要:

  • VPS一台(也可以是具有公网ip的实体机,博主这边用的是阿里云的服务器,学生价包年也就几十块)

  • 访问设备与被访问设备

  • 一些简单的Linux操作指令基础

  • frp程序文件,根据自己的要求下载对应版本的程序

    下载地址

在这里插入图片描述



3.2 frp 服务的部署

1、将下载好的frp程序文件传入服务器

2、解压文件

tar -zxvf frp_0.34.3_linux_amd64.tar.gz

3、此处可以将frp_0.34.3_linux_amd64文件夹改名为frp,方便操作使用:

mv frp_0.34.3_linux_amd64 frp

4、进入frp目录

cd frp

5、编辑frps.ini文件

vim frps.ini
[common]
bind_addr = 0.0.0.0
bind_port = 7000
bind_udp_port = 7001
privilege_token = frp888
dashboard_port = 7700
dashboard_user = admin
dashboard_pwd = admin

6、服务端启动frp

./frps -c ./frps.ini

启动后输入

http://[服务器公网ip]:7700

,并输入所设置的账号(admin)和密码(admin)就可以看到以下管理界面:

在这里插入图片描述

如果上述界面无法访问进行下面步奏,如果可以跳过下面步骤直接进行客户端的配置。

7、打开服务器防火墙

sudo ufw enable

打开防火墙以后如果发现服务器无法进行运程访问了,那应该是防火墙把22端口关闭了,解决方案:在服务器终端执行命令:

sudo ufw allow 22

8、防火墙打开服务器端端口

sudo ufw allow 7000
sudo ufw allow 7001
sudo ufw allow 7700

完成上述操作后,再输入

http://[服务器公网ip]:7700

就可以访问上述界面了


服务端frp开机自启动

1、添加systemd配置文件:

vim /usr/lib/systemd/system/frp.service

编辑文件内容如下;

[Unit]
Description=The nginx HTTP and reverse proxy server
After=network.target remote-fs.target nss-lookup.target

[Service]
Type=simple
ExecStart=/usr/local/frp/frps -c /usr/local/frp/frps.ini
KillSignal=SIGQUIT
TimeoutStopSec=5
KillMode=process
PrivateTmp=true
StandardOutput=syslog
StandardError=inherit

[Install]
WantedBy=multi-user.target

其中ExecStart的路径根据自己的路径定义

2、设置frp开机启动:

systemctl daemon-reload
systemctl enable frp

3、启动frp(终止frp把start改为stop即可):

systemctl start frp

4、查看frp是否启动:

ps aux | grep frps

显示如下结果就成功了:

在这里插入图片描述



3.3 被访问机配置



Linux系统

将frp_0.34.3_linux_amd64文件传入到被访问系统的指定目录下中、解压、重命名为frp、切换到frp文件中、编辑frpc.ini文件

# frpc.ini
[common]
# 你的frp服务器的公网ip
server_addr = x.x.x.x
# 你的frp服务器的默认端口
server_port = 7000

[rdp]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = 123456789
local_ip = 127.0.0.1
# 远程桌面的本地端口号
local_port = 22

启动frp

frpc -c frpc.ini



windows系统

将frp_0.34.3_window_amd64文件传入到被访问系统的指定目录下中、解压、重命名为frp、切换到frp文件中、编辑frpc.ini文件。

# frpc.ini
[common]
# 你的frp服务器的公网ip
server_addr = x.x.x.x
# 你的frp服务器的默认端口
server_port = 7000

[rdp]
type = stcp
# 只有 sk 一致的用户才能访问到此服务
sk = 123456789
local_ip = 127.0.0.1
# 远程桌面的本地端口号
local_port = 3389

启动frp

frpc -c frpc.ini



3.4 访问端配置

访问端一般都是windows的系统,在访问端电脑打开rp_0.34.3_window_amd64。解压、重命名为frp、切换到frp文件中、编辑frpc.ini文件。

# frpc.ini
[common]
# 你的frp服务器的公网ip
server_addr = x.x.x.x
# 你的frp服务器的默认端口
server_port = 7000

[rdp_visitor]
type = stcp
# stcp 的访问者
role = visitor
# 要访问的 stcp 代理的名字
server_name = rdp
# 只有 sk 一致的用户才能访问到此服务
sk = 123456789
# 绑定本地端口用于访问 远程桌面 服务
bind_addr = 127.0.0.1
bind_port = 1000

访问linux系统:

在这里插入图片描述

访问windows端

在这里插入图片描述



版权声明:本文为YAOHAIPI原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。