找回密码
 注册帐号
查看: 4039|回复: 0

如果配置NAT来做IP分享器呢?

[复制链接]
发表于 2019-8-2 15:49 | 显示全部楼层 |阅读模式

我想,大家对于NAT一定是有所耳闻才对,不过,到底什么是NAT呢?NAT其实是Network Address Translation的简写,字面上的意思是『网路位址的传送』,他主要的功能就是在提供内部私有网路的电脑之频宽分享了。简单的说,NAT的功能就是『IP分享器』咯!(注:NAT主机的功能相当的多,不过,这里我们仅说明频宽分享的部分!)。

NAT的功能

我们由网路基础当中知道,要能够连接上Internet必须要具有『公共IP (Public IP)』才行,内部私有IP (Private IP)是不能直接与Internet进行资料沟通的。好了,今天假设您是一家公司的主管,或者是一间学校的资讯主任,而且您所负责的单位内有20部电脑好了,这20部电脑都需要能够连上Internet ,并可以进行任何Internet的服务要求,请问您是否需要具备有20个公共IP呢?如果真的要提供20个公共IP的话,以最经济的价格来说,我们可以申请Seednet的512/64 (下载/上传)拨接制ADSL ,每个专线都可以具有五个IP ,因为我们有20部主机,所以就需要四条电话线~呵呵!怕了吧!光是接线与申请ADSL的流程就会让人崩溃,更不用说申请到之后还需要在每一部电脑上面设定拨接、管制电脑使用性、进行防毒等等的工作,光是用想的,就已经很头大了,更不用说实际去作.....

那么应该要怎么办呢?比较聪明的朋友已经想到要去买IP分享器来分享网路频宽了!那么Linux是否能够达到IP分享器的功能!?当然可以啦!那就是NAT主机的能力之一啰!我们在之前的Router设定当中,提过路由的概念了,封包的传送主要是透过路由的资讯,但是,私有路由是不能直接与Internet沟通的啊!因此用Linux作为Router时,如果Linux主机本身就是仅有私有IP ,自然也就无法直接连接到Internet上面去了。

到底该如何是好?呵呵!这个时候就得要回头谈一谈TCP封包的概念咯。由网路基础章节里面提到的TCP封包的架构图,我们可以发现TCP封包里头有来源与目的地的IP及port的资讯在Header里面,那么如果透过某些技术,来改变TCP封包的header呢?如果能够将TCP封包的来源IP由本来的Private IP变成Public IP的话,不就可以连接到Internet了吗?!呵呵!没错没错!谈到重点了!就是这样啦!NAT主机的重要功能之一就是将来自内部Client端电脑封包的Header的IP 『伪装』成公共IP ,而提供Client端连上Internet的一个方法!(注:当然啦, IP分享器也是使用同样的道理!)。那么Linux是用什么机制达到这样的功能?还记得简易防火墙设定当中提到的iptables吧?!iptables可以进行封包的分析,当然,他还可以进行封包资讯的修改呢!那么整个流程是如何呢?如下图所示,当我的区域内的具有192.168.1.100的client要对外连线的时候:


                               
登录/注册后可看大图

这个client 的gateway 设定为NAT 主机,所以当要连上Internet 的时候,该封包就会被送到NAT 主机啦,这个时候的封包Header 之source IP 为192.168.1.100 喔;

而透过这个NAT 主机,她会将client 的对外连线封包的source IP ( 192.168.1.100 ) 伪装成ppp0 ( 假设为拨接情况)这个介面所具有的公共IP 啰,因为是公共IP 了,所以这个封包就可以连上Internet 了!同时NAT 主机并且会记忆这个连线的封包是由哪一个( 192.168.1.100 ) client 端传送来的;

由Internet 传送回来的封包,当然由NAT 主机来接收了,这个时候, NAT 主机会去查询原本记录的路由资讯,并将目标IP 由ppp0 上面的公共IP 改回原来的192.168.1.100 ;

最后则由NAT 主机将该封包传送给原先发送封包的Client 啰!

如果是在iptables的内建table当中,与NAT有关的就是nat table的POSTROUTING那个链了!就是简易防火墙当中的图九的示意图喔!也就是说,整个封包其实只有经过NAT主机的iptables机制在伪装IP与修改路由资讯而已,并没有进入NAT主机内部啦!^_^!由上面的资讯我们可以知道一件事,那就是:『您的NAT主机至少需要有一个私有IP与一个公共IP才行』喔!而且,『NAT主机,一般来说,也是一部Router喔!』如果Router两边都是私有IP或都是公共IP时,Linux主机只要有Router的功能即可,若是两边分别为公共与私有IP时,才需要以iptables来启动NAT的功能。

其实NAT的功能也可以简单的这样想:『当您在私人赛车场上比赛的时侯,不必管您是否有注册过的车牌﹔但开到马路上却非得要一个监理站核发的车牌不可。如果您要将跑车开到街道上,必须要改挂一个合法的车牌。这时候,赛车场老板(NAT)自有办法帮您弄一个就是了。』!这样可以了解了吗?

连线示意图:

由上面的说明您应该可以了解了吧?!没错,您的NAT主机上面,至少需要『两块网路介面』请注意,鸟哥说的是『网路介面』而不是『网路实体介面卡』呦!以拨接为例,由于拨接之后会产生ppp0这个拨接后产生的网路介面,加上原本的实体网路介面,那么自然就有两个以上的网路介面啰!这么说应该很容易了解了吗?底下我以两块实体网路介面卡的布线情况作为连线的示意图,至于一块网路卡进行NAT的图示,将在待会说明啰。


                               
登录/注册后可看大图

图一、两块网路卡的NAT 主机配置

对于Server端来说,我们仅仅设定一些简单的防火墙规则,而且在原本的iptables.rule当中还预设开启了许多的埠口,所以其实这样的一个主机并不是十分的安全的,因此,您最好还是自行将iptables.rule内的最后面的几个开放的埠口给他注解掉才好呐!(如果您的NAT主机仅想要负责频宽分享的功能的话!)https://www.xinruiyun.cn/nat/1755.html


您需要登录后才可以回帖 登录 | 注册帐号

本版积分规则

Archiver|小黑屋|手机版|外贸之家

GMT+8, 2024-10-19 14:29

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表