likes
comments
collection
share

【内网穿透】使用FRP进行内网穿透

作者站长头像
站长
· 阅读数 27

1. 内网穿透

内网穿透(NAT 穿透)是一种技术,用于使处于局域网(内网)中的设备或服务可以被外部网络访问。

由于局域网设备通常使用私有 IP 地址,这些地址在互联网上是不可路由的,因此需要内网穿透技术来实现外部访问。

简单来说,比如你家里有台服务器且没有公网IP。你在学校或者公司想要访问服务器,由于没有公网,你是访问不了的。 【内网穿透】使用FRP进行内网穿透 内网穿透解决的就是上面这个问题。归根到底还是公网IP不足的问题。

2. 需要的设备

实现内网穿透,必须要有一台有公网IP的服务器。比如各大厂商的云服务器等等。这台服务器就称之为代理服务器(Proxy Server)。

访问内网的服务器时,直接访问代理服务器,让代理服务器在访问内网的服务器。
只需在代理服务器上部署好环境,即可实现内网穿透。

【内网穿透】使用FRP进行内网穿透

3. 需要的工具

如文章标题,使用到的工具就是FRP。就是通过这个软件来实现内网穿透的,具体的内网穿透原理本人也不懂,项目使用GO语言写的,懂Go的可以看看内部实现原理,这篇文章只讲使用。

开源地址:github.com/fatedier/fr…

3.1 下载FRP

首先,将此项目下载到本地。然后部署到你的代理服务器上和你需要访问的服务器上即可。(部署会在后面3.2讲)

点击Tags,就能找到历史的版本了。 【内网穿透】使用FRP进行内网穿透 下载最新版即可 【内网穿透】使用FRP进行内网穿透

注意 下载时需要匹配你的CPU 架构的。 如果你不知道你的CPU 架构,使用uname -m 进行查看。 常见的架构包括:

  • x86_64(表示64位x86架构)
  • armv7l(表示32位ARM架构)
  • aarch64(表示64位ARM架构)

如果你是x86_64,下载时选择amd64的即可。 【内网穿透】使用FRP进行内网穿透 如果你是aarch64选择arm64即可【内网穿透】使用FRP进行内网穿透 其他的参考下面的规则:

  • frp_0.59.0表示的时版本号
  • frp_0.59.0_xxxx: xxxx表示的是适配的操作系统
  • frp_0.59.0_xxx_yyy: yyy表示的就是cpu的架构
  • frp_0.59.0_xxx_yyy.zzz.zz: 表示的是文件压缩格式

下载完成后,发送到你的代理服务器上和自己的服务器即可。 我这里使用的是xshell,发送的时候直接文件托送到xshell即可。使用rz命令也可以进行发送。 【内网穿透】使用FRP进行内网穿透

3.2 部署FRP

发送到两台服务器后,解压即可。

tar -zxvf frp_0.59.0_linux_amd64.tar.gz 

解压完成后,进入到目录如下 【内网穿透】使用FRP进行内网穿透

  • frpc:是frp的客户端程序,内网的服务器需要启动的程序,代理服务器用不到。
  • frpc.toml : frpc的配置文件
  • frps : 是frp的服务端程序,代理服务器上需要启动的程序,内网的服务器用不到。
  • frps.toml : frps的配置文件
  • LINCENS: 用不到 不用关心

3.2.1 在代理服务器上部署

在代理服务器上部署,只需配置frps.toml文件即可。 【内网穿透】使用FRP进行内网穿透

这里面就一个选项,是frps进程绑定的端口号,可以自己设置。保证此端口可以访问即可。

运行frps需要使用此配置文件,需要加-c选项。直接运行的话,配置文件不会生效。 如下:

./frps -c ./frps.toml

运行成功如下: 【内网穿透】使用FRP进行内网穿透

3.2.2 在内网服务器上部署

在内网服务器上部署,先配置一下fprc.toml文件。frpc.toml文件配置如下:

【内网穿透】使用FRP进行内网穿透

  • serverAddr : 代理服务器的IP地址
  • serverPort : 指定代理服务器的监听端口,在frps.toml指定的端口号。
  • [[proxies]] : 用于定义一个或多个代理规则
  • name : 当前代理的名称,可以自定义
  • type : 指定代理类型tcp或者udp
  • localIP : 内网服务的本地 IP 地址,127.0.0.1即可
  • localPort : 内网服务的本地端口号,这里的22是ssh服务的端口
  • remotePort : 指定 代理服务器上暴露的端口号。

这个配置生效以后,当你访问代理服务器的8888端口,他就会代理到你内网服务器的22端口上。

运行: 和fprs一样,需要使用-c选项指定配置文件。 运行成功如下:(代理服务器的frps需要启动) 【内网穿透】使用FRP进行内网穿透

这样就部署成功了。

4. 测试

测试内网穿透是否成功。 经过上面的操作后,当访问代理服务器上8081端口提供的服务时,就会访问到内网的22端口服务,即ssh服务。

此时,新建一个连接,端口号改为frpc.toml配置文件中的remotePort 端口号 。 【内网穿透】使用FRP进行内网穿透

进行连接,就会连接到内网的服务器上。输入用户名和密码即可。 【内网穿透】使用FRP进行内网穿透 这样就成功的实现了内网穿透,在外网的环境,也能访问内网的服务器了,但前提就是得有公网的服务器。 【内网穿透】使用FRP进行内网穿透

5. 最终部署

直接运行的话,关闭终端后,就用不了了。可以在启动时设置为后台程序,并且把输出的信息扔到文件黑洞中,不占用终端的资源,也不受终端的影响。 命令如下:

nohup ./frps -c ./frps.toml &>/dev/null &
转载自:https://juejin.cn/post/7393503669474213898
评论
请登录