网络规划

拓扑图

需求

  1. 互联网中的路由器不允许配置去往私网地址的路由

  2. 整个内网(总部与分公司)内部全部互通,并且内网全部可以上网,其中北京总部员工要求自动获取IP地址,验证上网方法,所有员工可以通过域名http://www.baidu.com访问百度。其中,上网过程中,要求断掉拓扑中的1、2、3、4号线中的任意一根,不断网。

  3. 将总部内网的web服务器发布出去,并成功在外网的PC访问其网站

  4. 要求市场部门禁止访问互联网。

  5. 禁止总部任何部门(服务器除外)访问财务部,但不影响财务部访问互联网。

  6. 要求所有分公司只能访问总部的服务器区及互联网。


难点

难点在于第二点,由于只有一台三层交换机,要实现断网线不断网。如果直接配置浮动路由,则无法监听外网运营商的端口是否down掉,所以必须配置HSRP协议,而两个出口路由器又不在同一网段,无法配置HSRP协议。

有一种简单的解决方法,在两台路由器中间连一根交叉线,同时配置浮动路由,但一般不建议这么做。

解决方法:将三层交换机的f0/5和f0/6端口降级为二层端口,将两个出口路由器的IP地址配置到同一网段,并规划到同一VLAN中。网关还是在三层交换机中,但三层交换机往互联网路由指向HSRP配置的虚拟路由器。HSRP协议可以监听外网端口,就算运营商的端口down掉了也不影响继续上网。

如上图,相当于把三层交换机看做是一台路由器和两台二层交换机,在内网的概念中,不必关心两个出口路由器,网关还是三层交换机中的路由器的虚拟端口,而一旦需要往外网路由,则直接路由到HSRP协议配置好的虚拟路由器。


思路

由于三层交换机配置HSRP协议最复杂,放到最后做,先把总公司和分公司内网规划好。

  1. 先配IP,把所有端口打通(总部的终端不配IP和网关,直接部署一台DHCP服务器),分公司虽然通过专线连接内网但没有三层交换机做DHCP中继,只能手动配置
  2. 创建Vlan,配置Trunk链路
  3. 配置内网路由
  4. 由于不同的Vlan区域会隔离广播域,在三层交换机上配置HDCP中继
  5. 使用ACL进行流量过滤,以分公司的公网接口作为源IP,目标IP为总公司的除服务器以外的所有网段,全部干掉。市场部门只要访问互联网的数据包全部干掉。
  6. 配置外网路由,只对公网接口做转发
  7. 配置HSRP(这部分比较复杂所以最后做),在两个出口路由器上部署备份路由,总公司的DHCP服务器的网关指向HSRP的虚拟路由。HSRP协议虽然是备份网关的,但此图里的网关是三层交换机上的5个虚接口,HSRP只作为路由时备份使用。
  8. 配置动态NAT以访问互联网,再配置一条静态NAT条目使网民能访问总部的web站点。

步骤

由于分公司没有DHCP服务器只能手动配置,终端将DNS指向外网的DNS服务器(我为了方便起见总部不部署DNS服务器,直接使用外网那个)

配置路由可以使用子网掩码汇总,例如192.168.x.0/24网段,只需要一条路由条目就可以路由到所有网段,例如192.168.0.0/16

总部DHCP服务器配置4个IP地址池并指向4个虚拟网关(服务器手动配置)

关于DHCP服务器是如何区分网段的。

一般DHCP服务器和终端在一个广播域中,在划分VLAN后,DHCP服务器由于接受到虚拟网关的广播包,则通过虚拟网关的网段进行分配地址池。其实这个问题我想了很久,只要把VLAN当成一个真正的局域网,就很好理解了。

SW1配置vlan端口并部署成为VTP客户端

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
Switch>en
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#ho sw1
sw1(config)#vtp mode client
Setting device to VTP CLIENT mode.
sw1(config)#vtp domain d1
Changing VTP domain name from NULL to d1
sw1(config)#int f0/2
sw1(config-if)#sw ac vl 10
sw1(config-if)#exit
sw1(config)#int f0/3
sw1(config-if)#sw ac vl 20
sw1(config-if)#exit
sw1(config)#int f0/1
sw1(config-if)#sw m t

