新闻资讯

内网转发工具哪家强?花生壳告诉你答案

2019-05-24

在我国,由于网民众多,运营商无法保证为每一个宽带用户提供全球唯一的公网IPv4地址。因此很多用户会发现通过路由器端查看到的WAN端IP与百度“IP”关键词所得到的IP不一致,并且前者的IP为一个私有IP。

而还有一些情况下,公网IP比较昂贵,企业虽然本身也持有少量的独立的公网IP,但是由于成本限制无法为企业内每一台主机都提供一个公网IP,或者内网并不是所有服务都需要暴露到公网中进行访问,那么企业有可能就会使用NAT技术将大量的内网IP通过一定规则映射到公网IP上。而最常见的其中一种技术就是NAPT,也叫“网络端口地址转换”。因为一般一个服务都是通过一个端口来提供,因此通过这种方式可以将特定的服务通过特定的规则开放到少量的公网IP上。

NAPT原理

简单来说,在NAT网关上会有一张映射表,表上记录了内网向公网哪个IP和端口发起了请求,然后如果内网有主机向公网设备发起了请求,内网主机的请求数据包传输到了NAT网关上,那么NAT网关会修改该数据包的源IP地址和源端口为NAT网关自身的IP地址和任意一个不冲突的自身未使用的端口,并且把这个修改记录到那张映射表上。最后把修改之后的数据包发送到请求的目标主机,等目标主机发回了响应包之后,再根据响应包里面的目的IP地址和目的端口去映射表里面找到该转发给哪个内网主机。这样就实现了内网主机在没有公网IP的情况下,通过NAPT技术借助路由器唯一的一个公网IP来访问公网设备。

先说说家庭宽带的情况吧。家庭宽带如果没有公网IP,那么意味着你在本机上监听的任何端口,都只能在本机网卡所在的网络中访问,这个网络一般是路由器LAN端所在的网络。如果没有做特定的映射规则,那么路由器WAN端所连接到的网络将无法正常访问该主机提供的服务。

如果这种情况下想要让WAN端(如果运营商为你分配了公网IP,那么WAN端所连接到的网络通常就是公网),那么需要在路由器上做端口映射。比如说路由器的LANIP为192.168.1.1,WANIP为23.23.23.23,我想让内网192.168.1.2主机的80端口提供的HTTP服务器直接能够在公网中通过http://23.23.23.23 访问,那么就要将192.168.1.2:80 映射到23.23.23.23:80上。

但是通常情况下,运营商是不会给普通用户公网IP的。那么用这种方法映射,在公网仍然是无法访问的,因为你的路由器WAN端连接的又是运营商更上一级的路由器LAN端,严重一点,甚至是层层连接最后才到公网,这种行为称作流量穿透。国内某电,某动的宽带就有大量这种行为。通过流量穿透的方式来提供的宽带服务,看似便宜,实则影响很大,由于大家公用一个IP,可能会导致很多网站的反SPAM策略伤及无辜,或者内部为了节省带宽,使用缓存,导致一些不该缓存的敏感安全页面被缓存起来,甚至导致部分网站缓存失效完全打不开。

有的人发现,即使自己有公网IP,但是仍然无法通过常规方法架设服务器,这是怎么回事呢?这是运营商为了防止个人随意开设各种非法服务,也防止黑客通过扫描器进行抓鸡和批量扫描,将一些常用端口进行了封禁,比如说我们这的中国电信就将80,8080等端口封禁了。这样封禁,虽然一定程度上保证了我们的网络安全,比如说前段时间的勒索病毒正因为国内大部分用户没有独立的公网IP,并且操作系统最容易爆发漏洞的一些,135,139等端口被运营商封禁了,使得国内个人家庭电脑中招的概率小了很多;但是导致即使有公网IP,也无法使用常用端口向外网提供服务,只能更换到其他端口。这样有什么不好呢?比较典型的问题就是WEB网站默认使用80端口,那么在输入网址的时候可以不用带上端口号,显得比较美观。

解决方案

如果遇到了上述情况,我们该如何解决呢?

前面我们通过NAPT原理得知:NAPT实现了内网主机在没有公网IP的情况下访问公网主机。那么我们可以这样做:假设公网IP为23.23.23.23,内网IP为192.168.1.2。公网主机先监听80端口,监听这个端口是用于向外部提供一个HTTP服务,80是WEB服务器的默认端口。同时其他任意一个端口(这里我们假设为7777),监听这个端口是用于让内网服务器主动连接进来打通一个隧道。接着内网再主动向公网主机的7777发起一个请求,这样内网就成功与公网主机建立了一个连接通道。然后当有任何客户端主动连接公网的80端口时,公网接收到连接请求之后马上把这连接请求通过先前建立好的隧道转发到内网主机,内网主机接收到来自隧道的数据包后再主动连接内网主机自身的80端口,连接成功之后将数据包原封不动地转发数据包给80端口,待HTTP服务器程序处理完这个数据包,生成了响应报文之后再原路转发回去,最终到达公网的80端口,然后返回给最开始请求公网服务器80端口的客户端。

看起来是不是比较绕呢?用花生壳内网版内网穿透工具就能完美的解决这样的问题,花生壳动态域名是专门提供动态域名解析服务的软件,其中端口映射、内网穿透的功能算是最实用也是需求最广泛的了。像我们个人做网站建设、视频监控,或者是企业使用FTP、OA、ERP等选择花生壳做解决方案都是不错的。