局域网控制技术
最近经常看到有朋友问道到如何限制局域网里用户上网的问题,我做了一下总结,以后大家看这个帖子就行了,有什么补充的在下面跟帖子吧。
限制用户上网其实就是对局域网的一个控制问题,基本可以分为限制IP、限制用户和限制流量。
1.限制IP是最常用的一种手段,适用范围也较广,在使用代理/路由服务器、宽带路由器/防火墙都可以使用。
在代理/路由服务器软件中一般都有关于控制IP上网的设置,例如Sygate,ISA Server,具体设置方法这里就不写了,你可以参考软件的帮助文档,在网上也可以找到很多相关的文章。我要提一点的是,如果你使用了WIN2K/XP自带的Internet共享,可以安装一个防火墙软件,利用防火墙软件来限制该服务器与其它机器的通讯,也可以达到控制部分机器上网的目的。
目前的很多宽带路由器/防火墙都带有基本的访问控制列表(ACL)功能,通过简单的设置就可以对流量进行过滤,对允许上网的IP的数据包进行转发,而不允许上网的IP的数据包则被丢弃。一般情况下,路由器都是按照顺序查找的原则,即当路由器接收到数据包后,先从第一条规则开始匹配,如果符合条件则按照该规则设定的转发或者丢弃;如果不符合,则查找的二条规则,以此类推,知道最后一条。这里需要注意的是,有些路由器对于不符合任何规则的数据包按照转发处理,有的则是转发,而防火墙对于不符合规则的一律按丢弃处理。因此,在设置路由器时,一定要先加允许上网的规则,再加不允许的规则,最后根据具体情况,看是否需要加一个禁止所有IP上网的规则,否则无法达到控制的目的。而防火墙则仅加入允许的规则就可以了。下面是一个例子,没有任何语句,只是打个比方:
条目 动作 源地址/掩码 目的地址
1 允许 192.168.2.22/255.255.255.255 0.0.0.0
2 禁止 192.168.2.0/255.255.255.224 0.0.0.0
3 允许 192.168.2.0/255.255.255.0 0.0.0.0
4 禁止 0.0.0.0/0.0.0.0 0.0.0.0
上面的例子可以实现192.168.2.0-192.168.2.31都不可以上网,但其中的192.168.2.22又可以上网,其余的192.168.2.32-192.168.2.255都可以上网,除了这个子网,其余又都不能上网。可以看到,加入规则的先后顺序基本是按照范围大小来确定的,范围越小,越先加入,路由器也就越先匹配。这里面涉及的部分内容不一定被所有的宽带路由器所支持,不确定的话,你可以试试先。
对IP的控制比较容易实现,但是对于动态获取IP地址的网络无法精确控制,而且用户还会自行将IP地址更改到允许上网的范围,从而绕过控制列表,甚至还会造成IP地址冲突,这就涉及到MAC地址与IP的绑定问题。
很多朋友很青睐MAC地址和IP的绑定,认为很好用。其实这种静态ARP技术有很大的局限性,而且效果也不好。MAC与IP地址绑定可以一定程度防止用户私自更改IP地址,之所以说一定程度,是因为此中方法也不能杜绝更改IP的现象,原因后文有述。
因为以太网通讯最终是靠着MAC来进行的,因此,将客户机网卡的MAC地址与其IP地址一一对应,那么用户再更改IP地址将无法使用局域网,更不用提上互联网了,其实现原理我简单说一下:
在每台计算机中都有一张ARP表,该表记录着曾经通讯过的其它机器MAC地址与IP地址的对应关系,下次在通讯时,会在此表中按照目的机器的IP地址查找到其MAC地址,然后与之建立连接。交换机会自动学习网络中其它机器的MAC地址,从而建立起自己的与计算机中相类似的ARP表,通讯时也要按“表”索“机”。上面提到的这些ARP表都是动态的,不定时更新的,每当有计算机开机或关机,该表都会被更新。部分路由器/交换机支持静态的ARP技术,即可以手工输入这些ARP表项,将计算机的MAC地址和IP固定,那么该机器的ARP表项就不会被更新,当用户更改了IP后,数据包传到交换机,交换机会按照目的MAC地址将数据包转发到目的机器,但是当交换机收到目的机器回应的数据包时,会发现数据包中IP和MAC的对应关系与本地ARP表不符,但是,如果是一个二层交换机,它不会去理会这种错误,因为它是靠着MAC地址来工作的,IP对它来说没有任何作用,因此该数据包会正常到达发起连接的计算机,通讯可以正常建立。那么如果是三层交换机呢,那要分两种情况,如果这两台计算机在同一子网内(或者是同一VLAN内),那么通讯仍然可以建立(理由同上);如果不是在一个子网(或者VLAN),那么通讯连接就会失败,因为数据包要跨越三层,最终按照IP来查找目的机器的MAC地址,这时上面的错误就会终止数据包的传输,因此如果你的绑定是在交换机上做的,而且要对同一子网(VLAN)做限制的话,你基本会很失望的,这种技术只有在路由器/三层交换机上才有意义(如果你的宽带路由器支持的话,静态ARP倒是一个不错的选择)。
静态ARP有很大的缺点,首先,如果是一个很大的局域网络,要收集上百台机器的MAC地址和IP,还要一一手工输入路由器,对于网管来说是一个极大的考验(考验你的打字速度J)。其次,计算机的MAC地址也不是不能更改的,现在也有很多傻瓜式的软件,点几下鼠标就会把你的上百条记录的努力付之东流。
2.限制用户,用户基本上是指Windows里的域用户,你可以指定哪些用户可以上网,哪些不可以,但是,这种方法只能用在使用Windows计算机做为代理/路由服务器上网的局域网里,而且要建立一个完整的域,客户端还要通过输入用户和密码才能登陆,进而上网,比较适合中型的局域网络,通过域的管理还可以进行其它的控制。能够与Windows用户帐号结合的代理软件有Wingate,路由网关型软件有ISA(也可以做代理)。限制用户的好处是你不必管用户的IP地址是多少(当然你也可以在DHCP中为可上网的用户分配固定IP地址),而且有一层用户名/密码做保护,要盗用也不是那么容易。
3.限制流量,限制流量可以在一些代理/路由服务器软件上实现,如Sygate、ISA都可以做到,因为我没有实际去做,不知道具体效果如何。
在某些交换机上也可以实现端口限速,我知道Cisco2950以上级别交换机可以做到以1M为单位的限速,其它牌子的我不是很清楚。
上面所有的方法其实都有一个弱点,无法防止内部非法的代理服务器,所谓非法,就是在可以上网的机器上装有代理软件,不可上网的用户通过此代理上网。非法代理实际上是很头痛的事情,这种封包没有任何特殊性,而且代理服务器的端口可以任意修改,用访问列表来控制几乎是不可能的,唯一的办法就是彻底断绝可上网与不可上网用户的通讯。
下面我给出一种目前来说比较完善的局域网方案,基本可以控制住机器的上网,图在最后,使用了三层交换机,VLAN划分和ACL,同样也适用于其它目的的网络控制。
其中VLAN1:192.168.1.0是可以上网的,VLAN2:192.168.2.0是不可以上网的,VLAN3:192.168.3.0是服务器。
VLAN1与VLAN2通过访问列表不禁止任何通讯;VLAN1和VLAN2都可以和VLAN3通讯。
访问列表的设置:
条目 动作 源地址/掩码 目的地址
1 禁止 192.168.1.0/255.255.255.0 192.168.2.0
2 禁止 192.168.2.0/255.255.255.0 192.168.1.0
将此列表应用在接口VLAN1和VLAN2上,启用VLAN间路由。
VLAN1和VLAN2之间用户较小的文件传输可以通过局域网的Email服务器,较大的文件可以在服务器上建立FTP服务。
这样,VLAN2的用户无论如何更改IP,也不能达到上网的目的,而且也不能通过VLAN1内的非法代理上网,并且通过VLAN3的服务器可以实现文件共享,可以说是一个较为理想的方案。
最后我要说的还是,技术不是万能的,要依靠完善的管理手段才能发挥最大作用,建立完善的网络操作规范,并且严格执行,不但对网管是一个福音,而且是一个合格网管的基本要求,对企业来说也是有利无弊的~~