您现在的位置: 龚师傅之家 >> 文章中心 >> 网络技术 >> 网络安全 >> 正文

旧网站入口

ROS为VLAN分配IP地址

      ★★★

字体:

作者:佚名    文章来源:网络    点击数:2877    更新时间:2014/3/19









注:方括号中的需要根据实际情况写入
 先描述一下我们的大环境:
1. 我们教育系统的网络是电信做的,所以后面所说的“教育网”并非中国教育科研网,而是电信为本市教育系统做的私有网络。
2. 全市整个系统各个机构和学校目前共计一万个点以上,机构/学校之间1000M光互联,总出口100M.
3. 教育机构内部使用一类私有IP,每个机构/学校根据需求使用变长子网划开,通过电信核心路由实现互通和外网的连接。但由于教育系统网络接入点太多,总出口又只有100M再加上有些学校网络技术实力不济,网络病毒频频破坏网络,导致教育网络对外网速在工作时段不仅慢如蜗牛(多数时候比56K猫还慢),而且时断时续。因此我们又申请了3条电信3M带宽的ADSL来使用。

 再描述一下我们的应用:
1. 校内所有端点(目前共计500多个),包括各机房,各办公室,各教室(每教室一套多媒体平台)的网络访问。
2. 学校/学科网站发布,包括一个学校主站,一个校友录,一个成长记录和四个学科网站。
3. 内网服务应用,包括微软安全更新,网络杀毒,FTP,DNS,DHCP,学校照片文件共享,影视点播,局域网游戏对战(SC、CS等)。
4. 从外网远程办公与网络管理以处理一些应急问题

 服务的范围:
1. 校内所有端点的网络访问:包括对校内,其它学校/机构,外部。
2. 学校/学科网站可被所有网段访问。
3. 内网服务中,FTP、局域网游戏对战和影视点播服务对校内和教育系统开放,其它只对校内服务。
4. 远程管理只对个别技术人员开放。

 应用实现目标概述:
1. 校内网络互联:校内根据部门功能及应用需求目前共划为10个VLAN,6个机房每机房(50多台机器)一个,行政办公一个(40台左右),教学办公及教室一个(120左右),信息技术办公室一个(10多台),网络中心DMZ一个,IP地址均使用三类私有IP,地址分配上使用DHCP做IP-MAC绑定分配。除DMZ外VLAN间使用CISCO C4503实现路由,而对DMZ的访问交给后面的DMZ防火墙。
2. 学校对教育网的访问:在教育网环境中,我们分到了子网位为22的一个段。而电信的路由设备我们无权访问,为了实现管理和应用,只能做校园网对教育网的NAT。此NAT就是利用ROS实现,为了使每台机器对教育网的访问IP能够被记录,使用了一对一地址转换。
3. 学校对外访问:为确保行政部门与信息技术两个部门的网络畅通,考虑到两类部门端点数量并不多,在此拿出两条ADSL分别应对。ADSL作为主对外线路,教育网出口为备用线路,并且不妨碍对教育网的访问,这里就需要在ROS上做线路连通性的自动判断及策略路由。为了防止单台机器对网络资源的大量消耗,还需要做限速策略。
4. 服务的发布:使用ISA做DMZ服务的发布,DMZ从功能上主要分为文件服务器,网页服务器,其它服务器三类。影视服务分为页面和电影数据两部分,考虑到影视数据服务的流量比较大,就直接挂在教育网段了,而页面就放在网页服务器上。
5. 由于教育网络稳定性和速度都存在问题,在此利用一条ADSL实现从外网对内部的访问以实现远程办公,当然出于安全考虑,只给网络安全意识强的技术人员开放。由于ADSL是虚拟拨号动态分配IP,要通过ADSL访问内部,就需要使用动态域名来定位,在此需要使用ROS的DDNS功能。
6. 防火墙规则:原则上只开用到的端口,其它统统Deny.

 实现具体方法
