分类目录归档:网络技术

给网络注入点延迟

前言

有些时候,需要人为引入网络延迟,模拟网络条件比较差的情况下,集群的行为。这时候,tc这个工具就横空出世了。 tc是 Traffic Control的简写,用来控制网络流量的。它的功能还是很强大的,我们本文仅简单介绍如何惹人为地注入网络延迟。

注入延迟

注入延迟之前,看下网路延迟:

root@BEAN-1:~# ping 10.10.125.1
PING 10.10.125.1 (10.10.125.1) 56(84) bytes of data.
64 bytes from 10.10.125.1: icmp_req=1 ttl=64 time=0.178 ms
64 bytes from 10.10.125.1: icmp_req=2 ttl=64 time=0.090 ms
64 bytes from 10.10.125.1: icmp_req=3 ttl=64 time=0.270 ms
64 bytes from 10.10.125.1: icmp_req=4 ttl=64 time=0.156 ms
64 bytes from 10.10.125.1: icmp_req=5 ttl=64 time=0.145 ms
^C
--- 10.10.125.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3998ms
rtt min/avg/max/mdev = 0.090/0.167/0.270/0.061 ms

给eth0 注入8ms的延迟:

tc qdisc add dev eth0 root netem delay 8ms

然后通过ping查看是否生效:

ping 10.10.125.1
PING 10.10.125.1 (10.10.125.1) 56(84) bytes of data.
64 bytes from 10.10.125.1: icmp_req=1 ttl=64 time=8.17 ms
64 bytes from 10.10.125.1: icmp_req=2 ttl=64 time=8.17 ms
64 bytes from 10.10.125.1: icmp_req=3 ttl=64 time=8.18 ms
64 bytes from 10.10.125.1: icmp_req=4 ttl=64 time=8.28 ms
64 bytes from 10.10.125.1: icmp_req=5 ttl=64 time=8.13 ms
^C
--- 10.10.125.1 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4003ms
rtt min/avg/max/mdev = 8.139/8.190/8.286/0.050 ms

可以看到网络延迟增加了8ms左右。

查看当前的延迟信息

tc qdisc show dev eth1 
qdisc netem 8121: root refcnt 2 limit 1000 delay 8.0ms

改变网络延迟大小

注意,如果已经引入了延迟,但是要修改延迟大小,使用add就不行了,要用change

tc qdisc add  dev eth1 root netem delay 10ms
RTNETLINK answers: File exists

tc qdisc change  dev eth1 root netem delay 10ms

tc qdisc show dev eth1 
qdisc netem 8121: root refcnt 2 limit 1000 delay 10.0ms

或者我们不想区别第一次和修改,可以一律使用replace

删除引入的网络延迟
tc qdisc del dev eth1 root netem delay 1ms

显示当前的状态,无延迟
tc qdisc show dev eth1 
qdisc pfifo_fast 0: root refcnt 2 bands 3 priomap  1 2 2 2 1 2 0 0 1 1 1 1 1 1 1 1

#replace设置延迟为9ms
tc qdisc replace  dev eth1 root netem delay 9ms

# 显示当前状态,的确是delay 9ms
tc qdisc show dev eth1 
qdisc netem 8123: root refcnt 2 limit 1000 delay 9.0ms

# 用replace来修改网络延迟为4ms
tc qdisc replace  dev eth1 root netem delay 4ms

# 显示当前网络延迟,的确是4ms
tc qdisc show dev eth1 
qdisc netem 8123: root refcnt 2 limit 1000 delay 4.0ms

删除引入的延迟

tc qdisc del dev eth1 root netem delay 1ms

其他

我们在测试脚本中引入延迟,但是须知,脚本可能会被信号杀死,我们希望,脚本退出的时候,网络延迟被重置为0,这时候,对于shell脚本而言,需要使用trap,做清理工作。

function clean
{
   #此函数为清理函数,一般是将人为引入的网络延迟删除
}

trap clean EXIT

Linux TC(Traffic Control) 简介

众所周知,在互联网诞生之初都是各个高校和科研机构相互通讯,并没有网络流量控制方面的考虑和设计,IP协议的原则是尽可能好地为所有数据流服务,不同的数据流之间是平等的。然而多年的实践表明,这种原则并不是最理想的,有些数据流应该得到特别的照顾,比如,远程登录的交互数据流应该比数据下载有更高的优先级。

      针对不同的数据流采取不同的策略,这种可能性是存在的。并且,随着研究的发展和深入,人们已经提出了各种不同的管理模式。IETF已经发布了几个标准,如综合服务(Integrated Services)、区分服务(Diferentiated Services)等。其实,Linux内核从2.2开始,就已经实现了相关的流量控制功能。本文将介绍Linux中有关流量控制的相关概念, 用于流量控制的工具TC的使用方法,并给出几个有代表性实例。

