论文部分内容阅读
怎样用低成本来建设高质量的中小学校园网络是我国中小学教育信息化推进过程中必须要解决的问题。笔者根据多年实践经验阐述了如何用较少的投入解决多Vlan环境下中小学校园网接入Internet这个普遍的问题。
一、提出问题
目前,我国大部分中小学都有了自己的校园网,其中大部分都已经接入了互联网。一个正规合理的校园网一般出于安全、稳定等方面的考虑,都要划分Vlan(虚拟专用网)。Vlan的划分带来了另外一个问题,那就是多个Vlan怎样才能接入Internet。目前,我国的公网IP地址已经非常紧张,一般中小学只能得到一个或几个公网IP,校园网中的客户机根本不能通过公网IP来访问互联网。
二、分析问题
多Vlan通过路由器或防火墙Nat接入Internet的方法是最常用的解决方案,但是一台路由器和一台防火墙少则几万,多则十几万或几十万,这对于我国大多数中小学来说是一个不小的投入。如果有更深入的需求,还需要更多的投入。这里我们根据多年的实践和管理校园网的经验,向大家推荐一种低成本且适用多Vlan校园网接入互联网的方式。这种解决方案主要是用Linux服务器来取代路由器和防火墙,用Linux系统自带的免费软件Iptables、Squid等来实现相关功能。
三、具体解决方案
(一)方案一:二层交换环境 Linux服务器
该方案适合规模比较小,Vlan数目较少(一般不要超过4个)的校园网络环境。
我们假设某校园网被划分为两个Vlan(Vlan1和Vlan2),有一个公网IP,要求Vlan1和Vlan2都能访问Internet,并且允许Vlan1与Vlan2相互访问。
该网络环境的需求我们完全可以用二层交换环境 Linux服务来满足,其网络拓扑图如图1所示。
1.原理
该方案是在二层交换机上划分Vlan,每个Vlan具有一个私网地址,Linux代理服务器根据Vlan的数目来确定网络接口卡的数目,每个网络接口卡在不同的Vlan中,每个网卡根据所在的Vlan的网络地址,被指定相应的IP地址,即该Vlan中的客户机的网关。某个Vlan中的客户机要想访问Internet网络,它首先去找它所在Vlan的网关,即Linux代理服务器的一个网卡所指定的IP地址,Linux服务器再把请求包通过相应的内部机制转发到与外网Internet相连的网卡即外网地址,从而实现对外网的请求,相应的响应沿着同样的路径返回到客户机,从而实现客户机的Internet访问。
2.具体实现
以图1的Vlan1为例,Vlan1中某台客户机的IP地址为:192.168.1.100,网关为:192.168.1.1即“网卡1”的IP地址。Linux服务器与Internet相连的网卡我们也指定了相应的公网配置信息,这里主要是通过Linux内核的包转发机制和Iptables Squid实现透明代理使内网客户机访问到Internet。
(1)Linux服务器Iptables配置的主要脚本
echo"1">/proc/sys/net/ipv4/ip_ forward//打开Linux内核包转发功能
iptables -t nat- A PREROUTING -p tcp -m tcp -s 192.168.1.0/24--dport 80 -i eth1-j REDIRECT--to-ports 8080//所有来自192.168.1.0网络进入eth1(网卡1)的TCP包并访问目标端口80(一般是http请求)的请求被重定向到端口8080(即Squid的监听端口)
iptables-t nat-A POSTROUTING-s 192.168.0.0/24-o eth0-j SNAT--to 61.180.148.50
//其他非目标80端口请求被转换至61.180.148.50
(2)Linux服务器squid2.6配置主要脚本
http_port 192.168.1.1:8080 transparent
//Squid通过192.168.1.1的8080端口实现http请求监听,并实现透明代理。
cache_mem 50 MB//内存缓存空间为50M
cache_dir ufs /var/spool/squid_st 100 16 256
//网页缓存路径及目录结构
cache_access_log /var/log/squid/access_st.log
//做访问日志
acl our_networks src192.168.1.0/24
http_access allow our_networks
http_access deny all
//实现访问控制
其他配置(略)。
Vlan1中的某个客户端需要指定明确的IP地址如:192.168.1.100,子网掩码:255.255.255.0,网关:192.168.1.1,当地DNS服务器地址:202.97.224.69,此时该客户机就可以访问互联网了,其所有80端口的http网页浏览请求由Squid代理来完成,其他非网页请求通过Iptables地址转换完成上网。
由于Vlan1和Vlan2直接连接在Linux服务器上,只要网卡1和网卡2的IP地址配置正确,每个Vlan中的客户机配置正确,那么两个Vlan间就可以通讯,因为Linux服务器把两个Vlan直接连接了起来,这样Vlan间的通讯我们也通过Linux服务器轻松解决了。
(二)方案二:三层交换环境 Linux服务器
该方案适合规模较大、Vlan数目较多、Vlan间通讯要求比较苛刻的校园网络环境。
假设我们有几十个甚至是上百个Vlan,而且要使Vlan间能够通讯,并且这些Vlan都要接入Internet。我们不可能在Linux服务器上安装那么多网卡。此时,我们需要借助于三层设备,其中三层交换机是一个较佳的选择,使Vlan间的通讯通过三层交换的路由功能来实现,而各个Vlan的Inernet接入任务通过Linux服务器来完成。我们可以假设一个这样的网络环境:有若干个Vlan,我们分别给每个Vlan分配一个c段私网地址,并且我们有一个公网IP地址61.180.148.50。其拓扑图如图2所示。
1.原理
我们划分若干个Vlan,这些Vlan主要供普通的客户机接入使用。我们再划分一个Vlan,其网段为10.0.0.0,供Linux服务器使用,即Linux服务器被划分到一个独立的Vlan中。我们通过三层交换机的路由功能把各个Vlan连接起来,这样各个Vlan间的通讯就解决了,那么各个Vlan中的普通客户机连接到Internet我们该怎么解决呢?我们需要在三层交换机中加上一条静态路由使所有的请求最后指向Linux服务器所在的Vlan的“网卡1”的地址,在Linux上做Nat地址转换和Squid代理,从而完成各个Vlan的Internet接入。
2.具体实现
Vlan1的网址为192.168.1.0,我们在路由上分配一个子接口在Vlan1中,再指定一个IP地址作为该Vlan的网关,如:192.168.1.1。其他Vlan配置类似。
Vlan0的地址为10.0.0.0,我们在路由模块上为其分配一个子接口,该子接口的IP地址为10.0.0.1,Linux服务器的“网卡1”在该Vlan0中,其IP地址为10.0.0.2。
此时,各个Vlan之间就可以通讯了,因为各个Vlan都直接连接到了路由模块上,但是各个Vlan(Vlan1~Vlann)中的客户机仍无法访问Internet。首先,我们需要在路由模块上加一条静态路由:ip route 0.0.0.0 0.0.0.0 10.0.0.2 1 low (默认路由),它的作用是发送那些目标网络没有包含在路由表中的数据包,这样所有访问Internet的请求被发往了Linux代理服务器。Linux代理服务器还是采用Iptables Squid来实现代理Internet接入,其配置和方案一的配置类似。其次,因为在Linux服务器中还缺少相应的路由信息,我们还需要手动把要上网的Vlan地址加到Linux服务器的路由表中,其实现命令如下:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.2
有多少Vlan就加上多少条路由即可,这样各个Vlan的客户机就可以顺利的经过三层交换机通过Linux服务器访问Internet了。
实践证明这种解决方案非常适合中小学,它能满足现在我国中小学的网络需求,运行非常稳定。用Linux服务器代替路由器和防火墙,没有削弱功能,反而Squid的缓存功能又能节省带宽,提高上网速度,同时又可以为我国中小学节省大量资金。此外,Linux服务器还可以作为其他应用服务器来使用,比如:用Linux的Iptables来构建防火墙,用Squid做上网日志存储、上网信息过滤等等。这些对于我国的中小学来说有着非常现实和积极的意义。
参考文献
[1]http://fanqiang.chinaunix.net/adm/net/2005-07-08/3379.shtml.
[2]http://linux.chinaunix.net/bbs/viewthread.php?tid= 390173
一、提出问题
目前,我国大部分中小学都有了自己的校园网,其中大部分都已经接入了互联网。一个正规合理的校园网一般出于安全、稳定等方面的考虑,都要划分Vlan(虚拟专用网)。Vlan的划分带来了另外一个问题,那就是多个Vlan怎样才能接入Internet。目前,我国的公网IP地址已经非常紧张,一般中小学只能得到一个或几个公网IP,校园网中的客户机根本不能通过公网IP来访问互联网。
二、分析问题
多Vlan通过路由器或防火墙Nat接入Internet的方法是最常用的解决方案,但是一台路由器和一台防火墙少则几万,多则十几万或几十万,这对于我国大多数中小学来说是一个不小的投入。如果有更深入的需求,还需要更多的投入。这里我们根据多年的实践和管理校园网的经验,向大家推荐一种低成本且适用多Vlan校园网接入互联网的方式。这种解决方案主要是用Linux服务器来取代路由器和防火墙,用Linux系统自带的免费软件Iptables、Squid等来实现相关功能。
三、具体解决方案
(一)方案一:二层交换环境 Linux服务器
该方案适合规模比较小,Vlan数目较少(一般不要超过4个)的校园网络环境。
我们假设某校园网被划分为两个Vlan(Vlan1和Vlan2),有一个公网IP,要求Vlan1和Vlan2都能访问Internet,并且允许Vlan1与Vlan2相互访问。
该网络环境的需求我们完全可以用二层交换环境 Linux服务来满足,其网络拓扑图如图1所示。
1.原理
该方案是在二层交换机上划分Vlan,每个Vlan具有一个私网地址,Linux代理服务器根据Vlan的数目来确定网络接口卡的数目,每个网络接口卡在不同的Vlan中,每个网卡根据所在的Vlan的网络地址,被指定相应的IP地址,即该Vlan中的客户机的网关。某个Vlan中的客户机要想访问Internet网络,它首先去找它所在Vlan的网关,即Linux代理服务器的一个网卡所指定的IP地址,Linux服务器再把请求包通过相应的内部机制转发到与外网Internet相连的网卡即外网地址,从而实现对外网的请求,相应的响应沿着同样的路径返回到客户机,从而实现客户机的Internet访问。
2.具体实现
以图1的Vlan1为例,Vlan1中某台客户机的IP地址为:192.168.1.100,网关为:192.168.1.1即“网卡1”的IP地址。Linux服务器与Internet相连的网卡我们也指定了相应的公网配置信息,这里主要是通过Linux内核的包转发机制和Iptables Squid实现透明代理使内网客户机访问到Internet。
(1)Linux服务器Iptables配置的主要脚本
echo"1">/proc/sys/net/ipv4/ip_ forward//打开Linux内核包转发功能
iptables -t nat- A PREROUTING -p tcp -m tcp -s 192.168.1.0/24--dport 80 -i eth1-j REDIRECT--to-ports 8080//所有来自192.168.1.0网络进入eth1(网卡1)的TCP包并访问目标端口80(一般是http请求)的请求被重定向到端口8080(即Squid的监听端口)
iptables-t nat-A POSTROUTING-s 192.168.0.0/24-o eth0-j SNAT--to 61.180.148.50
//其他非目标80端口请求被转换至61.180.148.50
(2)Linux服务器squid2.6配置主要脚本
http_port 192.168.1.1:8080 transparent
//Squid通过192.168.1.1的8080端口实现http请求监听,并实现透明代理。
cache_mem 50 MB//内存缓存空间为50M
cache_dir ufs /var/spool/squid_st 100 16 256
//网页缓存路径及目录结构
cache_access_log /var/log/squid/access_st.log
//做访问日志
acl our_networks src192.168.1.0/24
http_access allow our_networks
http_access deny all
//实现访问控制
其他配置(略)。
Vlan1中的某个客户端需要指定明确的IP地址如:192.168.1.100,子网掩码:255.255.255.0,网关:192.168.1.1,当地DNS服务器地址:202.97.224.69,此时该客户机就可以访问互联网了,其所有80端口的http网页浏览请求由Squid代理来完成,其他非网页请求通过Iptables地址转换完成上网。
由于Vlan1和Vlan2直接连接在Linux服务器上,只要网卡1和网卡2的IP地址配置正确,每个Vlan中的客户机配置正确,那么两个Vlan间就可以通讯,因为Linux服务器把两个Vlan直接连接了起来,这样Vlan间的通讯我们也通过Linux服务器轻松解决了。
(二)方案二:三层交换环境 Linux服务器
该方案适合规模较大、Vlan数目较多、Vlan间通讯要求比较苛刻的校园网络环境。
假设我们有几十个甚至是上百个Vlan,而且要使Vlan间能够通讯,并且这些Vlan都要接入Internet。我们不可能在Linux服务器上安装那么多网卡。此时,我们需要借助于三层设备,其中三层交换机是一个较佳的选择,使Vlan间的通讯通过三层交换的路由功能来实现,而各个Vlan的Inernet接入任务通过Linux服务器来完成。我们可以假设一个这样的网络环境:有若干个Vlan,我们分别给每个Vlan分配一个c段私网地址,并且我们有一个公网IP地址61.180.148.50。其拓扑图如图2所示。
1.原理
我们划分若干个Vlan,这些Vlan主要供普通的客户机接入使用。我们再划分一个Vlan,其网段为10.0.0.0,供Linux服务器使用,即Linux服务器被划分到一个独立的Vlan中。我们通过三层交换机的路由功能把各个Vlan连接起来,这样各个Vlan间的通讯就解决了,那么各个Vlan中的普通客户机连接到Internet我们该怎么解决呢?我们需要在三层交换机中加上一条静态路由使所有的请求最后指向Linux服务器所在的Vlan的“网卡1”的地址,在Linux上做Nat地址转换和Squid代理,从而完成各个Vlan的Internet接入。
2.具体实现
Vlan1的网址为192.168.1.0,我们在路由上分配一个子接口在Vlan1中,再指定一个IP地址作为该Vlan的网关,如:192.168.1.1。其他Vlan配置类似。
Vlan0的地址为10.0.0.0,我们在路由模块上为其分配一个子接口,该子接口的IP地址为10.0.0.1,Linux服务器的“网卡1”在该Vlan0中,其IP地址为10.0.0.2。
此时,各个Vlan之间就可以通讯了,因为各个Vlan都直接连接到了路由模块上,但是各个Vlan(Vlan1~Vlann)中的客户机仍无法访问Internet。首先,我们需要在路由模块上加一条静态路由:ip route 0.0.0.0 0.0.0.0 10.0.0.2 1 low (默认路由),它的作用是发送那些目标网络没有包含在路由表中的数据包,这样所有访问Internet的请求被发往了Linux代理服务器。Linux代理服务器还是采用Iptables Squid来实现代理Internet接入,其配置和方案一的配置类似。其次,因为在Linux服务器中还缺少相应的路由信息,我们还需要手动把要上网的Vlan地址加到Linux服务器的路由表中,其实现命令如下:
route add -net 192.168.1.0 netmask 255.255.255.0 gw 10.0.0.2
有多少Vlan就加上多少条路由即可,这样各个Vlan的客户机就可以顺利的经过三层交换机通过Linux服务器访问Internet了。
实践证明这种解决方案非常适合中小学,它能满足现在我国中小学的网络需求,运行非常稳定。用Linux服务器代替路由器和防火墙,没有削弱功能,反而Squid的缓存功能又能节省带宽,提高上网速度,同时又可以为我国中小学节省大量资金。此外,Linux服务器还可以作为其他应用服务器来使用,比如:用Linux的Iptables来构建防火墙,用Squid做上网日志存储、上网信息过滤等等。这些对于我国的中小学来说有着非常现实和积极的意义。
参考文献
[1]http://fanqiang.chinaunix.net/adm/net/2005-07-08/3379.shtml.
[2]http://linux.chinaunix.net/bbs/viewthread.php?tid= 390173