1. 校内网络互联:使用C4503的三层交换功能,为每个网段划分VLAN,配置对应段的IP地址作为客户机的网关。具体涉及命令:
#vlan database
(vlan)#vlan [vlan ID]
(vlan)#exit
#conf t
(config)#int vlan [vlan ID]
(config-if)#ip address x.x.x.x x.x.x.x
(config-if)#int gi1/x
(config-if)#switchport access vlan [vlan ID]
(config-if)#end
另外还有一块需要访问的,就是服务器区,为了让服务器能够记录到每个客户端的IP地址,就需要在C4503和ISA之间做路由。
C4503上
(config)#ip route [dst-net] [net-mask]
ISA上
>route add 192.168.0.0 mask 255.255.224.0 -p
客户机IP地址的分配使用ROS的DHCP功能,并要做IP-MAC绑定分配。实现过程如下:
首先给interface划分VLAN
/interface vlan
add vlan-id= interface= disabled=no
所有VLAN添加好后,为每个VLAN接口分配IP
/ip address
add address= netmask=[net-mask] interface=
添加DHCP池
/ip pool
add name= ranges=
绑定池和接口关系
/ip dhcp-server
add name= interface= lease-time=1h address-pool= authoritative=after-2sec-delay disabled=no
添加DHCP选项
/ip dhcp-server network
add address= gateway= dns-server=
添加IP-MAC绑定关系
/ip dhcp-server lease
add address= mac-address= server=[DHCP server name]
在大量添加IP-MAC绑定关系的时候有个技巧,就是先利用IP-MAC扫描工具扫出MAC,再借助Excel建立好关系表,用合并函数把命令都建立好,复制出来粘贴到ROS的terminal里即可快速完成添加工作,而不必一个一个去敲。
这样DHCP服务器就建立好了,交换机端只需要把与DHCP ROS连接的接口设置成VLAN Trunk口就可以了,即
#conf t
#int gi1/x
#switchport trunk encapsulation dot1q
#switchport mode trunk
#end
至此校内的网络互通就实现了。
2. 学校对教育网的访问:要访问教育网或者通过教育网线路访问外网,只需要让所有电脑的网络请求都发送到教育网网关上即可。由于校内的所有电脑的网关已经通过DHCP服务指配到C4503交换机上,所以只需要让交换机知道这些除校园网IP外的目标IP该怎么走就可以了。而C4503没有NAT功能,这个工作要交给ROS去做了。所以在C4503上要加一条默认路由,把所有其它目标网络请求都交给做NAT的ROS(这里称之为ROS_NAT)。
#ip route 0.0.0.0 0.0.0.0
在这里我专门划了一个VLAN用来给C4503和ROS_NAT之间通信(这里先叫它NAT网段了),当然IP地址不要忘记配。
现在来到ROS_NAT上。首先要做的还是配置接口,把接口划成三个VLAN,分别用于连接NAT网段,教育网和ADSL,具体命令前面已有,此处不再赘述。关于ADSL,将在如何实现对外访问中做阐述,这里先留个位。然后为每个VLAN接口分配对应的IP地址。由于要做一对一地址转换,就需要给教育网VLAN接口绑定需要用到的所有教育网IP地址,此处也可以利用Excel编辑好一起粘贴到terminal中。既然要靠ROS_NAT连接教育网,接下来就要配置到教育网的路由了。另外,还要让ROS_NAT知道如何到达校园内网,还要添加到达内网要通过C4503实现的路由。ROS中添加路由命令如下
/ip route
add dst-address=10.0.0.0/8 gateway=
add dst-address=192.168.0.0/20 gateway=
这样ROS就知道到达两边分别该怎么走了。下一步就是做一对一地址转换,命令示例如下
/ip firewall nat
add chain=srcnat src-address=192.168.1.1/26 dst-address=!192.168.0.0/16 out-interface=YWEDU action=src-nat to-addresses=10.14.0.1 to-ports=0-65535 disabled=no
添加好后就可以实现对教育网的访问了。
3. 学校对外访问:这部分实现起来相对复杂点儿,主要是因为涉及到断线自动切换的问题和策略路由。首先实现通过教育网线路访问外网,也就是不管访问教育网还是访问外网都交给教育网关去处理。这里就需要在ROS中添加一条默认路由,命令如下
/ip route add dst-address=0.0.0.0/0 gateway=
即教育网关。这样就实现了除校园内网外所有其它网络都通过教育网线路访问。而在我们的应用需求中,有两个网段是分别通过两个ADSL线路出去,并且要做断线自动切换。考虑到用一台ROS去实现三个ADSL的拨号连接和分流很困难,于是决定用比较简单的方法,利用虚拟机建立三个专门用来拨ADSL的ROS(这里称之为ROS_ADSL)。为求稳定和降低复杂性,这里找了一台机器插了块四口网卡来做。虚拟机的具体做法不在此处详述,基本实现方法就是把四个网口分别影射给虚拟机的四个VMnet口。其中三个网口分别插三个ADSL猫,并绑给三个虚拟机ROS的第一块网卡用;第四个网口先划两个VLAN,一个用来连接ROS_NAT,另一个用来实现局域网游戏对战(服务发布中阐述)。先说说ROS_ADSL的建立。首先是给ROS_ADSL的内部接口配置内部IP,这里我用172.16.8.0/24的IP段。然后是建立PPPoE连接,命令如下
/interface pppoe-client add interface=ether1 user= password= profile=default add-default-route=yes disabled=no
添加好后ROS_ADSL应该就可以正常连线了。接下来就是做NAT,假设ROS_NAT与ROS_ADSL连接的接口IP是172.16.8.1,那么就添加如下命令
/ip firewall nat add action=masquerade chain=srcnat src-address=172.16.8.1
最后再到ROS_NAT中添加策略路由和地址转换。为了确保所有校园内网电脑能够正常访问教育网段,此处先给目标为10.0.0.0/8的路由打个routing-mark=bb的标记,并添加一条路由策略
/ip route rule add src-address=192.168.0.0/20 dst-address=10.0.0.0/8 action=lookup table=bb
假设需要通过ADSL上网的网段是192.168.15.0/26,ROS_ADSL的内部接口IP是172.16..8.2,先做策略路由
/ip route add dst-address=0.0.0.0/0 gateway=172.16.8.2 routing-mark=a1
/ip route rule add src-address=192.168.15.0/26 action=lookup table=a1 comment=ADSL_R15
定义一个教育网段的address-list
/ip firewall address-list add list=EDU address=10.0.0.0/8
然后做地址转换
/ip firewall nat add chain=srcnat src-address=192.168.15.0/26 dst-address=!192.168.0.0/16 out-interface=[ADSL-VLAN-interface] dst-address-list=!EDU action=src-nat to-addresses=172.16.8.1 to-ports=0-65535
[ADSL-VLAN-interface]指连接ROS_ADSL内网的VLAN interface.
至此,192.168.15.0/26段的电脑既可以通过ADSL上外网,又可以通过教育网线路访问教育网。
接下来要实现的就是断线自动切换。ROS里面有个叫Netwatch的工具,它可以通过定时发送ICMP信息来验证连通状态,并且在对应状态下做出相应的动作。既然是靠ICMP来实现,那么我就可以在ROS_ADSL上面做条防火墙规则
/ip firewall filter add chain=input src-address=172.16.8.0/29 protocol=icmp action=drop comment=ICMP_down disabled=yes
再做一个netwatch
/tool netwatch add host=[DNS IP] interval=30s timeout=1s up-script={/ip firewall fil dis ICMP_down} down-script={/ip firewall fil ena ICMP_down}
当ROS_ADSL能ping通DNS的时候,它的动作就是down掉阻挡ICMP的防火墙动作,反之则开启。实现这个以后,就可以在ROS_NAT上做以下Netwatch
/tool netwatch add host=172.16.8.2 interval=30s timeout=1s up-script={/ip route rule ena ADSL_R15} down-script={/ip route rule dis ADSL_R15}
至此,连通性自动判断并切换的功能就实现了。最后是限速策略,限制每台最大下行带宽为1M
:for i from 1 to 60 do={/queue simple add name=(queue . $i) dst-address=(192.168.15. . $i)max-limit=1024000/32000}
因为没有好好研究限速方面的东西,这里只做了简单限速。
另外的ADSL线路接入方法同上,在此不再赘述。
4. 服务的发布主要靠ISA实现,跟ROS关系不大,此处不做详述。
5. 通过ADSL被远程访问:远程访问主要是两种应用,一种是Windows的远程桌面,令一种是直接通过Winbox或者telnet连接到ROS。此处要解决两个问题,一是服务的发布,二是域名的IP动态更新。服务的发布首先要在ROS_ADSL上做目标地址转换
/ip firewall nat add chain=dstnat src-address=!172.16.0.0/16 dst-address=!172.16.8.2 protocol=tcp dst-port=!8291 action=dst-nat to-addresses=172.16.8.1 to-ports=0-65535
此时目标地址转换为ROS_NAT的地址,再在ROS_NAT上做目标地址转换,转换成需要被远程的电脑的IP地址。这样就实现了外部通过ADSL线路访问内部机器了。接下来是用什么地址访问的问题了,也就是要利用DDNS来自动实现动态域名的更新。为实现此功能,我曾搜索到一段DDNS自动更新的脚本,但发现在2.9以上版本ROS上使用不正常,于是自己根据那个脚本的原理重新写了一个肯定好用的脚本,具体内容如下:

/system script add name="ddnsInit" source={
:log info "ddnsInit: Creating Dynamic DNS update system."
:global u "UserID"
:global p "Password"
:global n "A Record"
:global z "Domain"
:global dialInterface [/interface pppoe-client get pppoe-out name]
:log info ("find dial interface: " . $dialInterface)
:global ac [/ip address get [/ip address find interface=$dialInterface] address]
:global a [:pick $ac 0 [:find $ac "/"]]
}

/system script add name="ddnsSendUpdate" source={
:log info ("ddnsSendUpdate: External IP Address is " . $a)
/tool dns-update name=$n zone=$z address=$a key-name=$u key=$p
}

/system script add name="ddnsCheck" source={
:if ([/system scheduler get ddnsJob run-count]<=1) do={
/system script run ddnsInit
/system script run ddnsSendUpdate
/system scheduler enable ddnsRetry
}
:global temp $ac
:global b [/ip address get [/ip address find interface=$dialInterface] address]
:if ($temp != $b) do={
:global ac $b
:global a [:pick $ac 0 [:find $ac "/"]]
:log info ("ddnsCheck: Found new IP address: " . $a)
/system script run ddnsSendUpdate
}
}

/system script add name="ddnsReset" source={
/system scheduler remove ddnsJob
/system scheduler add name=ddnsJob interval=30s on-event=ddnsCheck
:global u
:global p
:global n
:global z
:global dhcpInterface
:global a
:global ac
:global b
:global temp
}

