内外网同时访问技术(全/终极篇)

本文转载自荷风的日志《内外网同时访问技术(全/终极篇)》

(注:此文已发表在国家级知名杂志《网管员世界》2011年3,4期合刊上。)

随着互联网的兴起,很多单位/企业都建立了自己的网络(简称内网),同时也能够访问互联网(简称外网)了。但是由于企业/单位领导担心安全问题,或是本身的技术问题,有好多单位/企业并不能同时访问内外网,而是频繁的换网线或者换IP地址在切换内外网之间切换,非常的不方便。其实,不必如此麻烦!同时访问内外网并非难事。

要同时访问内外网,不得不考虑网络的拓卜结构。最理想的拓卜结构如下:

说它最理想,是因为非常灵活,当增加外网时,无需改变内网结构和增加设备,只需直接入三层交换机,在三层交换机中加入相应的路由就可以了。同时具有强大的网络访问控制能力,在接出的路由器中,可以根据需要对网络访问进行控制。当然这个功能不在本文讨论范围,这里不作赘述。

以上图为例,PC机的IP地址为192.168.0.11,子网掩码为255.255.255.0,默认网关为192.168.0.1。假设内网均以10打头,既10.XXX。XXX。XXX,经由路由器Router3,缺省为访问Internet 经由路由器Router2。则三层交换机作如下设置:

Router(config)#Interface vlan1 (在没划分Vlan的情况下,默认全在Vlan1)

Router(config-if)#Ip address 192.168.0.1 255.255.255.0 (默认网关)

Router(config-if)#No shutdown (启动Vlan)

Router(config-if)#Exit (退出Vlan设置)

Router(config)#Ip routing (启用路由功能)

Router(config)#Ip route 10.0.0.0 255.0.0.0 192.168.0.3 (内网路由)

Router(config)#Ip route 0.0.0.0 0.0.0.0 192.168.0.2 (Internet/缺省路由)

经此设置后,当PC机访问内网时,三层交换机自动经由路由器Router3,否则经由路由器Router2。当然,路由器里要进行相应的路由设置。

在实际当中,有好多单位/企业并没有三层交换机,而是使用二层交换机,其拓朴结构如下图:

因为二层交换机没有路由功能,所以,路由功能必须由PC机实现。在每台PC机上进行如下设置:

点开始→运行,在打开里面输入CMD回车,进入DOS窗口,运行如下命令:

Route add 10.0.0.0 mask 255.0.0.0 192.168.0.3 –p

Route add 0.0.0.0 0.0.0.0 192.168.0.2 –p

在网卡IP设置了默认网关192.168.0.2时,第二句可以不要。至此,实现了二层交换机下同时访问内外网。但值得一提的是,如果内外网网关不在同一个网段时,比如访问内网网段是10.112.164.0/24,网关为10.112.164.1,而访问外网网段是192.168.0.0/24,外网网关为192.168.0.1时,则需要设置双IP。如图:先将外网IP、子网掩码设置好,默认网关设为外网网关,再点高级,添加内网IP地址和子网掩码。

记得别忘了在dos窗口下运行上面那两条加路由的命令:

Route add 10.0.0.0 mask 255.0.0.0 10.112.164.1 –P

Route add 0.0.0.0 mask 0.0.0.0 192.168.0.1 –P

还有一种情况,可能是出于安全考虑,内外网各用一个交换机,进行物理隔离,需要上外网的拉两颗网线。此种组网现实中确实存在,但并不多见。其拓卜结构如图:

此时,如想同时访问内外网,必需采用双网卡,一块网卡接内网网线,设置内网IP地址和子网掩码,默认网关不填(因为一台PC机,只能有一个默认网关)。另一块网卡接外网网线,设置外网IP地址和子网掩码,默认网关设为外网网关,需要注意的是,如果内/外网的IP地址一样,windows会弹出一个警告框,别理它,直接选否。接下来的事情就和上面的一样了,运行那两条加路由命令即可。

以上是我所遇见过的三种网络结构,使用这三种方法,都能很好的解决同时访问内外网的要求。三层交换机组网最好,二层交换机次之,双网线最不好,因此极为少见。

==============================================================================================

用route命令解决双网卡同时上内外网

如题。本来这个方法也是从网上学来的,本不值得一记。但是,在网上学的那篇文章有几处地方讲错了,或者是没讲述明白,所以有N多人照葫芦画瓢失败了!

利用双网卡同时上内外网,必须具备一个条件,那就是内外网的网关必须不同。如果内外网的网关相同的话,无论如何都搞不上的。比如,可以一个是192.168.1.1,一个是192.168.1.2。

以下是网上学到的配置方法:

首先,配置好两块网卡的IP地址,留一块网卡的网关不填。注意:必须留一块网卡的黙认网关不填,否则,两个黙认网关,会使系统混乱,这就是平常配置两块网卡不能同时使用的原因。一般而言,内网访问的地址是固定的,也比较少。应该让内网的网关空着。当然了,哪个牛人硬要把外网的网关留空也可以,只是接下来的路由配置就麻烦了。

