当前位置:   article > 正文

frp 实现内网穿透_frps 内网穿透

frps 内网穿透


frp用于实现内网穿透的工具,实现的是公网ip或者域名,可以调用到本地的端口,原理是在公网的服务器上(具有公网ip的服务器)与本地服务建立一个通道,然后通过反向代理的能力将请求转发到本地对应端口,从而实现了内网穿透的功能。frp支持http、tcp、udp等协议的穿透。

一、服务端安装

服务端安装配置过程,这里以x86_64 的linux系统进行展示,这里使用的是centos 7.9

1.下载frp

这里下载的是0.44 的版本,测试了几个版本,有的是服务端下载不了,有的是客户端下载不了,只有0.44的正常下载了,因此就用了这个版本的frp。

# 可尝试使用下面任何一个地址下载,如果不行就根据地址去官网直接下载到本地上传到服务器
 wget https://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
 wget http://github.com/fatedier/frp/releases/download/v0.44.0/frp_0.44.0_linux_amd64.tar.gz
  • 1
  • 2
  • 3

2.解压、修改文件名,方便操作配置

# 解压
tar -zxvf frp_0.44.0_linux_amd64.tar.gz
# 修改文件名
mv frp_0.44.0_linux_amd64 frp
  • 1
  • 2
  • 3
  • 4

3.修改配置文件

# 进入文件夹
cd frp
# 编辑服务端配置文件 frps.ini 其中frpc开头的都是客户端文件,这里可以删除
vim frps.ini
  • 1
  • 2
  • 3
  • 4

下面是默认的配置信息:

[common]
# 服务端和客户端通信的端口
bind_port = 7000
  • 1
  • 2
  • 3

增加以下配置内容

[common]
# 服务端和客户端通信配置
bind_port = 7000
# 监控面板配置
dashboard_port = 7500
dashboard_user = root
dashboard_pwd = super
# 认证配置,这个必须增加,使用token没有成功,网上找到有用这种方式认证的,更改后可以使用
privilege_mode = true
privilege_token = pwd123
# http 对外暴露端口,对外暴露的http端口需要使用这个进行暴露
vhost_http_port = 8080
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

4.启动frps服务、放行端口

启动很简单,一个命令即可,启动后可以使用http://公网ip:7500 打开监控页面来验证是否正常启动,用户名和密码就是上面配置的用户名密码

# 启动命令
./frps -c frps.ini
  • 1
  • 2

启动完成后,控制台会打印 frps started successfully 的信息,然后我们就可以登录监控面板进行确认了。不过确认之前还需要将对应端口进行放行,如果你是云服务器,需要在云服务器的安全组中将以上配置信息的所有端口进行放行(7000可以不用)。放行完成后登录监控面板进行验证:
在这里插入图片描述
这里我的客户端已经搭建完成了,所以显示proxy counts有两个,这样服务端的搭建就成功了。

5.配置frps服务开机启动

上面的启动命令,一旦退出命令界面程序就会暂定,这里使用systemd来管理服务的启动状态,并设计frps的开机启动,这样就不用关心服务端的启动问题了,可谓一劳永逸。

# 开始配置
sudo vim /lib/systemd/system/frps.service
  • 1
  • 2

填入以下内容即可,这里需要根据自己的frps文件路径自行设置frps的位置,我的是/root/frp/frps

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

[Service]
Type=simple
#启动服务的命令(此处写你的frps的实际安装目录)
ExecStart=/root/frp/frps -c /root/frp/frps.ini

[Install]
WantedBy=multi-user.target
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

设置开机启动等其他命令:

# 开机启动
sudo systemctl enable frps
# 启动frps
sudo systemctl start frps
# 停止frps
sudo systemctl stop frps
# 直接重启
sudo systemctl restart frps
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

这样就实现了frps的开启启动,以后就可以不用问了

二、客户端安装

这里展示客户端的安装过程,这里客户端使用的是windows系统,应该大部分都是windows系统。这里客户端的版本应该和服务端版本保持一致,都是使用0.44 的版本。

1.安装frp

下载地址如下:

https://github.com/fatedier/frp/releases/tag/v0.44.0
  • 1

在这里插入图片描述
下载的就是上图的的包,这个包都是解压即用的。
下载下来以后,直接解压到指定目录即可,这里解压到D盘根目录下,并重命名文件夹名为frp,所以我的frpc的文件的路径是D:\frp\frpc

2.修改配置文件

[common]
# 服务端ip,这个不可以变
server_addr = 116.204.89.***
# 服务端通信端口,这个也不可以变
server_port = 7000
# 服务端的密码,也不可以变,和服务端保持一致
privilege_token = pwd123
# 设置为true就行
tls_enable = true