/system script add name="ddnsApp" source={
:if (([:resolve ($n . "." . $z)]) != $a) do={
/system script run ddnsSendUpdate
}
}

/system scheduler add name=ddnsJob interval=30s on-event=ddnsCheck
/system scheduler add name=ddnsRetry interval=1m on-event=ddnsApp disabled=yes

/tool netwatch add host= interval=30s timeout=1 up-script={/ip firewall fil dis ICMP_down
/system script run ddnsInit} down-script={/ip firewall fil ena ICMP_down}

具体语句的功能我在这里就先不解释了,有兴趣的朋友请参照官方文档或者在论坛上搜索以下ROS脚本方面的东西。
6. 防火墙规则:主要做在ROS_NAT和C4503上。最后Deny只做了input和Forward,output并未作任何限制,个人感觉做output的限制似乎没太大必要。ROS开放端口的方法论坛里也有很多相关的内容了,在此也不再赘述,总之就是只开用到的端口,其余一律deny.
7. 其中DMZ的做法和局域网游戏对战功能的实现跟ROS关系不大,这里我就简单带一下。DMZ里的服务器主要是使用了VMware ESX来实现的,只有文件服务器和电影服务器由于硬盘空间需求大,是真实机下直接装系统做的。而局域网游戏对战功能主要是靠SOFTETHER这个软件实现,这个软件是个虚拟HUB软件,虚拟出来的网卡利用Windows的网卡桥接功能跟信息技术办公室的VLAN虚拟网卡绑定成桥,外面所有使用客户端连接虚拟HUB进来的电脑都是通过ROS_DHCP自动获得与信息技术办公室相同IP段地址使其在同一局域网中,实现局域网游戏功能。
我的网络结构和功能实现基本上就是这样的了,实际运行下来还算稳定,基本上不会出现什么问题。不过总的来讲感觉还是稍微复杂了点,一旦出现问题要检查的地方比较多,在此希望有钻研精神的朋友都来发表一下见解,我是初次写这样的东西,草草弄了一下都没配上完整的拓扑图,有空一定重新画一个贴出来。有什么不妥或者需要改进的地方尽管直言,大家共同交流共同进步。

文章录入:admin    责任编辑:admin 

[版权声名] 本网转载稿件及图片均来自于互联网,版权归属其版权拥有者全权所有。龚师傅之家此频道仅作为展示与交流之用。作品不代表本网观点,本网不承担此类稿件侵权行为的连带责任。谢谢您的支持!—— 龚师傅之家
  • 上一篇文章:

  • 下一篇文章:
  •  
    网友评论

    只显示最新10条。评论内容只代表网友观点,与本站立场无关!

     
    友情连接

    文字连接w3school在线教程| DIV+CSS布局教程

     

    站长:龚师傅 建站时间:2005-11-23 联系方式:QQ446380909

    网站备案:【蜀ICP备05028898号】