其次,配置路由。在命令模式下,输入以下命令:route add xxx.xxx.xxx.xxx mask yyy.yyy.yyy.yyy zzz.zzz.zzz.zzz metric 2 if zzz.zzz.zzz.zzz  其中:xxx.xxx.xxx.xxx是你没填网关的那个网的网络地址(目标地址),可以用0表示任意地址,比如192.0.0.0就表示192开头的所有地址。但需要注意的是,千万别来个0.0.0.0(任意地址),如果那样的话,你的另一个网,将不能用,因为所有的目标都走这块网卡。切记!yyy.yyy.yyy.yyy是你没填网关的那个网的掩码,同样也可以用0表示任意。zzz.zzz.zzz.zzz是你没填网关的那张网卡的网关。这条命令的意思是增加一条路由,它的作用是,当要访问xxx.xxx.xxx.xxx时,明确告诉系统由zzz.zzz.zzz.zzz这个网关出去。如果你的内网有访问多个不同的段,你可以加多条不同这样的命令。

以我的配置为例。我的外网是自动获取IP地址与网关,我的内网IP地址是10.112.164.58,子网掩码是255.255.255.0,网关是10.112.164.3(不填),我的内网访问的是以10和135开头的IP地址,所以,我的路由配置如下:

route add 10.0.0.0 mask 255.0.0.0 10.112.164.3 metric 2 -p

route add 135.0.0.0 mask 255.0.0.0 10.112.164.3 metric 2 -p

"-p"这个参数的意思是永久写入路由表,这样,就不用每次开机后运行这两条命令了。

至此,大功告成。但是很明显,这样做有漏洞:如果某个外网的IP地址是10或者135开头的话,那将访问不了,因为10和135开头的IP地址都由内网网关出去。解决的办法是精确配置每个内网的IP路由而不是用0来通配。但是,这样配置显然太费事,你得把你所有可能访问到的内网IP都得加上去,效率可想而知。这也是为什么不把外网的网关空着来配路由的原因,除非你想控制只能访问指定的几个外网地址。

==============================================================================================

用Route命令同时上内外网的补充

-----单网卡也同时上内外网        

上一篇《用Route命令解决同时上内外网》的文章,适用有两块网卡的情况。如果只有一块网卡就不行了,这时,如果内网外网是混合的,即用的同一个交换机,那么就可以用下面的办法解决。但如果是内外分开的,即内外网各用各的交换机,则无论如何是没办法用一块网卡同时上内外网的。

因为是混合组网的,内外网都是通过同一颗网线实现的,只不过,内外网的IP地址跟默认网关不同罢了。这就为实现一块网卡同时上内外网提供了可能。原理跟上一篇文章是一样的,只不过因为是内外网混合的,把两个IP地址都加到一块网卡上了而已。

要实现一块网卡同时上内外网,除了具备内外网混合组网的条件外,你还必须知道内外网的IP地址和DNS,因为好多外网是自动获取IP地址和自动获取DNS的,一般用户是不知道IP地址跟DNS的。这就需要问网管了。准备就绪,开始!

同上一篇文章一样,缺省网关和dns用外网的,路由加内网的。如果缺省网关和DNS用内网的,路由加外网的也一样,只是费事而已。还是以我的网络为例:我的外网IP为192.168.1.2/254,外网网关为192.168.1.1,外网DNS为:211.139.2.17,为了方便已设为自动获取IP地址和自动获取DNS。内网IP为10.112.164.58,内网网关为10.112.164.3。设置如图。首先将IP地址设为192.168.1.101,子网掩码为:255.255.255.0,默认网关为:192.168.1.1,DNS为:211.139.2.17。关键在于第二步:点高级,再添加一个内网IP地址:10.112.164.58,子网掩码为255.255.255.0。默认网关加不加内网网关是一样的,我实验过。IP设置完毕!

最后一步,加路由:route add 10.0.0.0 mask 255.0.0.0 10.112.164.3 -p

route add 135.0.0.0 mask 255.0.0.0 10.112.164.3 -p

原理、命令、缺陷和解决方法跟上一篇完全一样,不再啰索。OK,搞定!

补充:经过实验,此方法对于两个以上的IP地址和网络一样适用.

还有.子网掩码的格式要和网络目标地址的格式一致,主要是0的个数,比如route add 10.110.0.0 mask 255.255.0.0 .....如果不是,写成route add 10.110.0.0 mask 255.0.0.0 .... 会出错,提示子网掩码不对!这是我在设置三个IP地址跟网络的时候出现的.

此方法在winXP,win2003,winVista,win7中均通过,98/95以及更早的windiws版本没试过,估计不行。另外注意,在vista和win7中,要有足够的权限,如果当前用户为非管理员权限,那么,在运行cmd的时候,要右击以管理员身份运行,否则运行上面的命令的时候会因为权限不够而操作不成功!