从外网访问局域网服务器的六种方法

目录

  • 1 概况
  • 2 为什么局域网的服务器无法在外网访问
  • 3 外网访问局域网的方法
    • 3.1 端口映射
      • 3.1.1 如何获得公网IP
      • 3.1.2 公网IP是动态的怎么办
        • 3.1.2.1 申请固定IP
        • 3.1.2.2 域名服务
          • 3.1.2.2.1 申请域名
          • 3.1.2.2.1 使用路由器进行域名DDNS服务
          • 3.1.2.2.1 使用花生壳进行域名DDNS服务
      • 3.1.3 我的光猫路由器是运营商的不支持这些设置怎么办
    • 3.2 DMZ主机
    • 3.3 建立专用网络
    • 3.4 VPN
    • 3.5 内网穿透
    • 3.6 建立虚拟局域网
  • 4 参考:

1 概况

因为需要在外网访问局域网的服务器,所以研究了下策略。这里做个总结。

2 为什么局域网的服务器无法在外网访问

服务器、电脑之间靠IP地址寻址,目前大部分基于IPV4进行寻址访问。但是因为IPV4的地址数量有限,中国分到的还比较少,所以非常紧缺。
一个解决方案就是在局域网来建立一个内部的网段,这个局域网的只在本网段内能互相访问,无法从外网访问。
局域网的一般都是192.168.X.X这样的。
如下图,为实际情况下比较普遍的一个拓扑关系。
从外网访问局域网服务器的六种方法_第1张图片

(1)光猫+路由器,一般由运营商(移动、电信、联通)提供,可以是光纤接入或者网线接入。一般通过拨号的方式上网:就是在我们办宽带的时候,会给你分配一个拨号的号码加密码,通过在这个光猫+路由器中输入这个账号,即可与运营商连接,实现上网。
(2)光猫+路由器的外口为Wan口,一般为一个公网的IP。特殊情况咱们后面说。然后在他的内部的口为Lan口,有若干个,组成一个局域网,这个局域网是只在这个小范围内互相可以访问,这个局域网内的电脑可以访问外网,但是外网无法访问他们(因为无法路由到他们,按照IP路由的),当然还有别的方法,咱们后面说。一般为192.168.1.X的一个号段,一般会将1开头的作为这个路由器自己内网的一个地址,然后2之后的给其他电脑用。例如咱们例子中的情况,光猫路由器他的内网的地址为192.168.1.1,其他的路由器和电脑都是从2,3这样的。当然这个是可以在路由器中 进行设置的。下面接的电脑的IP可以是静态分配,也可以动态分配。注意:根据子网掩码192.168.1.1
/255.255.255.0,这里的子网为192.168.1.X网段。
所以对于光猫路由器来说,他说横跨两个网的,对应有两个网络的IP,分别为外网(此网段路由器的IP地址为122.15.244.39)和内网子网192.168.1.X网段(此网段路由器的IP地址为192.168.1.1)。
这个光猫路由器,就是靠横跨两个网段,实现了数据从一个网到另一个网的中转的!!
(3)有了光猫路由器后,可以直接将我们的PC机连接到这个上面上网,如图PC机3。当然,这里的连接可以是有线的网线、也可以是无线wifi。这里的连线仅是示意连接关系。
(4)除了运营商提供的路由器外,我们可以自己再购置一些商用的路由器(华为、tplink、华硕等等很多牌子的),可以扩展我们的接入点数量和覆盖范围。例如图中例子,路由器1为扩展的路由器,他的Wan口作为光猫路由器的一个Ip地址,这里是192.168.1.2。
(a)在路由器1的Lan上又形成了一个小局域网,这个网为子网192.168.2.X网段。
(b)与光猫+路由器类似,他也横跨了两个子网,分别是192.168.1.X网段(此网段路由器1的IP为192.168.1.2)和子网192.168.2.X网段(此网段路由器1的IP为192.168.2.1).
(5)服务器,PC机1、2为子网192.168.2.X网段。他们与PC机3分属两个网段。PC机3是无法访问到服务器的。PC机1、2可以访问到服务器。
如果想让PC机3能访问服务器,需要将两个网段做下合并,通过路由器的子网掩码设置,将二者设置成一个网段,则可以访问,如将两个子网的子网掩码设置为255.255.252.0。关于掩码与子网划分可以参考专门的讲解。此处不赘述。
(6)在上述的部署中,局域网内的机器都可以访问服务器,但是外网如果想访问是访问不了的,如图中的PC机X,则无法访问。

3 外网访问局域网的方法

经过研究,有以下几种方法。

3.1 端口映射