一、相关概念
      报文分组从输入网卡(入口)接收进来,经过路由的查找,以确定是发给本机的,还是需要转发的。如果是发给本机的,就直接向上递交给上层的协议,比如TCP,如果是转发的,则会从输出网卡(出口)发出。网络流量的控制通常发生在输出网卡处。虽然在路由器的入口处也可以进行流量控制,Linux也具有相关的功能,但一般说来,由于我们无法控制自己网络之外的设备,入口处的流量控制相对较难。因此我们这里处理的流量控制一般指出口处的流量控制。流量控制的一个基本概念是队列(Qdisc),每个网卡都与一个队列(Qdisc)相联系,每当内核需要将报文分组从网卡发送出去,都会首先将该报文分组添加到该网卡所配置的队列中,由该队列决定报文分组的发送顺序。因此可以说,所有的流量控制都发生在队列中。

       有些队列的功能是非常简单的,它们对报文分组实行先来先走的策略。有些队列则功能复杂,会将不同的报文分组进行排队、分类,并根据不同的原则,以不同的顺序发送队列中的报文分组。为实现这样的功能,这些复杂的队列需要使用不同的过滤器(Filter)来把报文分组分成不同的类别(Class)。这里把这些复杂的队列称为可分类(Classiful)的队列。通常,要实现功能强大的流量控制,可分类的队列是必不可少的。因此,类别(Class)和过滤器(Filter)也是流量控制的另外两个重要的基本概念。

     类别(Class)和过滤器(Filter)都是队列的内部结构,并且可分类的队列可以包含多个类别,同时,一个类别又可以进一步包含有子队列,或者子类别。所有进入该类别的报文分组可以依据不同的原则放入不同的子队列 或子类别中,以此类推。而过滤器(Filter)是队列用来对数据报文进行分类的工具,它决定一个数据报文将被分配到哪个类别中。

二、使用TC
      在Linux中,流量控制都是通过TC这个工具来完成的。通常,要对网卡进行流量控制的配置,需要进行如下的步骤:

  ◆ 为网卡配置一个队列;

  ◆ 在该队列上建立分类;

  ◆ 根据需要建立子队列和子分类;

  ◆ 为每个分类建立过滤器。

      在Linux中,可以配置很多类型的队列,比如CBQ、HTB等,其中CBQ 比较复杂,不容易理解。HTB(Hierarchical Token Bucket)是一个可分类的队列, 与其他复杂的队列类型相比,HTB具有功能强大、配置简单及容易上手等优点。在TC中,使用”major:minor”这样的句柄来标识队列和类别,其中major和minor都是数字。

      对于队列来说,minor总是为0,即”major:0″这样的形式,也可以简写为”major: “比如,队列1:0可以简写为1:。需要注意的是,major在一个网卡的所有队列中必须是惟一的。对于类别来说,其major必须和它的父类别或父队列的major相同,而minor在一个队列内部则必须是惟一的(因为类别肯定是包含在某个队列中的)。举个例子,如果队列2:包含两个类别,则这两个类别的句柄必须是2:x这样的形式,并且它们的x不能相同,比如2:1和2:2。

      下面,将以HTB队列为主,结合需求来讲述TC的使用。假设eth0出口有100mbit/s的带宽,分配给WWW、E-mail和Telnet三种数据流量,其中分配给WWW的带宽为40Mbit/s,分配给Email的带宽为40Mbit/s,分配给Telnet的带宽为20Mbit/S。

      需要注意的是,在TC 中使用下列的缩写表示相应的带宽:

      ◆ Kbps : kilobytes per second,千字节每秒 ;

      ◆ Mbps : megabytes per second,兆字节每秒 ,

      ◆ Kbit : kilobits per second,千比特每秒 ;

      ◆ Mbit : megabits per second, 兆比特每秒 。

三、创建HTB队列
      有关队列的TC命令的一般形式为:

tc qdisc [add | change | replace | link] dev DEV [parent qdisk-id |root] [handle qdisc-id] qdisc [qdisc specific parameters]

      首先,需要为网卡eth0配置一个HTB队列,使用下列命令:

      #tc qdisc add dev eth0 root handle 1:htb default 11

      这里,命令中的”add”表示要添加,”dev eth0”表示要操作的网卡为eth0。”root”表示为网卡eth0添加的是一个根队列。”handle 1:”表示队列的句柄为1: 。”htb”表示要添加的队列为HTB队列。命令最后的”default 11”是htb特有的队列参数,意思是所有未分类的流量都将分配给类别1:11。

