利用FRP服务实现内网服务器的远程登录

打印 上一主题 下一主题

主题 1721|帖子 1721|积分 5163

本文主要介绍怎样利用云服务器和FRP服务来远程连接到内网服务器
  
   文章目录

  目录
  前言
  一、什么是NAT穿透或反向署理?
  二、原理介绍
  三、FRP 简介
  1.什么是FRP
  2.实现步骤
  (1)准备工作
  (2)在公网服务器上设置 FRP 服务端
  • 下载 FRP 服务端程序并解压:
  • 编辑 frps.ini,设置 FRP 服务端:
  • 启动 FRP 服务端:
  (3)在内网服务器上设置 FRP 客户端
  • 下载 FRP 服务端程序并解压:
  • 编辑 frpc.ini,设置 FRP 客户端,主要设置以下几个参数:
  • 启动 FRP 客户端:
  3. 远程访问内网服务器
  4. FRP  注册为系统服务
  ​ (1)公网服务器注册FRP服务端服务
   (2)内网服务器注册FRP客户端服务
  总结
  
前言

很多时候在家办公需要远程登录到公司内网的服务器,除了利用公司部署的vpn服务,还可以利用反向署理的方式实现内网服务器的访问。


一、什么是NAT穿透或反向署理?

NAT 穿透或反向署理(如通过 FRP)是常见的办理内网穿透问题的技能本事,尤其适用于无法直接访问内网装备的场景。本文将详细介绍 利用 FRP(Fast Reverse Proxy) 工具来实现 NAT 穿透/反向署理 的实现步骤。
二、原理介绍

NAT穿透:通常家用路由器或公司内网服务器处于局域网中,外部无法直接通过公网访问。NAT 穿透的原理是通过公网中转服务器(可以是你购买的云服务器)举行中介,使内网装备主动与该中介服务器创建连接,然后外网装备通过连接到中介服务器,从而间接访问内网中的装备。
反向署理:它指的是内网装备主动向一个公网服务器发起连接,然后公网服务器接收到外部的访问请求时,将其转发到内网装备。FRP 就是一种常用的反向署理工具,它可以实现类似的内网穿透功能。
三、FRP 简介

1.什么是FRP

FRP(Fast Reverse Proxy)是一款高性能的反向署理应用,主要用于内网穿透。它可以或许将内网的服务暴露给外网,允许外部用户访问位于防火墙或路由器后面的内网服务。FRP 支持多种协议,如 TCP、UDP、HTTP 和 HTTPS,且具有较高的扩展性和易用性。
本文主要介绍通过FRP服务实现内网服务器的远程访问。
2.实现步骤

(1)准备工作

        • 一台公网服务器:例如购买阿里云、腾讯云等云服务器,拥有固定公网 IP。
        • 公司内网服务器:这是你想要远程访问的服务器。
        • 安装 FRP 工具:公网服务器和公司内网服务器上都需要安装 FRP
   对于云服务器的设置要求并不严格,根据实际利用情况选择即可,这里我们只用作ssh连接的话:
  • 带宽:根据需要传输的数据规模,5 Mbps 左右的带宽即可。
  • CPU:利用 1 核或 2 核 CPU即可。
  • 内存:最少 1 GB 内存。
  • 存储:一般 10-20 GB 系统盘充足。
  • 并发:最好选择支持高并发连接的服务器实例。
  (2)在公网服务器上设置 FRP 服务端

• 下载 FRP 服务端程序并解压:

  1. [root@localhost ~]# wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
复制代码

下载成功开始解压
  1. [root@ceshi ~]# tar -zxvf frp_0.37.1_linux_amd64.tar.gz
复制代码

解压后进入解压的目录
  1. [root@ceshi ~]# cd frp_0.37.1_linux_amd64
复制代码