这个又叫虚拟映射,这个方法就是在连接外网的路由器上做一个端口映射的设置,具体说将访问该路由器外网地址和特定端口的服务映射到内网的一台电脑的某一个端口上。
具体上面来说,就是在光猫+路由器上做一个虚拟映射的设置,例如,将访问122.15.244.39,端口10101的访问映射到192.168.2.2的端口10101上。
以华为的路由器设置为例,登录华为路由器,示意如下:
从外网访问局域网服务器的六种方法_第2张图片
点击+新增或编辑制前的,进入下面界面:
从外网访问局域网服务器的六种方法_第3张图片
设置完成后,在外网浏览器输入:122.15.244.39:10101,则可以直接访问到服务器。
需要注意的是:
(1)公网映射时,选择的外部端口最好不选择常用的80,21等,因为路由器会屏蔽这些!!!笔者试过,80确实不行!
(2) 服务器需要连接到包含公网IP的服务器上!!

这里虽然说的简单,但是实际当中会有许多问题。下面说明下。

3.1.1 如何获得公网IP

实际当中,你的光猫+路由器的那个IP地址(可以在登录路由器界面后看到)不一定是公网IP,如果不是,则以上无法完成。因为IP地址很有限,所以很多运营商给你的是私网IP。例如,你看到你的那个地址是通过PPOE得来的,就是私有的。可以参见这里https://blog.csdn.net/hongkaihua1987/article/details/106046819。
要获得公网IP,可以找运营商,要求给公网IP,他们会在后台设置,设置完后就是公网的了。

3.1.2 公网IP是动态的怎么办

你的公网IP有了,但是他通常是动态的(登录路由器,如果是DHCP获得的,就是动态的)。所谓动态就是分给你的是变化的,当你路由器重新加电或复位后就会重新分配一个。这就有点傻了,总不能每次去查路由器吧。这里有两个办法:

3.1.2.1 申请固定IP

(1)找运营商,申请一个固定的公网IP。但是有个前提,运营商只对公司分配固定IP,对个人用户是不可以的。同时公司用户必须申请公司宽带,不能是个人宽带。公司宽带的资费要比个人的贵一些。同时,如果想要申请固定IP,还需要额外收一笔费用,按月计费。

3.1.2.2 域名服务

3.1.2.2.1 申请域名

以上麻烦了吧。还有第2个办法,申请一个域名,将路由器绑定域名。然后通过域名来访问路由器。路由器会定期把自己的IP报给域名服务器(由域名服务器的提供商负责,例如花生壳的),访问域名时,先到域名服务器获得IP,然后再用IP访问这个路由器,这样每次动态也没问题了。
为此,你需要先申请一个域名,关于域名,可以是一级的、也可以是二级的,前者要求较高,通常是大的公司,后者个人都可以申请,网上有很多申请的,还有免费的。例如花生壳的,可以有免费的,但是现在貌似也要收费了。可以看这里:
https://hsk.oray.com/parts-center/domain.html/
https://developer.aliyun.com/article/711533?spm=a2c6h.13813017.content3.1.50c7101cJtWp5u
https://cloud.tencent.com/act/domainsales?fromSource=gwzcw.2046487.2046487.2046487&utm_medium=cpc&utm_id=gwzcw.2046487.2046487.2046487&bd_vid=8387152427382289134

3.1.2.2.1 使用路由器进行域名DDNS服务

有了域名后,登录路由器,做设置即可。这里以华为某路由器为例:
从外网访问局域网服务器的六种方法_第4张图片
这里就是用的花生壳的。
我这里就是花生壳提供的二级域名,XXXX.zicp.vip。这样设置完后,再访问服务器就可以这样访问了:http://XXXX.zicp.vip:10101。

如何查看是否域名解析成功了
一方面登陆你得服务试试。另外,可以使用windows得Cmd窗口中得nslookup命令,查一下,就可以看到是否成功。如下图所示:作者查询了一个域名,回复域名得地址。1XX.XX.XX.66得就是我的公网地址了。
从外网访问局域网服务器的六种方法_第5张图片
ps:笔者的这个路由器有点问题,就是过几天时间域名解析就无法使用了,需要在路由器上重新登陆,跟客服电话,据说路由器也是使用的花生壳的插件,可能存在问题。我理解,可能这个路由器上的域名解析模块需要定期与域名解析服务器进行通信,类似于心跳服务,过一段时间,没有通信,域名服务器就不给他提供服务了,使用nslookup可以看下。那个地址那里全是0,就是没有解析到了。

3.1.2.2.1 使用花生壳进行域名DDNS服务

使用花生壳提供域名解析服务
上述是使用路由器上提供的DDNS服务,就是域名解析服务。也可以使用第三方软件提供。比如笔者就使用了花生壳的域名服务的。
花生壳这个软件可以在这里下载:https://hsk.oray.com/
下载后安装到你得局域网中得任何一个电脑上就行。然后运行,登陆你得账户,默认你得账户里就一个壳域名,当然你也可以自己再买一个。
在花生壳里,打开你的那个域名,就可以实现域名的解析了。虽然是在内网,但是会把公网IP解析出来了。你可以通过这个域名来访问任何你内外的东西了。当然,这只是提供了一个域名,具体还需要配合端口映射、内外穿透等方式访问。参见其他。笔者的花生壳见下图。(送得那个默认就得开着,还关闭不了)
从外网访问局域网服务器的六种方法_第6张图片