四、为根队列创建相应的类别
      有关类别的TC 命令的一般形式为:

tc class [add | change | replace] dev DEV parent qdisc-id [classid class-id] qdisc [qdisc specific parameters]

      可以利用下面这三个命令为根队列1创建三个类别,分别是1:1 1、1:12和1:13,它们分别占用40、40和20mb[t的带宽。

      #tc class add dev eth0 parent 1: classid 1:1 htb rate 40mbit ceil 40mbit

      #tc class add dev eth0 parent 1: classid 1:12 htb rate 40mbit ceil 40mbit

      #tc class add dev eth0 parent 1: cllassid 1:13 htb rate 20mbit ceil 20mbit

      命令中,”parent 1:”表示类别的父亲为根队列1: 。”classid1:11”表示创建一个标识为1:11的类别,”rate 40mbit”表示系统将为该类别确保带宽40mbit,”ceil 40mbit”,表示该类别的最高可占用带宽为40mbit。

五、为各个类别设置过滤器
      有关过滤器的TC 命令的一般形式为:

tc filter [add | change | replace] dev DEV [parent qdisc-id | root] protocol protocol prio priority filtertype [filtertype specific parameters] flowid flow-id

      由于需要将WWW、E-mail、Telnet三种流量分配到三个类别,即上述1:11、1:12和1:13,因此,需要创建三个过滤器,如下面的三个命令:

      #tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:11

      #tc filter add dev eth0 prtocol ip parent 1:0 prio 1 u32 match ip dport 25 0xffff flowid 1:12

      #tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 23 oxffff flowid 1:13

      这里,”protocol ip”表示该过滤器应该检查报文分组的协议字段。”prio 1” 表示它们对报文处理的优先级是相同的,对于不同优先级的过滤器,系统将按照从小到大的优先级顺序来执行过滤器,对于相同的优先级,系统将按照命令的先后顺序执行。这几个过滤器还用到了u32选择器(命令中u32后面的部分)来匹配不同的数据流。以第一个命令为例,判断的是dport字段,如果该字段与Oxffff进行与操作的结果是8O,则”flowid 1:11”表示将把该数据流分配给类别1:1 1。更加详细的有关TC的用法可以参考TC的手册页。

六、复杂的实例
      在上面的例子中, 三种数据流(www、Email、Telnet)之间是互相排斥的。当某个数据流的流量没有达到配额时,其剩余的带宽并不能被其他两个数据流所借用。在这里将涉及如何使不同的数据流可以共享一定的带宽。

      首先需要用到HTB的一个特性, 即对于一个类别中的所有子类别,它们将共享该父类别所拥有的带宽,同时,又可以使得各个子类别申请的各自带宽得到保证。这也就是说,当某个数据流的实际使用带宽没有达到其配额时,其剩余的带宽可以借给其他的数据流。而在借出的过程中,如果本数据流的数据量增大,则借出的带宽部分将收回,以保证本数据流的带宽配额。

      下面考虑这样的需求,同样是三个数据流WWW、E-mail和Telnet, 其中的Telnet独立分配20Mbit/s的带宽。另一方面,WWW 和SMTP各自分配40Mbit/s的带宽。同时,它们又是共享的关系,即它们可以互相借用带宽。

      需要的TC命令如下:

      #tc qdisc add dev eth0 root handle 1: htb default 21

      #tc class add dev eth0 partent 1: classid 1:1 htb rate 20mbit ceil 20mbit

      #tc class add dev eth0 parent 1: classid 1:2 htb rate 80mbit ceil 80mbit

      #tc class add dev eth0 parent 1: classid 1:21 htb rate 40mbit ceil 20mbit

      #tc class add dev eth0 parent 1:2 classid 1:22 htb rate 40mbit ceil 80mbit

      #tc filter add dev eth0 protocol parent 10 prio 1 u32 match ip dport 80 0xffff flowid 1:21

      #tc filter add dev eth0 protocol parent 1:0 prio 1 u32 match ip dport 25 0xffff flowid 1:22

      #tc filter add dev eth0 protocol parent 1:0 prio 1 u32 match ip dport 23 0xffff flowid 1:1

      这里为根队列1创建两个根类别,即1:1和1:2,其中1:1对应Telnet数据流,1:2对应80Mbit的数据流。然后,在1:2中,创建两个子类别1:21和1:22,分别对应WWW和E-mail数据流。由于类别1:21和1:22是类别1:2的子类别,因此他们可以共享分配的80Mbit带宽。同时,又确保当需要时,自己的带宽至少有40Mbit。

      从这个例子可以看出,利用HTB中类别和子类别的包含关系,可以构建更加复杂的多层次类别树,从而实现的更加灵活的带宽共享和独占模式,达到企业级的带宽管理目的。

信锐无线网络故障处理说明

网络拓扑大致为出口防火墙,下接上网行为管理,下接核心交换机,交换机上单臂部署信锐无线控制器和AP等。

现有部分用户反应,接入某无线信号后获取不到IP地址,无法上网。

查询无线用户认证日志得知,该终端接入时从vlan 90上获取IP,但是获取不到地址,查看无线控制器配置,得知终端用户获取IP的vlan配置在无线控制器上,但是未配置vlan 90,所以获取不到IP,修改该无线信号的配置,将vlan 90改成其他vlan号。

但是用户仍旧反应不能上网,再次查看无线信号的配置,发现该无线信号还启用了mac白名单的设置,但是未勾选相关的mac白名单,将mac白名单配置好后,用户看正常接入无线信号,正常上网。

山石防火墙部署HA模式,保证业务不中断

本示例介绍如何配置HA Active-Passive工作模式,以提高网络可靠性,保证业务不中断。

如下图所示,组建HA AP模式的两台设备分别为Device A和Device B。配置后,Device A将被选举为主设备,进行流量转发;Device B为备份设备。Device A会将其配置信息以及状态数据同步到备份设备Device B。当主设备Device A出现故障不能正常转发流量时,备份设备Device B会在不影响用户通信的状态下切换为主设备,继续转发流量。

步骤一: 配置Device A的监测对象。监控主设备ethernet0/0的工作状态,一旦发现接口工作失败,则进行主备切换。
选择“对象 > 监测对象”,并点击“新建”。   名称:track1 警戒值:255 监测类型:选择<接口>单选按钮,并点击“添加”按钮。在弹出的<添加监测对象>对话框,指定接口为“ethernet0/0”,权值为“255”
步骤二: 配置HA组。 
Device A   选择“系统 > HA”,在<组0>处配置。 优先级:10 监测对象:track1
Device B   选择“系统 > HA”,在<组0>处配置。 优先级:100
步骤三: 配置Device A的接口及策略。 
选择”网络 > 接口”,双击ethernet0/0。   绑定安全域:三层安全域 安全域:untrust 类型:静态IP IP地址:100.1.1.4 网络掩码:29
选择”网络 > 接口”,双击ethernet0/1。   绑定安全域:三层安全域 安全域:trust 类型:静态IP IP地址:192.168.1.4 网络掩码:29
选择“策略 > 安全策略”,并点击“新建”按钮创建一条策略规则。   名称:policy 源信息 安全域:trust 地址:Any 目的信息 安全域:untrust 地址:Any 其他信息 服务/服务组:Any 行为:允许
步骤四:配置HA控制连接接口,并开启HA功能。 
Device A   选择“系统 > HA”。 HA控制连接接口1:ethernet0/4 HA控制连接接口2:ethernet0/8 IP地址:1.1.1.1/24 HA簇ID:1
Device B   选择“系统 > HA”。 HA控制连接接口1:ethernet0/4 HA控制连接接口2:ethernet0/8 IP地址:1.1.1.2/24 HA簇ID:1
步骤五:主备同步完成后,配置主设备与备份设备的管理IP。
Device A   选择”网络 > 接口”,双击ethernet0/1。在<接口配置>对话框<IP配置>处点击“高级选项”。 管理IP IP地址:192.168.1.253
Device B   选择”网络 > 接口”,双击ethernet0/1。在<接口配置>对话框<IP配置>处点击“高级选项”。 管理IP IP地址:192.168.1.254
步骤六:验证结果。 
配置完成后,点击“系统 > 系统信息”,两台设备的HA状态分别如下显示:   Device A HA状态:Master Device B HA状态:Backup Device A:   Device B:
当Device A出现故障不能正常转发流量或Device A的ethernet0/0接口断开时,Device B会在不影响用户通信的状态下切换为主设备,继续转发流量。   点击“系统 > 系统信息”,两台设备的HA状态分别如下显示: Device A HA状态:Monitor Failed Device B HA状态:Master Device A:   Device B:

防火墙的逆向路由和路由器的反向接口策略路由

逆向路由:

如果启用,则向外转发数据包时需查询路由表

如果禁用,则向外转发数据包不查路由表,而根据会话信息实现数据包从哪里来,就从哪里出去。​

接口的逆向路由 影响到 运营商(联通)链路设备的连通!

假设防火墙上接口1的IP地址为202.0.0.1/30,接口2的IP地址为61.0.0.1/30 ,接口3的IP地址为219.1.1.1/30

有一条路由为 210.0.0.0/8 next-hop 61.0.0.2

一数据包源IP地址为210.0. 0.1 目的IP地址为 219.1.1.2的数据包从接口1收到,

接口1如果不开启逆向路由,源IP219.1.1.2 目的IP210.0.0.1的回复数据包会从接口1转发(原路返回,匹配会话表),

接口1如果开启逆向路由,会查找路由表,这样SOURCE_IP 219.1.1.2 D_IP 210.0.0.1的回复数据包将从接口2转发。​

反向接口策略路由:​​ 华三AR6600系列路由器 配置案例

1. 组网需求

网关设备Router A通过两个接口(Serail2/2/0和Serial2/2/1)和公网连接。用户PC从公网访问内网的HTTP Server服务,不妨设PC请求报文从Router A接口Serial2/2/0进入,通过网关设备转发,从Router A的私网接口GigabitEthernet2/1/1进入内网访问HTTP Server服务器。

要求:从私网返回的响应报文从Router A的接口GigabitEthernet2/1/1进入,经Router A转发时,能够从原来请求报文的入接口Serial2/2/0进入公网,返回用户PC。​

配置步骤

# 配置Router A各接口IP地址,并保证Router A与公网连通(略)。

# 在接口Serial2/2/0上配置内部服务器功能,将HTTP Server的IP地址192.168.1.2/24映射为2.1.1.100/16(和Router A的接口Serial2/2/0的IP地址在同一网段)。

system-view

[RouterA] interface serial 2/2/0

[RouterA-Serial2/2/0] nat server protocol tcp global 2.1.1.100 www inside 192.168.1.2 www

[RouterA-Serial2/2/0] quit

# 在接口Serial2/2/1上配置内部服务器功能,将HTTP Server的IP地址192.168.1.2/24映射为2.2.1.100/16(和Router A的接口Serial2/2/1的IP地址在同一网段)。

[RouterA] interface serial 2/2/1

[RouterA-Serial2/2/1] nat server protocol tcp global 2.2.1.100 www inside 192.168.1.2 www

[RouterA-Serial2/2/1] quit

# 定义10号节点,使匹配反向入接口Serial2/2/0的报文的下一跳地址为2.1.1.2/16。

system-view

[RouterA] policy-based-route test permit node 10

[RouterA-pbr-test-10] if-match reverse-input-interface serial 2/2/0

[RouterA-pbr-test-10] apply ip-address next-hop 2.1.1.2

[RouterA-pbr-test-10] quit

# 在以太网接口GigabitEthernet2/1/1上应用策略test。

[RouterA] interface GigabitEthernet 2/1/1

[RouterA-GigabitEthernet2/1/1] ip policy-based-route test

山石防火墙工作原理

防火墙作为一种网络安全产品,通过控制进出网络的流量,保护网络的安全。防火墙的基本原理是通过分析数据包,根据已有的策略规则,允许或阻断数据流量。除此之外,防火墙也具有连通网络的功能,实现安全可信区域(内部网络)和不信任区域(外部网络)之间的桥接。

应用负载网关是山石网科面向电信运营商、广电市场、院校和大中型企业开发的负载均衡产品,能够使负载分担、安全与网络深度融合。用户可以将其部署在多ISP链路的出口,通过对链路状态的检测,采用对应的调度算法将数据合理、动态的分发到不同链路上,以提高链路利用率。

StoneOS 应用负载网关系统架构

组成StoneOS应用负载网关系统架构的基本元素包括:

  • 安全域:域是一个逻辑实体,将网络划分为不同部分,应用了安全策略的域称为“安全域”。例如,trust安全域通常为内网等可信任网络,untrust安全域通常为互联网等存在安全威胁的不可信任网络。
  • 接口:接口是流量进出安全域的通道,接口必须绑定到某个安全域才能工作。默认情况下,接口都不能互相访问,只有通过策略规则,才能允许流量在接口之间传输。
  • 虚拟交换机(VSwitch):具有交换机功能。VSwitch工作在二层,将二层安全域绑定到VSwitch上后,绑定到安全域的接口也被绑定到该VSwitch上。一个VSwitch就是一个二层转发域,每个VSwitch都有自己独立的MAC地址表,因此设备的二层转发在VSwitch中实现。并且,流量可以通过VSwitch接口,实现二层与三层之间的转发。
  • 虚拟路由器(VRouter):简称为VR。VRouter具有路由器功能,不同VR拥有各自独立的路由表。系统中有一个默认VR,名为trust-vr,默认情况下,所有三层安全域都将会自动绑定到trust-vr上。系统支持多VR功能且不同硬件平台支持的最大VR数不同。多VR将设备划分成多个虚拟路由器,每个虚拟路由器使用和维护各自完全独立的路由表,此时一台设备可以充当多台路由器使用。多VR使设备能够实现不同路由域的地址隔离与不同VR间的地址重叠,同时能够在一定程度上避免路由泄露,增加网络的路由安全。
  • 策略:策略是设备的基本功能,控制安全域间/不同地址段间的流量转发。默认情况下,设备会拒绝设备上所有安全域/接口/地址段之间的信息传输。策略规则(Policy Rule)决定从安全域到另一个安全域,或从一个地址段到另一个地址段的哪些流量该被允许,哪些流量该被拒绝。

StoneOS系统的架构中,安全域、接口、虚拟路由器和虚拟交换机之间具有从属关系,也称为“绑定关系”。

null

各个元素之间的关系为:接口绑定到安全域,安全域绑定到VSwitch或VRouter,进而,接口也就绑定到了某个VSwitch或VRouter。一个接口只能绑定到一个安全域上,一个安全域可以绑定多个接口。二层安全域只能绑定到VSwitch上,三层安全域只能绑定到VRouter上。

安全策略规则

默认情况下,所有的接口之间的流量都是拒绝的。不同的安全域之间、相同的安全域之内的接口流量均不能互访。要实现接口的互访,只有通过创建策略规则,才能将流量放行。 如果既有从源到目的的访问,又有反方向的主动访问,那么就要创建两条策略规则,允许双方向的流量通过;如果只有单方向的主动访问,而反方向只回包即可,那么只需要创建源到目的的一条单方向的策略。

根据接口所属的安全域、VSwtich或VRouter的不同,要创建不同的策略才能允许接口互访,具体的规则如下:

  • 属于同一个安全域的两个接口实现互访:
    需要创建一条源和目的均为该安全域的策略。
    例如,要实现上图中的eth0/0与eth0/1的互访,需要创建从L3-zone1到L3-zone1的允许流量通过的策略;或者,要实现eth0/3与eth0/4的互访,要创建源和目的均为L2-zone2的策略。
  • 两个二层接口所在的安全域属于同一VSwitch,实现接口互访:
    需要创建两条策略,第一条策略允许从一个安全域到另一个安全域流量放行,第二条策略允许反方向的流量通过。
    例如,要实现上图中的eth0/2与eth0/3的互访,需要创建从L2-zone1到L2-zone2的策略和L2-zone2到L2-zone1这两条策略。
  • 两个二层接口所在的安全域属于不同的VSwtich的,实现接口互访:
    每个VSwtich都具有唯一的一个VSwtich接口(VSwitchIF),该VSwtichIF与某个三层安全域绑定。要实现互访,需要创建放行策略,源是一个VswichIF所属的三层安全域,目的是另一个VSwtichIF所属的三层安全域。同时,还需要创建反方向的策略。
  • 两个三层接口所在的安全域属于同一VRouter,实现接口互访:
    需要创建策略允许从一个安全域到另一个安全域的流量放行。例如,要实现eth0/0和eth0/5的互访,要创建从L3-zone1到L3-zone2的允许流量通过的策略,然后再创建反方向的策略。
  • 两个三层接口所在的安全域从属于不同的VRouter的,实现接口互访:
    若要实现接口互访,需要创建策略规则,允许从一个VRouter到另一个VRouter之间的流量放行。
  • 同一VRouter下的二层接口和三层接口,实现互访:
    创建允许流量通过的策略,策略的源是二层接口的VSwtichIF所绑定的三层安全域,策略的目的是三层接口所属的三层安全域。然后,再创建反向策略。
    例如,要实现eth0/0与eth0/2的互访,需要创建从L3-zone1到L2-zone1的策略,以及反向策略。

数据包处理流程

二层转发域中的转发规则

在一个VSwitch,即一个二层转发域中,应用负载网关StoneOS通过源地址学习建立MAC地址转发表。每个VSwitch都有自己的MAC地址转发表。StoneOS根据数据包的类型(IP数据包、ARP包和非IP且非ARP包),分别进行不同的处理。

对于IP数据包,StoneOS遵循以下转发规则:

  1. 收到数据包。
  2. 学习源地址,更新MAC地址转发表。
  3. 如果目的MAC地址是单播地址,则根据目的MAC地址查找出接口。这时又有以下两种情况:
    • 如果目的MAC地址为VSwitch接口的MAC地址,并且VSwitch接口有IP地址,则按照路由转发规则进行转发;若VSwitch接口没有IP地址,则丢弃。
    • 根据目的MAC地址找到出接口。如果找到的出接口是数据包的源接口,则丢弃该数据报,否则从出接口继续转发数据包。
    • 如果在MAC地址表中没有找到出接口(未知单播),直接跳到第6步。
  4. 根据入接口和出接口确定源域和目的安全域。
  5. 查找策略规则。如果策略规则允许则转发数据包;如果策略规则不允许,则丢弃数据包。
  6. 如果在MAC地址转发表中没有找到出接口(未知单播),StoneOS则尝试将数据包发给VSwitch中的所有其它二层接口,此时的操作流程为:把其它的每一个二层接口做为出接口,二层接口所在的二层安全域作为目的域,查询策略规则,如果策略允许,则在该二层接口转发数据包,如果策略不允许,则丢弃数据包。概括地说,对未知单播的转发即为策略限制下的广播。对于广播和多播IP包的处理类似于对未知单播的处理,不同的是广播和多播IP包会被同时拷贝一份进行三层处理。

对于ARP包,广播包和未知单播包转发到VSwitch中的其它所有接口,同时,复制一份由ARP模块进行处理。

三层转发域的转发规则

null
  1. 识别数据包的逻辑入接口,可能是一般无标签接口,也可能是子接口。从而确定数据包的源安全域。
  2. StoneOS对数据包进行合法性检查。如果源安全域配置了攻击防护功能,系统会在这一步同时进行攻击防护功能检查。
  3. 会话查询。如果该数据包属于某个已建立会话,则跳过4到10,直接进行第11步。
  4. 目的NAT(DNAT)操作。如果能够查找到相匹配的DNAT规则,则为包做DNAT标记。因为路由查询需要DNAT转换的IP地址,所以先进行DNAT操作。
    *说明:如果系统配置静态一对一BNAT规则,那么先查找匹配的BNAT规则。数据包匹配了BNAT规则之后,按照BNAT的设定进行处理,不再查找普通的DNAT规则。
  5. 路由查询。系统的路由查询顺序从前到后依次为:策略路由(PBR)> 源接口路由(SIBR)> 源路由(SBR)> 目的路由(DBR)> ISP路由。此时,系统得到了数据包的逻辑出接口和目的安全域。
  6. 源NAT(SNAT)操作。如果能够查找到相匹配的SNAT规则,则为包做SNAT标记。
    *说明:如果系统配置静态一对一BNAT规则,那么先查找匹配的BNAT规则。数据包匹配了BNAT规则之后,按照BNAT的设定进行处理,不再查找普通的DNAT规则。
  7. 下一跳VR查询。如果下一跳为VR,则继续查看指定的下一跳VR是否超出最大VR数限制(当前版本系统仅允许数据包最多通过3个VR),如果超过则丢弃数据包,如果未超过,返回4;如果下一跳不是VR,则继续进行下一步策略查询。
  8. 策略查询。系统根据数据包的源安全域、目的安全域、源IP地址和端口号、目的IP地址和端口号以及协议,查找策略规则。如果找不到匹配的策略规则,则丢弃数据包;如果找到匹配的策略规则,则根据规则指定的行为进行处理,分别是:
    • 允许(Permit):允许数据包通过。
    • 拒绝(Deny):拒绝数据包通过。
    • 隧道(Tunnel):将数据包转发到指定的隧道。
    • 是否来自隧道(Fromtunnel):检查数据包是否来自指定的隧道,如果是,则允许通过,如果不是,则丢弃。
    • Web认证(WebAuth):对符合条件的流量进行Web认证。
  1. 第一次应用类型识别。系统根据策略规则中配置的端口号和服务,尝试识别应用类型。
  2. 会话建立。
  3. 如果需要,进行第二次应用类型识别。根据数据包的内容和流量行为再次对应用类型进行精确识别。
  4. 应用层行为(ALG)控制。为特定的复杂协议实施自适应处理。
  5. 根据会话中记录的信息,例如NAT标记等,执行相应的处理操作。
  6. 将数据包转发到出接口。

H3C无线网络终端MAC白名单问题处理方法

现有一个H3C无线网络,发射无线信号LD,现有一新终端连接LD信号,DHCP获取到IP,但是不能上网,打开任何网页都提示该页无法显示,网关也ping不通。

通过dis cu查看配置,发现该LD信号属于服务模板23,查看服务模板23下面连接的终端,dis wlan client service-template 23,查看到该终端的MAC,但是对应的IP地址显示0.0.0.0,即没有IP地址,继续查看配置dis wlan service-template 23,该服务模板绑定的接口是wlan-ess10口,然后进入interface wlan-ess10下,dis this看下配置,发现该接口下有policy 11,或者通过dis qos policy interface wlan-ess10,可以看到该接口下的policy 11下有一条acl 4020,通过dis acl 4020可以看到设置了MAC白名单,仅放通了相关MAC地址,通过以下配置将新终端的MAC加入后,该新终端即可正常获取到IP地址并且上网。

[H3C-wx]acl number 4020
[H3C-wx]rule x permit source-mac 终端的MAC ffff-ffff-ffff

做好相关配置后做好保存配置操作。

H3C无线控制器V5版本配置AP上线的方法

H3C无线控制器上没有开启自动上线,需要先手动在控制器上输入AP信息,然后新建vlan、新建vlan接口、新建wlan-ess接口、新建无线服务。然后在AP上配置射频参数。交换机上需要开启DHCP,为手机终端分配IP地址,并且交换机上与AP互联的接口启用trunk。

无线控制器上的配置如下:

1、新建vlan
vlan335
2、新建wlan-ess接口
interface WLAN-ESS15
port access vlan 335
3、新建服务模板,绑定wlan-ess接口
wlan service-template 15 clear
ssid wifi
bind WLAN-ESS 15
client forwarding-mode local vlan 335
service-template enable
4、为vlan接口分配地址
interface Vlan-interface335
ip address 192.168.12.253 255.255.255.0
portal server imc method layer3
portal domain imc
portal forwarding-mode local
5、为AP配置射频参数
wlan ap wifi-1 model WA2620i-AGN
serial-id XXXXXXXX
radio 1
radio 2
service-template 15 vlan-id 335
radio enable

交换机上的配置如下:
1、配置admin密码、telnet、设备名
Ruijie(config)#line vty 0 4
Ruijie(config-line)#login local
Ruijie(config-line)#exit
Ruijie(config)#username admin password ruijie
Ruijie(config)#enable password  ruijie
Ruijie(config)#end
Ruijie#write
Ruijie(config)#hostname jiaohuanji
enable service web-server
2、配置1口trunk接上联设备,2-12口trunk接AP,13-48口access接PC
interface range gigabitethernet0/1 – 12
switchport mode trunk
switchport trunk allowed vlan all
no shutdown

interface range gigabitethernet0/16 – 48
switchport access vlan 1
no shutdown
3、配置vlan1地址192.168.1.253/24,vlan325地址192.168.12.1/24
interface vlan335
ip address 192.168.12.1 255.255.255.0
4、配置DHCP
Ruijie(config)#service dhcp
ip dhcp excluded-address 192.168.12.1
ip dhcp excluded-address 192.168.12.253 192.168.12.254
ip dhcp pool wifi
lease 0 2 0
network 192.168.12.0 255.255.255.0
dns-server 218.2.135.1 223.5.5.5
default-router 192.168.12.1
exit
5、配置默认路由
ip route 0.0.0.0 0.0.0.0 192.168.1.254

AP的配置如下:
sysname wifi-1
telnet server enable
wlan ac ip 192.168.X.2
vlan1
vlan 335
interface Vlan-interface1
ipv6 address auto
ip address 192.168.1.1 255.255.255.0
ipv6 address dhcp-alloc
#
interface Vlan-interface325
portal server imc method direct
portal nas-id H3C_CMCC
portal nas-ip 192.168.X.2
#
interface GigabitEthernet1/0/1
port link-type trunk
port trunk permit vlan all
#
interface GigabitEthernet1/0/2
#
interface WLAN-BSS15
port access vlan 335
#
interface WLAN-Radio1/0/1
#
interface WLAN-Radio1/0/2
#
ip route-static 0.0.0.0 0.0.0.0 192.168.1.254

防火墙阻断勒索病毒的配置方法

有一个分支机构,网络流量被总部的设备检测到存在勒索病毒,现在需要定位到病毒源并阻隔病毒流量,该分支机构所有网络设备都通过一台防火墙出去。在防火墙上查看会话,目的端口写勒索病毒的几个常用端口,TCP/UDP的135、137、138、139端口和TCP的445端口,可以看到有多台PC的会话,这些PC都是可疑的病毒源,再从防火墙上创建安全策略,源区域写PC所在的区域,源端口所有,目标区域可写所有,目标端口写勒索病毒的几个端口TCP/UDP的135、137、138、139端口和TCP的445端口,在防火墙上配置好后,再对几台PC做杀毒即可。

建议使用专业的IPS设备做安全防护,及时更新IPS库,另外PC上也要安装杀毒软件更新病毒库。