使用内网穿透远程连接局域网内无法访问公网的服务器

使用内网穿透远程连接局域网内无法访问公网的服务器

  出于安全性考虑,服务器在部署时被设置为无法访问公网。我们处于和服务器相同的局域网时,可以ssh连接服务器,但除此之外无法连接。而服务器本身没网,向日葵、teamviewer等工具就无法安装在服务器上。本文使用内网穿透技术(NAT),提供两种思路实现在任何有网络的机器上都可以ssh到局域网内的服务器。


1. 原理

   如下图,可能很丑。

在这里插入图片描述

   一台设备和服务器在一个局域网内,这台设备可以ssh到服务器,且可以访问公网。而服务器不能访问公网,且不在局域网内的设备无法ssh服务器。
   内网穿透技术可以实现局域网外的机器连接服务器,如红线所示:①是局域网内设备连接到服务器的行为,例如

ssh 用户名@192.168.100.10 -p 321

   这表明服务器在局域网内的ip是’192.168.100.10,服务器的ssh端口是321。②表示在局域网内设备上,将该设备可以连接的服务器192.168.100.10:321内网穿透至公网。假设192.168.100.10:321被穿透到链接172.156.223.4:3000,那么在局域网外的设备可通过

ssh 用户名@172.156.223.4 -p 3000

访问服务器,这样就实现了远程连接局域网内无法访问公网的服务器。在我开始之前,我一度认为这种方式不可行,因为以前使用NAT的惯性思维,认为NAT只能将局域网内设备自身的端口映射到公网,实际上局域网内设备可以连接到的其他设备端口也可以映射。


2. 实现

   请注意,NAT在可以连接到服务器,且可连接到公网的设备上部署。 我们既可以使用一些服务商提供的NAT服务进行部署,例如NATapp、NAT123、花生壳,也可以在自己的云服务器上部署NAT服务器端,在本地设备部署NAT客户端。

2.1 花生壳实现NAT

   进入贝锐花生壳官网,下载花生壳并安装。安装之后界面如下:
在这里插入图片描述
点击加号新建一条映射,之后右键该映射,点击编辑:
在这里插入图片描述
   内网主机、内网端口字段填写服务器的局域网ip和端口,以第1节的服务器为例,内网主机填写192.168.100.10,内网端口填写321。上图还有两个不可编辑的字段:外网域名和外网端口。这两个信息用于公网上访问服务器。完成后点击确定,在花生壳客户端上打开该条映射,即可在任意有网络的设备上通过以下命令连接服务器:

ssh 用户名@外网域名 -p 外网端口

   请注意,开通花生壳的免费映射需要实名,相信花生壳的注册和使用对于用如题需求的人员不算困难,本文不做赘述。

2.2 云主机部署NAT服务器

  花生壳虽然解决了问题,但其免费映射只有两条,带宽仅有1M,流量1GB,这限制了服务器的连接。部署自己的NAT服务器可以有效缓解这一问题,当然,NAT服务器必须部署在具有公网IP的设备上。我是在腾讯云主机上部署的,当时不到300块买了三年,比较实惠,带宽8M,流量1200GB。腾讯云主机的购买、初始化、实名制等操作网络上有很多教程,本文不做赘述。
  frp是个人NAT的流行工具,本文使用frp搭建NAT服务器。frp搭建非常简单,官网有详细的文档,网络上也有很多搭建教程,本文仅列出主要步骤:

  • 下载frp包
      在官网下载适合云主机和本地设备的最新版本frp包,例如我的云主机是x86架构64位的ubuntu系统,那么我要下载 frp_0.49.0_linux_amd64.tar.gz 并上传到云主机且解压,我的本地可连接服务器的设备是x86架构64位的windows系统,那么我要下载 frp_0.49.0_darwin_amd64.tar.gz 并在本地解压。
  • 部署云主机上的frps
      首先进入frp文件夹,新建配置文件,文件后缀为ini:
[common]
bind_port = 7000

7000是监听端口,可修改,非常简单。然后开启frps服务:

sudo ./frps -c ./你的配置文件名.ini

  • 部署本地设备上的frpc
      这一步相当于在本地设备上不用花生壳,而是用frp的客户端frpc。首先也是进入frp文件夹,新建后缀名为ini的配置文件:
[common]
server_addr = 云主机的ip
server_port = 与frps的监听端口一致

[ssh]
type = tcp
local_ip = 要连接的服务器的ip,本文的例子为192.168.100.10
local_port = 要连接的服务器的端口,本文的例子为321
remote_port = 公网上的映射本机的端口,例如6000

然后启动即可:

./frpc -c ./你的配置文件名.ini

对于windows系统,需要进入cmd运行上述命令。请注意,在上述例子中,云主机的7000、6000端口必须设置防火墙以允许连接,腾讯云控制台的网络规则和ubuntu防火墙均需设置才可使用。


3. 结束

  使用云主机进行NAT的方式更加快速,而且云主机也可以同时进行多项服务,但其安全性可能不如花生壳,请读者知悉。如果读者在阅读本文时感到困惑,可以加我的QQ:1106295085,我将在周日下午进行回复并积极修改本文。

猜你喜欢

转载自blog.csdn.net/qq_39068200/article/details/131266526