[ssh]
# 这个是连接类型
type = tcp
local_ip = 172.17.65.57
local_port = 22
# 这个端口,无需在服务端声明,但是需要在服务器端放行
remote_port = 6000

[http]
# 服务类型
type = http
# 本地web服务端口
local_port = 8080
# 服务端ip或者域名,这是笔者的复习任务网站
custom_domains = ebbing.xinhengcompany.cn
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25

这里是暴露了两个端口,一个是本地的22,一个是本地的8080,

本地的tcp的22端口映射到服务器的6000(无需在服务端配置,只需要放行这个端口就可以),支持ssh到本地。这样可以方便远程控制电脑,而无需安装向日葵等软件了。
本地的http的8080端口映射到服务器的8080(这个是在服务端配置的),这样可以把本地的web服务暴漏到公网中。

3.启动客户端frpc

这里使用的是powershell进行启动,我的安装目录是D:\frp\frpc,需要cd到D:\frp\,然后执行下面的命令:

# 这里使用的是powershell进行启动的
 .\frpc -c frpc.ini
  • 1
  • 2

如果出现以下信息,说明配置成功了
在这里插入图片描述

5.验证安装ssh服务并验证

尝试使用ssh到服务器的6000端口时,本地提示下面信息:
在这里插入图片描述
说明本地不支持远程的ssh,如果安装了ssh服务,大概是安全软件拦截了,这里是因为没有安装ssh服务。
注意:以管理员身份启动powershell,再执行以下命令

Add-WindowsCapability -Online -Name OpenSSH.Server
  • 1

运行后,弹出以下界面,这个下载有点慢,需要耐心等待
在这里插入图片描述
出现如下页面说明安装完成了:
在这里插入图片描述
启动ssh服务,并查看ssh状态

# 启动ssh服务
Start-Service sshd
# 停止ssh服务
Stop-Service sshd
# 检查ssh状态
Get-Service sshd
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

如下status是running则表示正常启动了
在这里插入图片描述
设置ssh的开机启动,这样ssh就可以每次随着电脑的启动而启动了不需要我们手动再进行管理了。

Set-Service -Name sshd -StartupType 'Automatic'
  • 1

这里设置第一次没有生效,重复操作了几次才生效,不知道为什么,如果这个命令不好使,可以使用windows+R,输入services.msc
找到Open SSH service 设置为开机启动也是一样的。
在这里插入图片描述
不过本地安装ssh作用并不是很大,最好还是使用windows的远程桌面连接,更方便,不过我的是家庭版,不支持远程桌面所以没啥用。

6.验证web服务

前面配置了远端服务器的8080到本地的8080的映射,所以这里通过域名ebbing.xinhengcompany.cn:8080来访问本地的web服务,如下:
在这里插入图片描述
可以看到web页面已经正常打开了,到这里也就实现了内网穿透的web穿透了。
不过还不够,因为每次启动frpc都是使用powershell来进行启动的,这样很麻烦,还需要为他配置一个开机启动的功能。

7.配置frpc的开机启动

下面是一个脚本,可以利用vbscript来实现frpc的后台启动,新建一个fprc.bat ,将以下内容放进去

REM 关闭窗口的命令回显
@echo off
if "%1" == "h" goto begin

REM 使用VBScript重新启动脚本并附加参数 "h" 实现程序的后台运行
mshta vbscript:createobject("wscript.shell").run("""%~nx0"" h",0)(window.close)&&exit
:begin

REM 切换到 frpc.exe 所在的目录
cd /d C:\frp

REM 启动 frpc.exe,并指定配置文件为 frpc.ini,并在后台运行
start "" /b frpc.exe -c frpc.ini
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

然后windows+R 打开开机启动,输入shell:startup,将frpc.bat放进去即可:
在这里插入图片描述
在这里插入图片描述
然后重启验证frpc.exe是否正常启动即可。
重启验证失败,上面的脚本可以实现在不重启下的后台启动,但是重启时执行脚本到vb脚本行时报错,搜索一圈没有解决,最后将脚本降级到了开启重启然后最小化,就是下面的脚本了,最后将脚本放到启动菜单下就行了。

REM 关闭命令回显,即在执行命令时不在命令窗口上显示命令本身
@echo off
REM 切换到 frpc.exe 所在的目录
cd /d D:\frp  
REM 启动 frpc.exe,并指定配置文件为 frpc.ini,并最小化窗口
start /min frpc.exe -c frpc.ini  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读