frpc : 这是 FRP 客户端的可实行文件。它用于在客户端运行,向服务器发起请求并通过服务器举行内网穿透。客户端负责将本地的服务暴露给外网。
frpc_full.ini : 这是 FRP 客户端的完整设置文件示例。里面包含了所有可以设置的选项。你可以根据自己的需求修改这个文件,设置内网穿透的行为,如指定哪些端口、协议、服务等。
frpc.ini : 这是 FRP 客户端的简化设置文件,用于快速设置和运行 FRP 客户端。通常,如果你不需要复杂的设置,可以直接修改这个文件来快速启动客户端。
frps : 这是 FRP 服务器端的可实行文件。服务器端用于接收来自客户端的连接请求,并通过 NAT 或防火墙将内网服务暴露给外网。服务器端在外网中运行,起到桥梁作用。
frps_full.ini : 这是 FRP 服务器端的完整设置文件示例,包含了所有可用的设置选项。你可以通过编辑这个文件,设置服务器怎样处置处罚来自客户端的请求。
frps.ini : 这是 FRP 服务器端的简化设置文件,用于快速设置和启动 FRP 服务器端。和客户端设置类似,这个文件可以用于简单场景下的快速部署。
LICENSE : 这是软件的许可证文件,里面列出了 FRP 的授权条款和利用协议。
systemd : 这是一个目录,里面通常包含 systemd 服务设置文件。可以通过 systemd 将 FRP 注册为 Linux 服务,以便开机启动和管理服务历程。
• 编辑 frps.ini,设置 FRP 服务端:

  1. [root@localhost frp_0.37.1_linux_amd64]# vim frps.ini
复制代码
向此中增长以下内容
  1. [common]
  2. bind_port = 7000   # FRP 服务端监听的端口
复制代码


• 启动 FRP 服务端:

  1. [root@localhost frp_0.37.1_linux_amd64]# ./frps -c frps.ini
复制代码

根据终端输出信息可以看到FRP服务在7000端口已经正常启动。
PS : 因为现在是在云服务器上设置服务,请确定云服务器的7000端口的防火墙是正常开放的,请自行根据自己的云服务厂商的安全组设置计谋开放7000端口,不然会影响后续的内网服务器的连接。
(3)在内网服务器上设置 FRP 客户端

• 下载 FRP 服务端程序并解压:

这里与上面服务端的步骤雷同,直接复制前面的下令即可:
  1. wget https://github.com/fatedier/frp/releases/download/v0.37.1/frp_0.37.1_linux_amd64.tar.gz
  2. tar -zxvf frp_0.37.1_linux_amd64.tar.gz
  3. cd frp_0.37.1_linux_amd64
复制代码
• 编辑 frpc.ini,设置 FRP 客户端,主要设置以下几个参数:

  1. [common]
  2. server_addr = <公网服务器IP>  # 填写你的公网服务器的 IP
  3. server_port = 7000  # 和 FRP 服务端一致
  4. [ssh]
  5. type = tcp
  6. local_ip = 127.0.0.1  # 本地内网服务器的地址
  7. local_port = 22  # 内网服务器的 SSH 端口
  8. remote_port = 6000  # 映射到公网服务器上的端口
复制代码


PS :因为这里我们设置的ssh映射到的是公网服务上的6000端口,以是公网服务器的6000端口也需要对外开放。
• 启动 FRP 客户端:

  1. [root@ceshi frp_0.37.1_linux_amd64]# ./frpc -c frpc.ini
复制代码

可以看到终端提示启动成功。
3. 远程访问内网服务器

完成上述设置后,我们便可以通过公网服务器的 IP 和 6000 端口,远程访问内网中的 SSH 服务:
  1. [root@ceshi ~]# ssh -p 6000 用户名@<公网服务器IP>
复制代码
此时即可正常通过公网ip远程登录到内网的服务器上了。 
4. FRP  注册为系统服务

在前文的介绍中我们知道FRP的解压目录有个systemd 目录,里面存放着将FRP服务注册成服务的文件(虽然我们自己写也可以,但是也完全可以用他们现成的)
进入到systemd 目录:
  1. [root@ceshi frp_0.37.1_linux_amd64]# cd systemd/
复制代码
 (1)公网服务器注册FRP服务端服务


首先停掉之前运行的frp服务(刚才的终端输出页面ctrl + c 或者直接kill掉启动的历程)

服务端的启动下令是frps,在systemd目录下,我们找到frps相干的service文件,一共有两个,我们利用frps.service这个service文件。看下文件内容:

[Unit] 段:
• Description=Frp Client Service:这是对服务的简短描述,分析该服务是用于管理 FRP 客户端的。
• After=network.target:表示该服务需要在网络服务(network.target)启动后再启动。这是因为 frpc 需要依赖网络服务。
[Service] 段:
• Type=simple:指定服务类型为 simple,即 ExecStart 启动的历程将作为主要的服务历程。
• User=nobody:指定以 nobody 用户身份运行 frpc,这种方式可以限定服务的权限,增强安全性。如果需要更高权限的操纵可以修改为其他用户。
• Restart=on-failure:如果服务非常退出,它将会主动重启。
• RestartSec=5s:服务重启之前,等待 5 秒的间隔时间。
• ExecStart=/usr/bin/frps -c /etc/frs/frps.ini:指定实行的下令,用于启动 FRP 客户端。%i 是 systemd 的模板参数,它表示实例化服务时的名字,等同于设置文件名。
• ExecReload=/usr/bin/frps reload -c /etc/frp/frps.ini:指定重载服务时实行的下令,reload 用于重新加载设置。
• LimitNOFILE=1048576:设置服务允许的最大文件句柄数,通常用来提升文件打开的上限,防止在大流量或大量连接时资源耗尽。
[Install] 段:
• WantedBy=multi-user.target:表示该服务在 multi-user 运行级别(常见的 Linux 运行级别)下运行,表明这是一个普通的多用户模式下的服务。
此中我们需要注意的有一点就是service文件的FRP服务端的启动二进制文件和设置文件是放到/usr/bin和/etc/frp目录下,我们现在有两个选择,一是将FRP服务的解压目录下的二进制文件和设置文件移到service文件指定的路径下,二是直接修改service文件的内容,将此中启动的二进制下令和设置文件的路径更换成你FRP服务解压的目录下,然后再将service文件放到 /etc/systemd/system目录下,这两个方法,各人任选其一即可,对FRP服务的利用没有任何影响。
这里我选择第一种方法:
  1. [root@VM-4-15-centos systemd]# mv ./frps.service /etc/systemd/system/
复制代码
首先我们将frps.service 移动到/etc/systemd/system 目录下

然后再将FRP服务端的二进制启动文件和设置文件放到对应的目录下,到FRP服务的解压目录下实行:
  1. [root@VM-4-15-centos frp_0.37.1_linux_amd64]# mv ./frps  /usr/bin/
复制代码

  1. [root@VM-4-15-centos frp_0.37.1_linux_amd64]# mkdir -p /etc/frp   && mv ./frps.ini /etc/frp/
复制代码
然后重新加载 systemd 并启动服务
  1. [root@VM-4-15-centos frp_0.37.1_linux_amd64]# systemctl daemon-reload
复制代码
然后启动服务并查看服务状态:
  1. [root@VM-4-15-centos frp_0.37.1_linux_amd64]# systemctl start frps.service
  2. [root@VM-4-15-centos frp_0.37.1_linux_amd64]# systemctl status frps.service
复制代码

此时已将FRP的服务端注册成服务。
   PS :这里也讲一下为什么不用frps@.service这个服务举行注册服务。
  如果我们查看这个文件的话就会发现启动启动下令那一行会和我们利用的frps.service文件不一样,是当实行 ExecReload=/usr/bin/frps reload -c /etc/frp/%i.ini ,%i 会被更换为实例名称,详细来说,服务文件名是 frps@.service,你可以通过 systemctl start frps@myinstance 启动服务。在这种情况下,%i 就会被更换为 myinstance,对应的设置文件就会是 /etc/frp/myinstance.ini,你可以通过差别的实例名称来利用差别的设置文件,这里咱并不需要这种机动性,以是不选择这个文件。
   (2)内网服务器注册FRP客户端服务

跟上面公网服务注册几乎是一致的,只不过移动的文件是frpc.service ,移动的二进制启动下令和启动设置文件是frpc和frpc.ini。这里直接给出下令、
移动service文件:
  1. [root@ceshi systemd]# mv frpc.service /etc/systemd/system/
复制代码
移动二进制启动下令:
  1. [root@ceshi frp_0.37.1_linux_amd64]# mv ./frpc  /usr/bin/
复制代码
移动启动设置文件:
  1. [root@ceshi frp_0.37.1_linux_amd64]# mkdir -p /etc/frp  && mv ./frpc.ini /etc/frp/
复制代码
重新加载 systemd 并启动服务:
  1. [root@ceshi frp_0.37.1_linux_amd64]# systemctl daemon-reload
  2. [root@ceshi frp_0.37.1_linux_amd64]# systemctl start frpc.service
复制代码
查看frpc服务状态:
  1. [root@ceshi frp_0.37.1_linux_amd64]# systemctl status frpc.service
复制代码

此时内网服务器的FRP客户端也启动完成。
测试利用公网地址的6000端口访问服务也是成功的。

总结

   本文主要介绍了怎样利用云服务器的公网IP和FRP服务来设置NAT穿透的反向署理服务实现公网IP和端口远程登录内网服务器。
  本文内容仅作为参考和学习交换利用,如有错误请贫苦指正。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

涛声依旧在

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表