【内网穿透】使用FRP进行内网穿透
1. 内网穿透
内网穿透(NAT 穿透)是一种技术,用于使处于局域网(内网)中的设备或服务可以被外部网络访问。
由于局域网设备通常使用私有 IP 地址,这些地址在互联网上是不可路由的,因此需要内网穿透技术来实现外部访问。
简单来说,比如你家里有台服务器且没有公网IP。你在学校或者公司想要访问服务器,由于没有公网,你是访问不了的。
内网穿透解决的就是上面这个问题。归根到底还是公网IP不足的问题。
2. 需要的设备
实现内网穿透,必须要有一台有公网IP的服务器。比如各大厂商的云服务器等等。这台服务器就称之为代理服务器(Proxy Server)。
访问内网的服务器时,直接访问代理服务器,让代理服务器在访问内网的服务器。
只需在代理服务器上部署好环境,即可实现内网穿透。
3. 需要的工具
如文章标题,使用到的工具就是FRP。就是通过这个软件来实现内网穿透的,具体的内网穿透原理本人也不懂,项目使用GO语言写的,懂Go的可以看看内部实现原理,这篇文章只讲使用。
3.1 下载FRP
首先,将此项目下载到本地。然后部署到你的代理服务器上和你需要访问的服务器上即可。(部署会在后面3.2讲)
点击Tags,就能找到历史的版本了。
下载最新版即可
注意 下载时需要匹配你的CPU 架构的。 如果你不知道你的CPU 架构,使用
uname -m
进行查看。 常见的架构包括:
- x86_64(表示64位x86架构)
- armv7l(表示32位ARM架构)
- aarch64(表示64位ARM架构)
如果你是x86_64,下载时选择amd64的即可。
如果你是aarch64选择arm64即可
其他的参考下面的规则:
- 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命令也可以进行发送。
3.2 部署FRP
发送到两台服务器后,解压即可。
tar -zxvf frp_0.59.0_linux_amd64.tar.gz
解压完成后,进入到目录如下
- frpc:是frp的客户端程序,内网的服务器需要启动的程序,代理服务器用不到。
- frpc.toml : frpc的配置文件
- frps : 是frp的服务端程序,代理服务器上需要启动的程序,内网的服务器用不到。
- frps.toml : frps的配置文件
- LINCENS: 用不到 不用关心
3.2.1 在代理服务器上部署
在代理服务器上部署,只需配置frps.toml文件即可。
这里面就一个选项,是frps进程绑定的端口号,可以自己设置。保证此端口可以访问即可。
运行frps需要使用此配置文件,需要加-c选项。直接运行的话,配置文件不会生效。 如下:
./frps -c ./frps.toml
运行成功如下:
3.2.2 在内网服务器上部署
在内网服务器上部署,先配置一下fprc.toml文件。frpc.toml文件配置如下:
- 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需要启动)
这样就部署成功了。
4. 测试
测试内网穿透是否成功。 经过上面的操作后,当访问代理服务器上8081端口提供的服务时,就会访问到内网的22端口服务,即ssh服务。
此时,新建一个连接,端口号改为frpc.toml配置文件中的remotePort 端口号 。
进行连接,就会连接到内网的服务器上。输入用户名和密码即可。
这样就成功的实现了内网穿透,在外网的环境,也能访问内网的服务器了,但前提就是得有公网的服务器。
5. 最终部署
直接运行的话,关闭终端后,就用不了了。可以在启动时设置为后台程序,并且把输出的信息扔到文件黑洞中,不占用终端的资源,也不受终端的影响。 命令如下:
nohup ./frps -c ./frps.toml &>/dev/null &
转载自:https://juejin.cn/post/7393503669474213898