(a)花生壳还可以以服务的形式在后台跑。
(b)花生壳主要是用来内网穿透的,当然也有域名解析的功能。这个功能是永久免费的。(买域名是另外一回事。)花生壳的多个收费版,主要只得内网穿透功能,后面说。

3.1.3 我的光猫路由器是运营商的不支持这些设置怎么办

这个肯定是运营商的,运营商的里面也会由上述的支持,其实很多路由器一般都会有的,这些功能一般也都会有的,具体可能稍有差异。
但是运营商的很多是功能比较弱,或者限制比较多,造成我们无法随心所欲的干这些事情。那怎么办呢?我的二级路由器,如上图中的路由器1是商用的,功能也很强大。能不能用他呢。
答案是不能直接这样用,因为他没有公网IP!!
但是,可以有变通方法。就是让光猫路由器只有光猫功能,他的路由器使用桥接模式。
在此模式下,我们不再在光猫路由器上拨号上网,而是在上面的路由器1上拨号上网,这样操作后,路由器1就有了公网的IP,然后,就可以随心所欲的设置了。
最后要说明的是,这个桥接模式的设置需要运营商在他们后台那里设置(跟获取公网IP的策略类似),不能咱们在路由器上设置的!

3.2 DMZ主机

这个说白了就是在路由器设置,让某一个主机直接全部暴漏在外网中。
在路由器中设置,本人没选择,这个风险有点大!具体大家参考吧。

DMZ 区可以理解为一个不同于外网或内网的特殊网络区域,DMZ 内通常放置一些不含机密信息的公用服务器,比如 WEB 服务器、E-Mail 服务器、FTP 服务器等。这样来自外网的访问者只可以访问 DMZ 中的服务,但不可能接触到存放在内网中的信息等,即使 DMZ 中服务器受到破坏,也不会对内网中的信息造成影响。DMZ 区是信息安全纵深防护体系的第一道屏障,在企事业单位整体信息安全防护体系中具有举足轻重的作用。

3.3 建立专用网络

大的公司,要运营商建立专线,将两个或几个地方连接起来。但这个成本贼高!

3.4 VPN

VPN,虚拟专用网络。介绍网上搜索一下即可。
简单说,他可以使用硬件来搭建、也可以纯软件来搭建。
(1)硬件搭建的话,类似与上面的那个路由器,直接将光猫路由器桥接掉,然后他来拨号获得公网IP,然后两个网一手托两家即可。
实际当中,许多路由器就有这个功能,当然也可以使用自己的某一台电脑来完成。还有专门的公司来做这个,生产个专用的硬件盒子。
这里的PC机X需要上网时,就需要有一个专门的客户端登录,可以是客户端软件,也有做成网页吧账号登录。
(2)这里必须有公网IP。且如果公网IP为动态的话,同样需要域名来解析!!类似上面,不赘述。
国内比较多的专门的供应商有:深信服、奇安信等。一般大的有自己的域名服务,免费的,如深信服。

3.5 内网穿透

这个典型代表就是花生壳。这里是一个软件,在服务器上装一个软件,然后做设置。花生壳给你一个域名,将这个域名与你的一个服务进行映射。
此后别人访问这个域名即可,实际上这个域名,在花生壳的服务器上做了一次解析,同时进行了数据的中转(他们是这么声称的)。
他们有免费的,但是还有映射数量,带宽的限制,想实用估计得收费了。具体可以参见:https://hsk.oray.com/
后来,他们也有了自己的硬件了。

3.6 建立虚拟局域网

典型产品:蒲公英,免费的ZeroTier One。
这个的基本逻辑,有点类似于腾讯会议之类的逻辑。就是在第三方服务器上申请一个虚拟网络ID,然后组网的几个电脑都安装软件,然后并输入这个ID,然后,服务器与软件一起,为这些软件都建立一个虚拟的网络IP(注意,此时你的电脑上有两个IP了!设置后windows会提示你有两个),然后这些电脑的的虚拟网络IP是一个号段的,有第三方服务器负责路由、中转、穿透你原来的实际网络,就是这样!!但这个有受服务器带宽的限制!

ZeroTier One参考这里:https://www.jianshu.com/p/eefddb256ad7
https://www.jianshu.com/c/2108f5087466
https://www.jianshu.com/c/dde20635ae46

4 参考:

【1】https://www.51-n.com/t-4591-1-1.html
【2】https://blog.csdn.net/hongkaihua1987/article/details/106046819

你可能感兴趣的:(网络运维,服务器,网络,运维)