core-1创建VLAN并部署成为VTP服务器

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
Switch>en
Switch#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Switch(config)#ho core-1
core-1(config)#vtp mode server
Device mode already VTP SERVER.
core-1(config)#vtp domain d1
Changing VTP domain name from NULL to d1
core-1(config)#vlan 10
core-1(config-vlan)#exit
core-1(config)#vlan 20
core-1(config-vlan)#exit
core-1(config)#vlan 30
core-1(config-vlan)#exit
core-1(config)#vlan 40
core-1(config-vlan)#exit
core-1(config)#vlan 50
core-1(config-vlan)#exit
core-1(config)#vlan 60
core-1(config-vlan)#exit
core-1(config)#int range f0/2 - 4
core-1(config-if-range)#switchport trunk encapsulation dot1q
core-1(config-if-range)#sw m t
core-1(config-if-range)#exit

core-1 开启虚接口,并配置DHCP中继

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
core-1(config)#int vlan 10
core-1(config-if)#
%LINK-5-CHANGED: Interface Vlan10, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan10, changed state to up

core-1(config-if)#ip add 192.168.1.254 255.255.255.0
core-1(config-if)#ip helper-address 192.168.5.1
core-1(config-if)#no sh
core-1(config-if)#exit
core-1(config)#ip routing
core-1(config)#int vlan 20
core-1(config-if)#
%LINK-5-CHANGED: Interface Vlan20, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan20, changed state to up
ip add
core-1(config-if)#ip add 192.168.2.254 255.255.255.0
core-1(config-if)#ip helper-address 192.168.5.1
core-1(config-if)#no sh
core-1(config-if)#exit
core-1(config)#int vlan 30
core-1(config-if)#
%LINK-5-CHANGED: Interface Vlan30, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan30, changed state to up

core-1(config-if)#ip add 192.168.3.254
% Incomplete command.
core-1(config-if)#ip add 192.168.3.254 255.255.255.0
core-1(config-if)#ip helper-address 192.168.5.1
core-1(config-if)#no sh
core-1(config-if)#exit
core-1(config)#int vlan 40
core-1(config-if)#
%LINK-5-CHANGED: Interface Vlan40, changed state to up

%LINEPROTO-5-UPDOWN: Line protocol on Interface Vlan40, changed state to up

core-1(config-if)#ip add 192.168.4.254 255.255.255.0
core-1(config-if)#ip helper-address 192.168.5.1
core-1(config-if)#no sh
core-1(config-if)#exit
core-1(config)#int vlan 50
core-1(config-if)#ip add 192.168.5.254 255.255.255.0
core-1(config-if)#exit
core-1(config)#int vlan 60
core-1(config-if)#ip add 192.168.6.1 255.255.255.0;此虚接口用于连接两台出口路由器
%LINK-5-CHANGED: Interface Vlan50, changed state to up


在三层交换机为出口路由器创建虚接口,可以这么理解,路由器连接到二层接口(就把它看做是一台二层交换机),然后这台交换机又连接到虚接口上,所以必须为这两条二层链路配置swichport access。因为我没有为默认id为1的vlan区域配置虚接口,虽然是通过二层接口连接的,但三层交换机内部必须有一个同一网段的虚接口,否则就无法通信

就像上面那张图一样,相当于路由器连接了一台二层交换机,然后二层交换机又连接到三层交换机中的一个路由器。

1
2
3
4
5
6
core-1(config)#int f0/5
core-1(config-if)#sw ac vl 60
core-1(config-if)#exit
core-1(config)#int f0/6
core-1(config-if)#sw ac vl 60
core-1(config-if)#exit

将两台出口路由器配置HSRP,两个都要配置

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
Router(config)#int f0/0
Router(config-if)#standby 1 ip 192.168.6.254
Router(config-if)#
%HSRP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Speak -> Standby

%HSRP-6-STATECHANGE: FastEthernet0/0 Grp 1 state Standby -> Active

