20-MFF配置
本章节下载: 20-MFF配置 (276.29 KB)
目 录
在传统的以太网组网方案中,为了实现不同客户端主机之间的二层隔离和三层互通,通常采用在交换机上划分VLAN的方法。但是当彼此间需要二层隔离的用户较多时,这种方式会占用大量的VLAN资源;同时,为实现客户端之间三层互通,需要为每个VLAN规划不同的IP网段,并配置VLAN接口的IP地址,因此划分过多的VLAN会降低IP地址的分配效率。
为了改善这种现状,MFF(MAC-Forced Forwarding,MAC强制转发)为同一广播域内实现客户端主机间的二层隔离和三层互通,提供了一种解决方案。
MFF截获用户的ARP请求报文,通过ARP代答机制,回复网关MAC地址的ARP应答报文。通过这种方式,可以强制用户将所有流量(包括同一子网内的流量)发送到网关,使网关可以监控数据流量,防止用户之间的恶意攻击,能更好的保障网络部署的安全性。
如图1-1所示,Switch A和Switch B作为以太网接入节点(Ethernet Access Nodes,EAN),提供了客户端主机与汇聚节点(Switch C)之间的连接。在以太网接入节点上配置MFF功能,可以使客户端的数据报文交互全部通过网关转发,实现了客户端之间的三层互通,又保证了二层数据的隔离,即:客户端主机不会了解相互的MAC地址。
MFF通常与DHCP Snooping、ARP Snooping、IP Source Guard、ARP Detection、VLAN映射等功能配合使用,在接入层交换机上实现客户端的流量过滤、二层隔离和三层互通,提高接入层网络的安全性。
· 关于DHCP Snooping功能的介绍,请参见“三层技术-IP业务配置指导”中的“DHCP Snooping”。
· 关于ARP Snooping功能的介绍,请参见“三层技术-IP业务配置指导”中的“ARP Snooping”。
· 关于IP Source Guard功能的介绍,请参见“安全配置指导”中的“IP Source Guard”。
· 关于ARP Detection功能的介绍,请参见“安全配置指导”中的“ARP攻击防御”。
· 关于VLAN映射功能的介绍,请参见“二层技术-以太网交换配置指导”中的“VLAN映射”。
· 客户端与配置了MFF功能的设备之间是隔离的,即不能ping通。
使能MFF功能的设备上存在两种端口角色:用户端口及网络端口。
MFF的用户端口是指直接接入网络终端用户的端口。
用户端口上对于不同的报文处理如下:
· 允许组播报文和DHCP报文通过;
· 对于ARP报文则上送CPU进行处理;
· 若已经学习到网关MAC地址,则仅允许目的MAC地址为网关MAC地址的单播报文通过,其他报文都将被丢弃;若没有学习到网关MAC地址,目的MAC地址为网关MAC地址的单播报文也被丢弃。
MFF的网络端口是指连接其他网络设备如接入交换机、汇聚交换机或网关的端口。
网络端口上对于不同的报文处理如下:
· 允许组播报文和DHCP报文通过;
· 对于ARP报文则上送CPU进行处理;
· 拒绝其他广播报文通过。
· 上行连接网关的端口,级联组网(多个MFF设备连接在一起的组网)时连接下游其他MFF设备的端口,或者环型组网时设备之间的端口,都应该配置为网络端口。
· 网络端口只是一种端口角色,它和该端口在网络拓扑中的位置没有关系;换句话说,网络端口不一定总是上行端口。
· 在使能MFF的VLAN中,所有端口不是网络端口就是用户端口,不存在二者之外的端口角色。
· 在使能MFF的VLAN中包含的所有端口中,只有网络端口支持链路聚合,用户端口不支持链路聚合。即,网络端口可以加入链路聚合组,而用户端口不能加入链路聚合组。关于链路聚合的介绍请参见“二层技术-以太网交换配置指导”中的“以太网链路聚合”。
MFF有两种运行模式:手工方式和自动方式。
手工方式应用于用户静态配置IP地址的场景中,这是因为在用户静态配置IP地址时,MFF无法通过DHCP报文来获取网关信息。另外,在用户静态配置IP时,由于没有依据进行用户与网关的映射,因此仅维护缺省网关的MAC地址,即,一个VLAN下仅维护一个缺省网关MAC地址。
使能了手工方式后,MFF代答网关对用户的ARP请求,以及伪造ARP请求探测网关MAC的依据都是ARP Snooping表项。
若在MFF学习到缺省网关MAC地址后,收到来自网关的、携带了与记录的缺省网关MAC地址不同的源MAC地址的ARP报文,则需要更新记录的网关MAC地址。
自动方式应用于用户通过DHCP协议动态获取IP地址的场景中。DHCP Snooping功能通过侦听DHCP ACK报文,并解析其中的Option 3字段(Router IP)来获取网关IP地址。
在使能MFF自动方式时,每一个DHCP Snooping用户绑定表项都应该有相对应的唯一网关IP地址。若DHCP ACK报文携带多个网关IP地址,则只记录第一个。若学习到的用户绑定表项不包含网关IP地址,或者没有记录在用户绑定表项中,则自动方式会根据当前VLAN记录的第一个网关作为用户网关应答该用户的ARP请求,除非其请求的是一个已知的网关地址。
同时,针对每一个网关IP地址,从第一个与其对应的用户绑定表项中获取用户IP地址及MAC地址,封装并伪造ARP请求,去探测网关的MAC地址。
· 自动方式下,一个VLAN内最多可以学习并维护20个网关信息,超过此限制的网关不再学习及处理。网关IP获取之后不会进行更新,即网关信息一旦生成就不会老化,除非去使能MFF。
· 若在MFF学习到网关MAC地址后,收到来自网关的ARP报文,如果该ARP报文中携带的源MAC地址与记录的网关MAC地址不同,则需要更新记录的网关MAC地址。
MFF环境下的用户之间的三层互通是通过ARP代答机制实现的,这种代答机制在一定程度上减少了网络侧和用户侧之间的广播报文数量。
MFF设备对ARP报文进行如下处理:
· 代答用户ARP请求。替代网关给用户主机回应ARP报文,使用户之间的报文交互都通过网关进行三层转发。这里,用户主机的ARP请求,既包括对于网关的请求,也包括对于其他用户IP的ARP请求。
· 代答网关ARP请求。替代用户主机给网关回应ARP报文。如果网关请求的表项在MFF设备上存在,就根据表项进行代答。如果表项还没有建立,则转发请求。以便达到减少广播的目的。
· 转发用户主机和网关发来的ARP应答。
· 监听网络中的ARP报文。更新网关IP地址和MAC地址对应表并广播。
· RFC 4562:MAC-Forced Forwarding
· 自动方式下要求设备使能DHCP Snooping功能并配置相应的DHCP Snooping信任端口;
· 手动方式下要求设备使能ARP Snooping功能。
表1-1 使能MFF功能
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
使能MFF功能,同时配置MFF的工作方式 |
mac-forced-forwarding { auto | default-gateway gateway-ip } |
必选 缺省情况下,MFF功能处于关闭状态 |
表1-2 配置以太网端口为网络端口
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入端口视图 |
interface interface-type interface-number |
- |
配置端口为网络端口 |
mac-forced-forwarding network-port |
必选 缺省情况下,端口为用户端口 |
对MFF维护的网关进行定时探测,可以感知网关MAC地址的变化。手工方式和自动方式都支持对网关的定时探测功能。
对网关进行定时探测的时间间隔为30秒。探测使用伪造ARP报文,在自动方式下其源IP地址和源MAC地址来自于DHCP Snooping表,在手工方式下其源IP地址和源MAC地址来自于ARP Snooping表。其原则是选择对应于探测网关的第一个用户绑定表项。这个伪造报文的源IP地址和源MAC地址一经选择,就会被记录并持续使用,若该用户表项被删除,则需要重新选择伪造侦听报文的用户信息。若用户表项删除之后网关没有对应用户,则清空网关探测信息。
表1-3 配置对MFF维护的网关进行定时探测
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置对MFF维护的网关进行定时探测 |
mac-forced-forwarding gateway probe |
必选 缺省情况下,定时探测功能处于关闭状态 |
如果网络中部署了服务器,就需要在使能MFF功能的设备的服务器列表中添加此服务器的IP地址,否则,客户端与服务器之间不能进行通信。
在手工方式和自动方式下都可以配置本功能。这里的服务器IP地址可以是DHCP Server的IP地址,也可以是其他业务的服务器的IP地址或者是VRRP的实IP地址。
如果网络侧收到了源IP地址为服务器IP地址的ARP请求,则查询本设备记录的用户信息,利用查询到的用户信息代替用户应答给服务器。即,用户发送给服务器的报文,都会通过网关进行转发,而服务器发送给用户的报文,则不需经过网关转发。
表1-4 配置网络中部署的服务器的IP地址
操作 |
命令 |
说明 |
进入系统视图 |
system-view |
- |
进入VLAN视图 |
vlan vlan-id |
- |
配置网络中部署的服务器的IP地址 |
mac-forced-forwarding server server-ip&<1-10> |
必选 缺省情况下,没有配置网络中部署的服务器的IP地址 |
在完成上述配置后,在任意视图下执行display命令可以显示配置后MFF的运行情况,通过查看显示信息验证配置的效果。
表1-5 MFF显示和维护
操作 |
命令 |
显示MFF端口配置信息 |
display mac-forced-forwarding interface [ | { begin | exclude | include } regular-expression ] |
显示指定VLAN的MFF信息 |
display mac-forced-forwarding vlan vlan-id [ | { begin | exclude | include } regular-expression ] |
如图1-2所示,Host A、Host B和Host C通过DHCP服务器动态获取IP地址,所有设备都在VLAN 100内。为了实现主机之间二层隔离,同时又可以通过Gateway进行三层互通,在Switch A和Switch B上启用自动方式MFF功能。
(1) 配置Gateway
# 配置接口的IP地址。
<Gateway> system-view
[Gateway] interface Vlan-interface 1
[Gateway-Vlan-interface1] ip address 10.1.1.100 24
(2) 配置DHCP服务器
# 使能DHCP服务并创建DHCP地址池。
<Device> system-view
[Device] dhcp enable
[Device] dhcp server ip-pool 1
[Device-dhcp-pool-1] network 10.1.1.0 mask 255.255.255.0
# 配置DHCP地址池为DHCP客户端分配的网关地址。
[Device-dhcp-pool-1] gateway-list 10.1.1.100
[Device-dhcp-pool-1] quit
# 配置接口的IP地址。
[Device] interface Vlan-interface 1
[Device-Vlan-interface1] ip address 10.1.1.50 24
(3) 配置Switch A
# 使能DHCP Snooping功能。
<SwitchA> system-view
[SwitchA] dhcp-snooping
# 使能自动方式MFF功能。
[SwitchA] vlan 100
[SwitchA-vlan-100] mac-forced-forwarding auto
[SwitchA-vlan-100] quit
# 配置网络端口。
[SwitchA] interface ethernet 1/0/2
[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchA-Ethernet1/0/2] dhcp-snooping trust
(4) 配置Switch B
# 使能DHCP Snooping功能。
<SwitchB> system-view
[SwitchB] dhcp-snooping
# 使能自动方式MFF功能。
[SwitchB] vlan 100
[SwitchB-vlan-100] mac-forced-forwarding auto
[SwitchB-vlan-100] quit
# 配置网络端口。
[SwitchB] interface ethernet 1/0/6
[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchB-Ethernet1/0/6] dhcp-snooping trust
如图1-3所示,Host A、Host B和Host C通过DHCP服务器动态获取IP地址,网络中存在环路,所有设备都在VLAN 100内。为了实现主机之间二层隔离,同时又可以通过Gateway进行三层互通,在Switch A和Switch B上启用自动方式MFF功能。
(1) 配置Gateway
# 配置接口的IP地址。
<Gateway> system-view
[Gateway] interface Vlan-interface 1
[Gateway-Vlan-interface1] ip address 10.1.1.100 24
(2) 配置DHCP服务器
# 使能DHCP服务并创建DHCP地址池。
<Device> system-view
[Device] dhcp enable
[Device] dhcp server ip-pool 1
[Device-dhcp-pool-1] network 10.1.1.0 mask 255.255.255.0
# 配置DHCP地址池为DHCP客户端分配的网关地址。
[Device-dhcp-pool-1] gateway-list 10.1.1.100
[Device-dhcp-pool-1] quit
# 配置接口的IP地址。
[Device] interface Vlan-interface 1
[Device-Vlan-interface1] ip address 10.1.1.50 24
(3) 配置Switch A
# 使能DHCP Snooping功能。
<SwitchA> system-view
[SwitchA] dhcp-snooping
# 启动STP协议。
[SwitchA] stp enable
# 使能自动方式MFF功能。
[SwitchA] vlan 100
[SwitchA-vlan-100] mac-forced-forwarding auto
[SwitchA-vlan-100] quit
# 配置网络端口。
[SwitchA] interface ethernet 1/0/2
[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchA-Ethernet1/0/2] dhcp-snooping trust
[SwitchA-Ethernet1/0/2] quit
# 配置网络端口。
[SwitchA] interface ethernet 1/0/3
[SwitchA-Ethernet1/0/3] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchA-Ethernet1/0/3] dhcp-snooping trust no-user-binding
(4) 配置Switch B
# 使能DHCP Snooping功能。
<SwitchB> system-view
[SwitchB] dhcp-snooping
# 启动STP协议。
[SwitchB] stp enable
# 使能自动方式MFF功能。
[SwitchB] vlan 100
[SwitchB-vlan-100] mac-forced-forwarding auto
[SwitchB-vlan-100] quit
# 配置网络端口。
[SwitchB] interface ethernet 1/0/4
[SwitchB-Ethernet1/0/4] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchB-Ethernet1/0/4] dhcp-snooping trust no-user-binding
[SwitchB-Ethernet1/0/4] quit
# 配置网络端口。
[SwitchB] interface ethernet 1/0/6
[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port
# 配置DHCP Snooping信任端口。
[SwitchB-Ethernet1/0/6] dhcp-snooping trust
(5) 配置Switch C
# 启动STP协议。
<SwitchC> system-view
[SwitchC] stp enable
如图1-4所示,Host A、Host B和Host C配置静态IP地址,所有设备都在VLAN 100内。为了实现主机之间二层隔离,同时又可以通过Gateway进行三层互通,在Switch A和Switch B上启用手工方式MFF功能。为了实现主机与Server互通,需要手工配置网络中部署服务器的IP地址。
(1) 如上图在客户端配置静态IP地址
(2) 配置Gateway
# 配置接口的IP地址。
<Gateway> system-view
[Gateway] interface Vlan-interface 1
[Gateway-Vlan-interface1] ip address 10.1.1.100 24
(3) 配置Switch A
# 使能手工方式MFF功能。
[SwitchA] vlan 100
[SwitchA-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100
# 配置网络中部署的服务器的IP地址为10.1.1.200。
[SwitchA-vlan-100] mac-forced-forwarding server 10.1.1.200
# 使能ARP Snooping功能。
[SwitchA-vlan-100] arp-snooping enable
[SwitchA-vlan-100] quit
# 配置网络端口。
[SwitchA] interface ethernet 1/0/2
[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port
(4) 配置Switch B
# 使能手工方式MFF功能。
[SwitchB] vlan 100
[SwitchB-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100
# 配置网络中部署的服务器的IP地址为10.1.1.200。
[SwitchB-vlan-100] mac-forced-forwarding server 10.1.1.200
# 使能ARP Snooping功能。
[SwitchB-vlan-100] arp-snooping enable
[SwitchB-vlan-100] quit
# 配置网络端口。
[SwitchB] interface ethernet 1/0/6
[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port
如图1-5所示,Host A、Host B和Host C配置静态IP地址,网络中存在环路,所有设备都在VLAN 100内。为了实现主机之间二层隔离,同时又可以通过Gateway进行三层互通,在Switch A和Switch B上启用手工方式MFF功能。为了实现主机与Server互通,需要手工配置网络中部署服务器的IP地址。
(1) 如上图在客户端配置静态IP地址
(2) 配置Gateway
# 配置接口的IP地址。
<Gateway> system-view
[Gateway] interface Vlan-interface 1
[Gateway-Vlan-interface1] ip address 10.1.1.100 24
(3) 配置Switch A
# 启动STP协议。
[SwitchA] stp enable
# 使能手工方式MFF功能。
[SwitchA] vlan 100
[SwitchA-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100
# 配置网络中部署的服务器的IP地址为10.1.1.200。
[SwitchA-vlan-100] mac-forced-forwarding server 10.1.1.200
# 使能ARP Snooping功能。
[SwitchA-vlan-100] arp-snooping enable
[SwitchA-vlan-100] quit
# 配置网络端口。
[SwitchA] interface ethernet 1/0/2
[SwitchA-Ethernet1/0/2] mac-forced-forwarding network-port
[SwitchA-Ethernet1/0/2] quit
[SwitchA] interface ethernet 1/0/3
[SwitchA-Ethernet1/0/3] mac-forced-forwarding network-port
(4) 配置Switch B
# 启动STP协议。
[SwitchB] stp enable
# 使能手工方式MFF功能。
[SwitchB] vlan 100
[SwitchB-vlan-100] mac-forced-forwarding default-gateway 10.1.1.100
# 配置网络中部署的服务器的IP地址为10.1.1.200。
[SwitchB-vlan-100] mac-forced-forwarding server 10.1.1.200
# 使能ARP Snooping功能。
[SwitchB-vlan-100] arp-snooping enable
[SwitchB-vlan-100] quit
# 配置网络端口。
[SwitchB] interface ethernet 1/0/4
[SwitchB-Ethernet1/0/4] mac-forced-forwarding network-port
[SwitchB-Ethernet1/0/4] quit
[SwitchB] interface ethernet 1/0/6
[SwitchB-Ethernet1/0/6] mac-forced-forwarding network-port
(5) 配置Switch C
# 启动STP协议。
<SwitchC> system-view
[SwitchC] stp enable
不同款型规格的资料略有差异, 详细信息请向具体销售和400咨询。H3C保留在没有任何通知或提示的情况下对资料内容进行修改的权利!