Router(config-if)#standby 1 priority 200
Router(config-if)#standby preempt
Router(config-if)#standby 1 track f0/1
Router(config-if)#exit
Router(config)#int f0/1
Router(config-if)#ip add 100.1.1.1 255.255.255.0
Router(config-if)#no sh

Router(config-if)#
%LINK-5-CHANGED: Interface FastEthernet0/1, changed state to up

配置动态NAT(从内到外)

1
2
3
4
5
6
7
8
9
10
11
12
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#int f0/0
Router(config-if)#ip nat inside
Router(config-if)#exit
Router(config)#int f0/1
Router(config-if)#ip nat outside
Router(config-if)#exit
Router(config)#acc 1 permit 0.0.0.0 255.255.255.255
Router(config)#ip nat inside source list 1 int f0/1 overload
Router(config)#

配置静态NAT(从外到内)

将web服务器80端口(HTTP)映射到公网接口

1
2
3
4
5
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#ip nat inside source static tcp 192.168.5.2 80 110.1.1.1 80
Router(config)#

流量过滤

禁止市场部门访问互联网,可以在网关的入口处拦截市场部所在vlan(10)的所有数据包,仅允许目标IP网段在内网的通过。

1
2
3
4
5
6
7
8
9
10
11
12
13
core-1>en
core-1#conf t
Enter configuration commands, one per line. End with CNTL/Z.
core-1(config)#int vlan 10
core-1(config-if)#exit
core-1(config)#ip access-list extended kz-scb
core-1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 192.168.0.0 0.0.255.255
core-1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 10.0.0.0 0.255.255.255
core-1(config-ext-nacl)#permit ip 192.168.1.0 0.0.0.255 172.16.0.0 0.0.255.255
core-1(config-ext-nacl)#exit
core-1(config)#int vlan 10
core-1(config-if)#ip access-group kz-scb in
core-1(config-if)#exit

禁止总部任何部门(服务器除外)访问财务部,但不影响财务部上网。

1
2
3
4
5
6
7
8
9
core-1(config)#ip acc extended kz-cwb
core-1(config-ext-nacl)#permit ip 192.168.5.0 0.0.0.255 192.168.4.0 0.0.0.255
core-1(config-ext-nacl)#deny ip 192.168.0.0 0.0.255.255 192.168.4.0 0.0.0.255
core-1(config-ext-nacl)#deny ip 172.16.0.0 0.0.255.255 192.168.4.0 0.0.0.255
core-1(config-ext-nacl)#permit ip any any
core-1(config-ext-nacl)#exit
core-1(config)#int vlan 40
core-1(config-if)#ip access-group kz-cwb out
core-1(config-if)#exit

要求所有分公司只能访问总部的服务器区及上网,注意ACL条目的顺序

1
2
3
4
5
6
7
8
9
10
11
Router>en
Router#conf t
Enter configuration commands, one per line. End with CNTL/Z.
Router(config)#ip access-list extended kz-fgs
Router(config-ext-nacl)#permit ip 172.16.0.0 0.0.255.255 192.168.5.0 0.0.0.255
Router(config-ext-nacl)#deny ip 172.16.0.0 0.0.255.255 192.168.0.0 0.0.255.255
Router(config-ext-nacl)#permit ip any any
Router(config-ext-nacl)#exit
Router(config)#int f1/0
Router(config-if)#ip access-group kz-fgs out
Router(config-if)#exit

优化

按照以上规划有一个问题,内网虽然可以访问外网的DNS服务器,但DNS服务器解析总部网站的IP是公司是外网端口,此处为100.1.1.1。如果内网要访问总部的web站点就变成了和100.1.1.1通信,最终数据包会被路由器干掉,以市场部为例,过程如下:

  1. 市场部访问外网DNS服务器获得web站点的IP地址100.1.1.1
  2. 市场部发送数据包,源IP为192.168.1.100,目标IP为100.1.1.1
  3. 三层交换机(网关)将数据包路由至出口路由器,出口路由器检查路由表,将数据包路由至外网端口
  4. 路由器对数据包进行NAT转换,将源IP替换为100.1.1.1,目标IP为100.1.1.1,数据包被丢弃

解决方法:

在北京总部部署一台DNS服务器,对公司web站点做解析,对外网DNS服务器做转发器。