Network学习笔记

Abstract

Linux的网络通信功能是非常强大和先进的,这也是Linux成为很多公司服务器的首选软件的原因之一。本文记录各种网络通信技术和操作。

Table of Contents

1. 串口通信

基础概念

RS-232C规范

小技巧

2. 网络基础

常用网络设备:

电路交换和分组交换

面向连接协议和无连接协议

QoS

3. TCP/IP网络

TCP/IP历史

TCP/IP四层结构

OSI参考模型各层功能介绍

数据报文传送过程

PPP协议

PPP核心协议

LCP链路配置

LCP链路维护与链路终止

NCP--网络控制协议

鉴别协议

PPP特色协议

链路质量监测

压缩控制协议(CCP)和压缩算法

加密控制协议(ECP)和加密算法

多链路协议(MP)

PPP协议帧格式

PPP通用帧格式

协议字段

以太帧结构

基本概念

IP报文头

IP子网划分

VLSM和CIDR

TCP和UDP的选择

TCP建立和断开的过程

4. 无线网络

5. 交换机

Cisco IOS登录

CLI功能简介

启用Web管理界面

ROM监控系统

常用Cisco交换机介绍

交换式网络设计

配置Supervisor Engine

配置2层接口

交换表

端口选择

配置3层接口

VLAN和Trunking技术

创建VLAN

Trunking技术

VTP

私有VLAN

STP生成树协议

VLAN ACL

ARP操作

在交换机上配置DHCP服务器

6. PIX防火墙

入门

ASA安全级别

基本配置

PPPoE拔号配置

NAT

访问控制列表--ACL

Turbo ACL

icmp ACL

PDM

VPN

IKE

CA

LAN to LAN VPN

easy remote VPN

远程访问VPN

远程连接PIX

命令授权

List of Tables

3.1. OSI模型各层次总结表

3.2. PPP标准

3.3. PPP通用帧格式

Chapter 1. 串口通信

Table of Contents

基础概念

RS-232C规范

小技巧

串口通信是UNIX下一种主要的通信方式,早期的UNIX利用串口来进行输入/输出操作。现在的串口主要用于连接Modem和工控机等嵌入式设备。

基础概念

术语

波特率(bps),每秒位,表示串口的速度。串口通信是按bit(位)传送数据的,一次只能传送1个bit。bps定义了每秒可以传送的位数。如9600bps表示,

数据终端设备(DTE),如我们的计算机。

数据通讯设备(DCE),如我们的Modem。

RS232,串口通信标准。

串口接口有9针和25针两种,线缆连接方式有两种,一种是直联方式,如计算机到Modem的连接,DTE与DCE两头的线对是一一对应的。一种是交叉方式,也叫null-modem线,DTE的发送端要连接到DCE的接收端,DTE的接收端要连接到DCE的发送端。下面是具体的连接图:

        RS232 null modem的接法

------------------------------------------

      A端                   B端

------------------------------------------

     2(TxD)              3(RxD)

     3(RxD)              2(TxD)

     7(GND)              7(GND)

------------------------------------------

 

Linux下的串口设备文件是/dev/ttyS0和/dev/ttyS1,分别对应计算机上的COM1和COM2接口。使用statserial命令可以查看串口状态。

debian:~/c# statserial /dev/ttyS0

 

命令正常运行后,将列出/dev/ttyS0端口的信息:

 

Device: /dev/ttyS0

 

Signal  Pin  Pin  Direction  Status  Full

Name    (25) (9)  (computer)         Name

-----   ---  ---  ---------  ------  -----

FG       1    -      -           -   Frame Ground

TxD      2    3      out         -   Transmit Data

RxD      3    2      in          -   Receive  Data

RTS      4    7      out         1   Request To Send

CTS      5    8      in          1   Clear To Send

DSR      6    6      in          1   Data Set Ready

GND      7    5      -           -   Signal Ground

DCD      8    1      in          0   Data Carrier Detect

DTR     20    4      out         1   Data Terminal Ready

RI      22    9      in          0   Ring Indicator

 

 

在串行通信中,数据是一位位串行传送的,发送端和接收端每次都只能发送或接收一位数据。串行通信可以分为同步通信和异步通信两种方式。两者的差异主要在通信两端的时钟信号是否使用一信号源。

在同步通信中,发送端和接收端使用同一时钟信号。该时钟信号可由任一端提供,也可使用外部的时钟源。时钟频率可以固定,也可定期变更。所有要传输的位都与这个时钟同步,即每个要传输的位都是在时钟跳变(上升沿或下降沿)之后的一个规定时间内有效。接收端也利用相同的时钟来接收传输来的位。在同步传输中有开始位和停止位,用来表示一次传输的开始和结束。同步通信在电路板上或短距离传输的速度比异步传输快,但长距离传输由于需要一条额外的时钟线,同步的时钟信号容易受到现场噪音的干扰而造成通信失真。

异步通信不需要时钟线同步两端的时钟,两端使用各自的时钟信号,但通信两端的时钟频率必须保持一致。每个传输的位都用一个起始位与时钟同步,用一个或多个停止位表示传输结束。异步通信是串口通信的主要通信方式,PC上的串口使用的就是异步通信方式。

异步通信的传输数据格式有很多种,最常用的是8-N-1方式,它表示发送方以一个起始位表示传输开始,后跟8位数据,之后跟一个停止位表示数据传输结束,N表示不做奇偶校验。接收方接收到一个起始位后,就知道一个字节的传输开始了,接收方会用自已的时钟频率读取后面的8位数据,接收到停止位后就马上停止接收数据,并把接收的数据送到接收缓冲区中。

RS-232C规范

RS-232C标准是由美国EIA(电子工业联合会)和一些IT公司开发的通信协议。

电子特性:

在TxD和RxD上

逻辑1 = -3V ~ -15V

逻辑0 = +3V ~ +15V

在RTS、CTS、DSR、DTR和DCD控制线上

信号有效(接通、ON状态、正电压)= +3V ~ +15V。

信号无效(断开、OFF状态、负电压)= -3V ~ -15V。

小技巧

连接终端启动系统时重复出现登陆提示符无法login的问题,发生这种现象的原因,就是终端串口线没有严格按照标准Null Modem线序做,而是用了通常的普通终端线(典型的比如CISCO网络设备带的9针串口电缆)。Null Modem的线序是:

2、3对倒,7、8对倒,5直连。1、6都接对端4

 

普通终端线的区别就在于1、6接对端4上,都只有1接对端4,但1和6没有短接。如果要改造,就是用一根不足1厘米的线把1和6短接即可。

Chapter 2. 网络基础

Table of Contents

常用网络设备:

电路交换和分组交换

面向连接协议和无连接协议

QoS

常用网络设备:

中继器。信号在线路中传输时会因衰减、干扰和失真而使信号不能长距离传输。中继器能再生信号,使信号的传输距离更远。中继器工作中物理层。

网桥。当网络上的机器很多时,网络会因广播信号过多而造成拥塞。网桥可以把一个大的网络分成两多或多个小网络。广播信号只在小网络中传递。网桥有几种类型,有源路由网桥,透明网桥,转换式网桥、封装式网桥。透明网桥是最常用的一种网桥方式。透明网桥执行3种简单的功能:学习、转发和过滤。网桥一般都有两个以上的接口,连接不同的网络区域。网桥通过无目的地侦听所有接口来学习网络中每台设备的MAC地址,并把MAC地址和所在接口号记录到桥接表中。当不同区域的设备要通信时,网桥通过桥接表把数据从一个接口转发到另一个接口,从而实现两台设备的通信。当同区域的设备要通信时,网桥通过查看桥接表发现在同一区域(接口),网桥就不会转发该数据,数据被过滤掉了。透明网桥的学习、转发和过滤功能对于用户来说都是不可见,透明的。网桥工作在数据链路层。

路由器。也叫网关或中介系统,用以连接不同子网,指示到达不同子网的路径。路由器是工作在网络层的。

交换机。可以理解为多端口网桥,每个与交换机端口连接的设备就是一个独立的广播域。

电路交换和分组交换

电路交换联网方式是指当我们要通信时,需要在通信双方建立一条连接电路,这个电路可以是固定的,也可以是根据需要建立的。连接电路一旦建立,双方就固定地使用该条电路通道来传送信息。电路交换的典型应用是电话系统。当打通电话后,双方就固定地占用了一条电路进行通话(信息交换),直到电话挂断。每次打电话占用的电路都可能是不同的。

分组交换联网方式不会使用固定的路径来传送信息。它把要传送的信息分割成小的信息块,经由不同的路径发送到接收方。接收方把接收的分组按一定的顺序重新组合成原始信息。

两种交换方式都各有优缺点,在设计网络时应该使用哪种交换方式呢?判断的一个重要依据是网络媒体是共享的还是专用的。对于共享的网络来说采用分组网络能更有效地利用网络媒体,使用电路交换则会长期锁定共享网络媒体资源。分组网络由于信息通道不固定,数据分组有可能会在传输中丢失,或者出现顺序出错。这时就要靠上层的网络协议提供的功能进行重发。

现代的网络,电路交换和分组交换经常相结合使用。如ADSL拔号上网,使用IP数据报携带较高层的数据,而通过电路交换的电话网络与互联网联接。

面向连接协议和无连接协议

面向连接协议需要在发送信息之前,在联网设备之间建立一条逻辑连接,如果逻辑连接建立成功则可开始进行通信。典型的面向连接的协议是TCP。

面向无连接的协议在发送信息前不需要与对方建立连接,直接发送。典型的无连接协议是UDP。

QoS

时延是网络性能的重要参数,通过QoS可以改善网络时延。QoS描述了数据在设备之间是如何传输的特性。QoS主要有以下几个特性:

预留带宽。将网络接口的一部份带宽预留给某种关健应用。

时延管理。

流量优先权。能处理分组,使较重要的连接能比其它连接有更高的优先权。

流量整形。

网络拥塞避免。该特性指监控网络中特定连接,当网络中特定部份拥塞时,对数据重新选路。

Chapter 3. TCP/IP网络

Table of Contents

TCP/IP历史

TCP/IP四层结构

OSI参考模型各层功能介绍

数据报文传送过程

PPP协议

PPP核心协议

LCP链路配置

LCP链路维护与链路终止

NCP--网络控制协议

鉴别协议

PPP特色协议

链路质量监测

压缩控制协议(CCP)和压缩算法

加密控制协议(ECP)和加密算法

多链路协议(MP)

PPP协议帧格式

PPP通用帧格式

协议字段

以太帧结构

基本概念

IP报文头

IP子网划分

VLSM和CIDR

TCP和UDP的选择

TCP建立和断开的过程

TCP/IP历史

1973年,为组建ARPAnet而开发了一个核心协议--TCP。但这个TCP和现时使用的TCP所代表的意思不同,这个TCP代表传输控制程序(Transmission Control Program)。

现代TCP前身的第一版本写于1973年,然后修订形成因特网传输控制规范(RFC 675)于1974年12月出版。

1977年3月,第二版的TCP文档发布。

1977年8月,因特网和TCP/IP的开拓者之一Jon Postel发表了关于TCP状态的评论。指出早期的TCP版本试图做太多的事情,它不但作为一个主机端到端协议,也作为一个互联网打包和选路协议。他建议采用分层和模块化方法把这两个功能分开,TCP只作为主机端到端协议,创建一个新的协议作为互联网打包和选路协议。

1978年,第三版的TCP文档发布,TCP正式被拆分成TCP和IP两层,形成了TCP/IP的体系结构定义。

1980,现代网络使用的TCP/IP标准(第4版)正式发布。TCP/IP成为运行ARPAnet的标准协议集合。20世纪80年代越来越多的机器和网络使用TCP/IP协议连接到不断发展的ARPAnet上,最终形成了(Internet)因特网。

TCP/IP四层结构

TCP/IP是一个四层的协议系统,分别是:

应用层(Telnet、HTTP),协议的最顶层,负责处理各种网络应用程序的细节。

传输层(TCP、UDP),主要为两台主机上的应用程序提供端到端的通信。

网络层(IP、ICMP),处理网络分组在网络中的活动,如分组路由。

链路层(ARP,RARP),协议的最低层,通常包括操作系统中的驱动程序和网卡,主要处理比特流信息。

TCP/IP与OSI模型对比图:

OSI参考模型各层功能介绍

物理层。它是OSI参考模型的最低层,缩写为PHY。物理层接收和发送的都是0和1,不理会具体的报文内容。物理层负责完成以下工作:

硬件规格参数定义。包括电缆、连接器、无线电收发器、网络接口卡等。

编码和信令。将计算机或设备的比特转换成能经网络发送的信号。

数据传输和接收。

物理层与数据链路层紧密相关,有些数据链路层的功能也会由物理层实现。

数据链路层。以太网、令牌网、光纤网、802.11无线网、ATM、SLIP和PPP就是以数据链路层技术来划分。数据链路层常被划分为两个子层:逻辑链路控制(logical link control,LLC)和媒体访问控制(media access control,MAC)。数据链路层负责的工作如下:

逻辑链路控制。实现网络上本地设备之间逻辑链路的建立和控制所需的功能。为网络层提供服务,隐藏数据链路层其余细节。

媒体访问控制。网络使用一条共享媒体(如一根网线)来传输数据,为避免冲突,需对如何使用媒体进行访问控制。如以太网使用CSMA/CD方法进行媒体访问控制,而令牌环网通过令牌传递来实施控制。

数据成帧。把网络层数据报封装成可以在物理层发送的帧。如以太网的以太帧。

寻址。每台网络设备都有一个全球唯一的硬件地址,这个硬件地址也叫MAC地址。链路层协议负责MAC地址寻址。

差错检测和处理。数据帧的CRC检验经常都是基于帧内容计算出来,然后再包括进帧中。

物理层标准。物理层和数据链路层是密切相关的。一个物理层的需求,通常是链路层标准中描述的某一特定技术的一部份。物理层硬件和编码的要求是由链路层使用的技术指定的。

网络层。网络层处理网络之间的路由选路,负责把网络联接成互联网。网络层执行的工作如下:

逻辑寻址。如IP地址寻址。

选路。处理不同来源的报文,确定它们需发送的目的地,也就是以太网中路由器实现的功能。

数据报封装。接收上层报文,添加网络层首部封装成数据报(也叫分组)。

分片与重组。在发送报文时,如果分组的长度超过了数据链路层要求的长度,则要负责把报文分片,形成较小的分组再发送。接收方在网络层负责把分片的分组重组。

差错处理和诊断。

运输层。负责高层应用程序进程间之间的通信。主要执行以下特定功能。

进程级寻址。区分不同软件进程,使不同软件可在同一主机上可以使用相同的网络层协议。如TCP/UDP的端口机制。

多路复用和分解。在发送方,使用进程级地址,复用多个应用程序待运输的数据,将它们组合成一个要发送的单一数据流。在接收方,从接收的数据报中分解出数据,把每项数据发送到相应的应用程序进行接收。

分片和重组。与网络层一样,运输层也会根据网络层的要求对数据报进行分片,在接收方再对分片的数据报进行重组。

连接建立、管理和终止。

确认和重传。发送设备每当发送数据时都启动一个定时器。如果收到数据,接收方返回一个确认报文给发送方表示传输成功。如果在定时器超时时发送方还没有收到确认信息,则重传数据。

流量控制。控制发送数据的速率,防止接收方来不及接收数据。可检测并处理发送方和接收方之间速率的不匹配问题。

会话层。从这层开始的协议主要关注软件应用问题,不关心网络的细节和互联网的实现问题。会话是两个应用程序之间的持久性逻辑连接,该连接使它们可以在持续时间内交换数据。会话层负责建立和管理会话。会话层协议其实是一组应用程序接口或API,常见的API包括TCP/IP套接字、远程过程调用(RPC)和NetBIOS等 。开发者可以使用TCP/IP套接字创建TCP应用程序,而不需知道TCP/IP工作的细节。

表示层。该层处理数据的表示,它并不总是需要的,有些通信可以不需要它。下面是表示层处理一些特殊类型的数据问题的应用:

转换。同一网络上有多种不同类型的计算机,如PC、Mac、大型机等。每个都有许多不同的特性和不同的数据表示方法(字符集)。表示层隐藏了机器之间的差异。

压缩。为提高数据的吞吐率可在表示层进行压缩(解压缩)。

加密。可执行某种类型的加密(解密),保证数据的安全。如ssl就是与表示层关联的一种加密方法。

由于表示层不是必须的,所以第七层也可以和第五层直接通信。

应用层。参考模型的最高层,是网络应用程序所使用的层,实现特定的网络应用。应用层协议有很多,如:HTTP、FTP、POP3、DHCP、SNMP等。

OSI模型上三层的区别不是非常清晰,TCP/IP模型直接就把这三层归并成应用层。

Table 3.1. OSI模型各层次总结表

层次

主要功能

处理数据类型

范围

常用协议和技术

物理层

编码和信令;物理数据舆;硬件规范;拓扑和设计

比特

在本地设备之间发送的电信号或光信号

物理层的大部份技术列在数据链路层

数据链路层

逻辑链路控制;媒体访问控制;数据成帧;寻址;差错检测和处理;定义物理层需求

本地设备之间的低级数据报文

IEEE802.2,LLC,以太网,令牌环,FDDI和以CDDI,IEEE802.11,ATM,SLIP和PPP

网络层

逻辑寻址;选路;数据报封装;分组和重组;差错处理和诊断

数据报/分组

本地或远程设备间的报文

IP,IPv6,IP NAT,IPsec,ICMP,IPX,DLC,路由协议(RIP、BGP等)

运输层

进程级寻址(TCP端口);多路复用/分解;连接管理;分片和重组;确认和重传;流量控制

数据报/报文段

软件进程间通信

TCP,UDP,SPX,NETBEUI

会话层

会话创立、管理和中止

会话

本地或远程设备间的会话

NetBIOS,套接字,命名管道,RPC

表示层

数据转换;压缩;加密

用户数据

应用数据表示

SSL,SHELL和重定向,MIME

应用层

用户应用程序服务

用户数据

应用程序数据

HTTP,DNS,DHCP,SNMP,FTP,SMTP,POP3

 

数据报文传送过程

相邻层之间通过接口进行通信,发送方由高层到低层逐层封装数据,接收方由低层到高层逐层解包数据。如果接收方与发送方位于同一网段,则不需进行路由选路,不经路由设备直达接收方。如果通信双方不在同一网段,如我们访问互联网,则需进行路由选路,经过若干路由设备。报文经过路由设备时进行的处理过程是这样的:在路由设备的物理层接收报文,然后向上传递到数据链路层、网络层。在网络层路由设备会判断报文的目的IP地址是否是本地网络,然后将报文重新打包下发到数据链路层和物理层发送出去。在这个过程中网络层的目的IP地址始终保护不变,数据链路层的MAC地址更改成本地目的主机的MAC地址或下一个路由器的MAC地址。这个过程图示如上:

PPP协议

PPP是现时最流行的第2层广域网技术之一。PPP的成功导致派生协议的发展,如以太网上的PPP(PPPoE),ATM上的PPP(PPPoA)这些派生协议将PPP作为一层放在现有的数据链路层技术上。PPP主要组件有三个:

PPP封装方式。PPP的主要工作是获取上层报文(网络层报文,如IP报文),将其封装后传输给物理层进行发送。PPP基于HDLC使用的成帧方法。PPP的帧被设计成很小并且只包含一些简单的字段,从而得到带宽利用率和处理速度的最大化。

链路控制协议(LCP)。LCP负责设备之间链路的创建、维护和终止。在链路创建前通信两边会进行协商认证,在这个过程中会使用挑战握手鉴别协议(Challenge Handshake Authentication Protocol,CHAP)和口令鉴别协议(Passowrd Authentication Protocol,PAP)等鉴别协议。链路配置管理过程中还会用到PPP压缩控制协议(Compression Control Protocol,CCP),这PPP加密控制协议(Encryption Control Protocol,ECP)。

网络控制协议(NCP)。PPP能封装多种类型的第三层数据报,对应不同的NCP。如用于IP数据报的互联网协议控制协议(Internet Protocol Control Protocol,IPCP)。还有支持ipx的(IPXCP)、NetBIOS帧的NCP。

PPP操作只有三步:

链路创建与配置。链路创建由LCP协议发起,通信双方要对管理链路操作的各种参数达成一致,并在需要时调用其它支持协议,如鉴别、加密和压缩等。一旦建立起链路,将调用适当的NCP用于在该链路上承载第三层技术。这是PPP操作最复杂的一步。

链路操作。使用建立的PPP链路发送数据报。发送端的PPP封装第三层数据报,再向下交付给第一层发送。接收端物理层接收发送的PPP帧,剥去其PPP首部,再将数据报传送给第三层。

链路终止。当任一方不通信时就终止该链路。

PPP链路从创建到死亡不同阶段示意图:

PPP标准包括有很多RFC,下面对这些RFC的分类和作用进行汇总。

Table 3.2. PPP标准

类别

RFC编号

标准名称

说明

核心

1570

PPP LCP扩展

为LCP定义了两种特性,允许设备相互识别,允许每台设备告诉另一台设备当前会话保持了多长时间。

 

1661

PPP协议

PPP基础协议,描述了PPP的体系结构,通用操作以及LCP的细节。

 

1662

类HDLC帧中的PPP

定义了PPP基于HDLC中使用的成帧方法,是主要PPP标准的辅助标准。

LCP支持

1334

PPP鉴别协议

定义了PAP和CHAP两个PPP鉴别协议

 

1994

PPP挑战握手鉴别协议(CHAP)

更新RFC1334中有关CHAP的内容

NCP

1332

PPP互联网协议控制协议(IPCP)

用于IP的NCP

 

1377

PPP OSI网络层控制协议(OSINLCP)

对应OSI网络层协议的NCP,如CNLP、ES-IS、IS-IS等。

 

1378

PPP AppleTalk控制协议(ATCP)

用于AppleTalk协议的NCP

 

1552

PPP网间分组交换控制协议(IPXCP)

用于Novell IPX协议的NCP

 

2043

PPP SNA控制协议(SNACP)

用于IBM的系统网络体系结构(SNA)的NCP

 

2097

PPP NetBIOS帧控制协议(NBFCP)

用于NetBIOS帧的NCP

 

2472

PPP上的IP版本6(IPv6CP)

用于IPv6的NCP

特性

1962

PPP压缩控制协议(CCP)

定义一组机制压缩经PPP链路发送的数据,以提高性能。描述两台设备如何协商压缩。与几种实际执行数据压缩的压缩算法一起工作。

 

1968

PPP加密控制协议(ECP)

定义加密机制,协商加密。与几种实际的加密算法一起使用。

 

1989

PPP链路质量监测

使PPP设备间能相互报告链路性能信息

 

1990

PPP多链路协议(MP)

使PPP能运行在一组聚合的链路上,从而允许两台设备将多条低带宽链路作为单一的高带宽虚拟链路使用。

 

2125

PPP带宽分配协议(BAP)/PPP带宽分配控制协议(BACP)

管理在使用PPP MP聚合的链路上的带宽分配

应用

1618

ISDN上的PPP

ISDN链路上运行PPP的应用细节

 

1973

帧中继中的PPP

描述了如何修改PPP,使之能运行在第二层的帧中继上

 

2290

用于PPP IPCP的移动IPv4配置选项

定义了为支持移动IP,对PPP互联网协议控制协议的修改

 

2364

AAL5上的PPP

定义了在AAL5(ATM)发送PPP帧的方法,通常称为PPPoA

 

2516

以太网上的PPP

定义了在以太网上封装PPP帧的技术,通常称为PPPoE

 

2615

SONET/SDH上的PPP

讨论如何在SONET/SDH链路上封装PPP帧

 

PPP核心协议

链路控制协议(LCP)、网络控制协议(NCP)和PPP鉴别协议(PAP、CHAP)是PPP的核心协议。在PPP协议族中,LCP最为重要,它负责PPP的整体成功运作,并且在PPP链路的每个阶段进行配置、维护链路状态和终止链路。LCP报文交换过程如下:

---------------------------------------------------------------------------

         发起方                                     响应方

---------------------------------------------------------------------------

    初始化LCP配置   ----Configure-Request--->  处理LCP配置

                                               |

    完成LCP配置     <---Configure-Ack---------- |

 

    鉴别和NCP配置   <----------------------->  鉴别和NCP配置

                                              

    响应应答测试    <-------Echo-Request-----  发起环回测试

               |

               |-----------Echo-Reply------->  证实链路操作

 

    发送和接收数据  <----------------------->  发送和接收数据 

 

    终止链路        <---Terminate-Request---   关闭链路请求  

           |

           |------------Terminate-Ack------->   终止链路

 

-----------------------------------------------------------------------------            

 

由于LCP位于第二层,所以我们把LCP报文称为LCP帧。共有11种不同的LCP帧,对应3个链路阶段分成三组。链路配置有4种LCP帧类型,链路维护有5种,链路终止有2种。

LCP链路配置

链路配置又是LCP最重要的工作,在链路创建过程中,通信两端通过交换LCP帧以协商链路运行条件,整个过程如下:

LCP链路配置从发送方向接收方发起一个Configure-Request帧开始,该帧包含了与对端协商的配置选项。有6个配置选项:

最大接收单元(MRU),指定希望链路使用的最大数据报长度。

鉴别协议,指定希望链路使用的鉴别协议。

质量协议,指定希望链路使用的质量协议。

幻数,用来检测环回链路和连接中的其他异常。

协议字段压缩,在PPP帧中使用压缩的协议字段(8bit),正常是16bit。

地址和控制字段压缩,压缩PPP帧中地址和控制字段。

接收方收到Configure-Request后,根据配置选项的内容有以下三种响应。

如果所有选项都可接受,则返回一个Configure-Ack帧(确认),完成协商。

如果选项有效能够协商,但接收方不接受这些选项所设置的值,则返回一个Configure-Nak帧(否定确认)。该帧包含接收方不接受的每个配置选项的副本。

如果选项无效且不能协商,则接收方返回一个Configure-Reject帧。该帧包含不能协商的选项副本。

Configure-Nak和Configure-Reject的区别在于,前者表示不接受选项值但可以再协商,后者表示不接收,没有协商的余地。如:发送方尝试协商使用PAP鉴别协商,但接收方想使用CHAP,则返回Configure-Nak,如果接收方根本就不支持鉴别,则直接返回Configure-Reject帧。接收方收到一个拒绝后,还可以重新尝试一次新的Configure-Request协商。

LCP链路维护与链路终止

一旦LCP协商成功,LCP则会把控制权交给适当的鉴别和NCP协议。链路创建成功进入打开状态,以下这些帧用来维护链路。

Code-Reject(编码拒绝)和Protocol-Reject(协议拒绝)帧:当收到无效帧时,这些帧用来提供反馈信息。无效帧的产生主要是由于一个无法识别的LCP编码或一个损坏的协议标识产生的。

Echo-Request(回显请求)、Echo-Reply(回显回答)和Discard-Request(丢弃请求)帧:这些帧用以测试网络。

发起关闭的设备发送一个Terminate-Request报文。另一个设备回复Terminate-Ack报文。终止请求是一个不能拒绝的请求。

NCP--网络控制协议

PPP虽然是为承载IP数据报而设计的,但PPP也可为多种类型的网络层协议承载数据。这种能力是通过网络控制协议(NCP)实现的。NCP协商所有对于特定网络层协议的参数,每条LCP链路可以运行多个NCP。常见的NCP有:PPP网际协议控制协议(IPCP)、PPP网间分组交换控制协议(IPXCP)、PPP NetBIOS帧控制协议(NBFCP)。

NCP的操作过程与LCP类似,每个NCP也要执行链路创建、维护和终止三个过程。所使用的报文也与LCP一样,有Configure-Request、Configure-Ack、Configure-Nak、Configure-Reject、Code-Reject、Terminate-Request、Terminate-Ack等报文。

-----------------------------------------------------------------------------------

          发送方                                           接收方

-----------------------------------------------------------------------------------

   LCP链路创建与鉴别   <---------------------------->  LCP链路创建与鉴别

 

   发起IPCP配置         ----IPCP Configure-Request-->  处理IPCP配置请求

                                                        |

   结束IPCP配置        <----IPCP Configure-Ack----------|

 

   IP数据传送          <----------IP数据------------>  IP数据传送

 

   关闭IPCP链路请求    -----IPCP Terminate-Request-->  终止IPCP链路

                                                        |

   终止IPCP链路        <----IPCP Terminate-Ack----------|

-----------------------------------------------------------------------------------

 

鉴别协议

PPP协议族最初定义了两种鉴别协议:PAP和CHAP。当设备两端建立了一个LCP链路后,就会使用鉴别协议发送一连串的鉴别报文,以验证链路发起者的身份。

PAP是一种非常简单的鉴别协议,鉴别过程只有两步。第一步发送Authentication-Request(鉴别请求)报文,报文中包含用户名和密码。第二步是接收方检查用户名和密码,如果接受则返回一个Authentication-Ack报文,否则返回一个Authentication-Nak报文。PAP鉴别最大的缺点是使用明文方式经链路传送用户名和密码,窃听者可以截取用户名和密码信息。PAP也没有对任何的安全攻击提供保护,客户端可以无限制地尝试不同密码,直到发现正确的密码为止。

CHAP不通过链路传送密码,它使用了三次握手的技术进行鉴别。三次握手的过程如下:

挑战。鉴别者生成一个Challenge的帧并发送给发起方,该帧包含没有实质意义的Challenge文本串。发起方收到Challenge报文后,通信两端就拥有了相同的Challenge文本串。

响应。发起方使用它的密码来加密Challenge文本串,然后将加密的Challenge文本串通过Response报文返回给鉴别者。

成功或失败。鉴别者对Challenge文本串执行与发起方相同的加密过程,如果得到的结果与Response报文中发送过来的加密Challenge文本串一致,则知道发起方使用的加密密码与鉴别者使用的加密密码是一致的,鉴别成功。鉴别成功就返回一个Success报文,否则返回一个Failure报文。

Note

IEEE802.11无线联网使用的共享密钥鉴别技术也是与CHAP的三次握手一样的。

PPP特色协议

上面介绍了PPP三种核心协议,这些核心协议是PPP的基础。其实PPP还有一些实用的特色协议,如链路质量监测、数据压缩和加密、多链路协议和带宽分配协议等。使PPP的功能更强大,适用性更好。下面一一介绍一下。

链路质量监测

PPP的链路质量监测(Link Quality Monitoring,LQM)可以分析两台设备间的链路质量,LQM使用LQR(链路质量报告)方法跟踪链路的统计信息,并周期性地发送相关报告。在使用LQR之前,需建立LQR,建立LQR的工作在链路创建阶段作为协商基本链路参数的一部份,由LCR完成。打开链路的设备通过在Configure-Request帧中包含质量协议配置选项来请求链路监测。配置选项还指定了报告周期,指定请求设备希望接收到报告的最大间隔时间。如果协商成功,则LQR开始起作用。

LQR通过计数器记录各种链路统计信息,当发送报告计数器到期时,就会产生一份链路质量报告,以链路以PPP帧发送出去。该PPP帧使用特定的PPP协议字段(0xC025)。当建立LCP时,计数器归零。记录的统计信息有:

发送和接收帧的数量

发送和接收帧的字节数

发生差错的数量

丢弃帧的数量

生成的链路质量报告的数量

压缩控制协议(CCP)和压缩算法

PPP串行链路的速度较慢,改进的方法是对数据进行压缩。压缩控制协议(CCP)负责协商和管理在PPP链路上使用的压缩。压缩算法是实际执行数据压缩和解压缩的算法。CCP与NCP类似,是一个轻量级的LCP,它在LCP链路间创建一个CCP链路的压缩连接。一旦创建成功,则可在两台设备间发送压缩的帧。

PPP协议字段中的特殊值0x00FD表示该帧已压缩过,当压缩用在多条链路上时,链路进行独立压缩,并使用一个不同的值表示:0x00FB。

加密控制协议(ECP)和加密算法

鉴别完成后,PPP不会再对传输的数据提供安全保护,在链路上传送的是明文的数据。所以对于密秘的数据要在传送前进行加密。ECP负责协商和管理在PPP链路上使用加密,加密算法执行数据的加密和解密。与CCP类似,ECP是LCP的子集。

ECP配置选项与加密算法对应表

------------------------------------------------------------------

    ECP选项类型值            定义的RFC                加密算法

------------------------------------------------------------------

       0                      -                        专用

       2                      2420                    3DESE

       3                      2419                    DESE-bis

------------------------------------------------------------------

 

ECP选项1表示DES算法,定义在RFC 1969中,被选项3代替。

PPP协议字段中的特殊值0x0053表示该帧已经过加密。当在多链路下,各条链路的加密是独立进行的,并使用一个不同的值表示:0x0055。

多链路协议(MP)

PPP允许把多条低速链路合并起来,建立一条高速链路。通过带宽分配协议(BAP)可向链路中添加和删除链路。带宽分配控制协议(BACP)允许设备配置它们希望使用的BAP方式。BACP中唯一的协商配置选项就是Favored-Peer(受惠对等方)选项,它用于确保当链路上的两台设备试图同时发送相同的请求时不出问题。如果设备两头都支持BAP,则BACP协商成功,激活BAP。

PPP协议帧格式

PPP通用帧格式

Table 3.3. PPP通用帧格式

字段名

长度(字节)

描述

标志

1

指示PPP帧开始。总是具有二进制值011111110(十六进制0x7E,或十进制126)

地址

1

HDLC中这是帧的目的地址。但在PPP中处理的是两台设备之间的直接链路,所以这个字段没有实际意义。因此总是设为值11111111(0xff或255)。

控制

1

这个字段在HDLC中用于多种控制目的,但在PPP中被设置为00000011(0x03或3)。

协议

2

标识了封装在帧中的信息字段的数据报所用的协议。

信息

可变

与帧类型有关包含了数据或控制信息的零个或多个字节的负载。对于常规的PPP数据帧来说,网络层数据报封装在该字段中。对于控制帧,控制信息字段则放在该字段。

填充

可变

有时,额外的无用字节会用来填满PPP帧长度。

帧校验序列

2或4

在帧上计算一个检验和,对传输中的差错提供基本保护。这是一个循环冗余码校验。类似于其他第2层协议使用的差错保护方案,例如以太网中使用的差错保护。它的长度可以是16比特或32比特(默认是16比特)。FCS计算了地址,控制,协议,信息和填充字段。

标志

1

指示PPP帧的结尾。总是具有二进制值011111110(十六进制0x7E,十进制126)。

 

协议字段

以太帧结构

以太网的最小传输单位是以太网帧,每个以太网帧的物理长度必须在46--1500字节之间。以太帧的组成示意图如下:

基本概念

TCP和UDP采用16bit的端口号来识别应用程序,如telnet应用的端口号是23,HTTP应用的端口号是80。1~1023之间的端口号对应的应用服务由IANA分配和管理。在Linux中,1~1023之间的端口只能由root用户使用。在客户端可以使用临时端口号与这些标准端口号通信。当客户端要与服务器连接时,客户端会临时分配一个端口号,通过这个端口客户端程序就可与服务器端的标准服务器端进行通信。大多数据TCP/IP实现分配的临时端口号是1024~5000。5000以上的端口号为其它服务预留的。在Linux系统的/etc/services文件中可以查到所有常用的服务器端口号。

什么是MAC地址,电脑通过网卡连接网络,每块网卡都有一个独一无二的48位地址,为方便记忆,我们把这些地址写成6组以冒号分隔的的十六进制数字,如:00:20:E0:C1:0F:F6。前3组是网卡制造商的标识码,由IANA分配。这种地址我们称它为介质访问控制器地址(MAC地址,Media Access Controller Address)。在网络通信中,最终是使用该地址来标识每台电脑的。

什么是IP地址,每台联网的电脑都需要有一个唯一的IP地址标识,就好象我们家的门牌号码一下。IP地址全长32bit,分成四组,每组8bit,中间用点号分隔,如:192.168.0.1。IP地址可以手工分配,也可以由电脑自动分配。手工分配的IP地址是固定不变的,叫静态IP地址。由电脑通过DHCP服务器自动分配的IP地址是不固定的,叫动态IP。动态IP一般在网络较大的环境下使用。电脑自动维护一个IP地址池,当客户有需要时从这个IP地址池中临时租用一个IP地址来使用。使用动态IP能有效减少网管员的维护工作量。

特殊的IP地址

0.0.0.0

表示默认的网络和主机的集合。

255.255.255.255

广播地址,代表本网段的所有主机。

127.0.0.1

本机回环地址,主要用于测试本机网络功能。

224.0.0.1

组播地址。224.0.0.1特指所有主机,224.0.0.2特指所有路由器。

169.254.x.x

当动态获取IP地址的主机不能从DHCP服务器正常取IP时,电脑就会自动指定一个169.254.x.x地址。

10.0.0.0~10.255.255.255、172.16.0.0~172.31.255.255、192.168.0.0~192.168.255.255

私有地址,只能用于企业内部。保留这此地址是为了区分Internet地址和企业内部网地址,避免内部网连接Internet时造成IP地址冲突和混乱。私有地址是不能和Internet直接连接的,如果内部网要连接Internet,需进行私有地址到公共地址的转换(NAT)。

Note

对于一台网络主机,它只能接收到目的地址是广播地址、组播地址和本机地址的数据包。

IP地址伪装(IP masquerading,也称为IPMASQ)技术允许私有网络中的一台或多台没有公共IP地址的计算机与Internet通信。充当IPMASQ服务器的电脑相当于一个网关,私有网络中的电脑对外网来说是完全不可见的。外网看到的只是作为IPMASQ服务器的IP地址。因为当私有网络需与Internet通信时,数据包会被发送到IPMASQ服务器,IPMASQ服务器会改写数据包的IP报头使它们看上去就好象全部出自IPMASQ服务器。当外部的应答数据包到达时,IPMASQ服务器首先反转对刚才外出数据包的IP报头所做的改写,再把它们转发给相应的内部电脑。从而实现内部私有网络对Internet的访问。

网络地址转换(NAT,Network Address Translation)是另一种应用范围更广的技术,具有NAT功能的网络设备能把某个IP空间里IP地址转换为另一个IP地址空间里的IP地址。它与IP伪装技术的主要区别是:NAT技术可以把某个内部网络里的每一个IP地址分别转换成独立的外部IP地址。另外,当转换后,外部地址也可以访问内部地址。

IP报文头

各字段说明:

版本(Version)。字段长度4位,标识IP报文的版本号。常用版本号是4(IPv4),二进制值为0100。

报头长度(Header length)。

IP子网划分

为了有效利用IP地址和减少网络广播风暴,我们可划分子网。我们知道,TCP/IP网络的IP地址是由网络地址和主机地址组成,网络地址标识网段,主机地址标识主机,同一网段的主机可互相通信,不同网段的主机要通过路由设备才能互相通信。IP地址的长度为32bit,以8bit为一组,中间用点号分隔形成一个4组的IP地址格式,一般我们的把IP地址写十进制的形式,如:192.168.0.2。这里讨论的是IPv4的IP地址,这是我们现时在用的IP地址格式,最新的IPv6是128bit的。IPv6的提出是为解决IPv4地址空间不足的问题的。这里我们暂时不讨论IPv6的内容。192.168.0.2这样的IP地址哪部份属于网络地址,哪部分属于主机地址呢?这就要通过子网掩码来确定了。子网掩码的格式和IP地址一样,长度也是32bit。当IP地址和子网掩码地址按位"and"操作后,具有相同地址值的就属于同一网段,而这个相同的地址值就是网络地址,另外一部份就是主机地址。

IP地址是结构化的,分为以下五类:

A类:0.0.0.0 --- 127.255.255.255,默认子网掩码为255.0.0.0,共有126个有效网络,每个网络可有16777214台有效主机。为什么我们强调有效地址和有效主机呢?这是因为全0和全1的网络地址和主机地址都是保留使用的。A类地址的二进制数首位恒为0,最小值为:00000000=0,最大值为:01111111=127。

B类:128.0.0.0 --- 191.255.255.255,默认子网掩码为255.255.0.0,共有16382个有效网络,每个网络可有65534台有效主机。B类地址的二进制数首位恒为10,最小值为:10000000=128,最大值为:10111111=191。

C类:192.0.0.0 --- 223.255.255.255,默认子网掩码为255.255.255.0,共有2097150个有效网络,每个网络可有254台有效主机。C类地址的二进制数首位恒为110,最小值为:11000000=192,最大值为:11011111=223。

D类:224.0.0.0 --- 239.255.255.255,默认子网掩码为255.255.255.0。

E类:240.0.0.0 --- 247.255.255.255,默认子网掩码为255.255.255.0。

我们上面提到的192.168.0.2这个IP地址就是c类地址,默认的子网掩码是255.255.255.0,网络地址是192.168.0,主机地址是2,所以192.168.0.10,192.168.0.11等IP都属同一网段。通过借用主机地址的高位可以扩展子网数。以C类地址为例。

---------------------------------------------------------------------------------------------------

           二进制掩码                  十进制掩码            子网状态

---------------------------------------------------------------------------------------------------

11111111.11111111.11111111.00000000 | 255.255.255.0   |  默认子网掩码,可包含有254台有效主机

11111111.11111111.11111111.10000000 | 255.255.255.128 |  2个子网,无有效子网

11111111.11111111.11111111.11000000 | 255.255.255.192 |  4个子网,2个有效子网,每个子网62台有效主机

11111111.11111111.11111111.11100000 | 255.255.255.224 |  8个子网,6个有效子网,每个子网30台有效主机

11111111.11111111.11111111.11110000 | 255.255.255.240 |  16个子网,14个有效子网,每个子网14台有效主机

11111111.11111111.11111111.11111000 | 255.255.255.248 |  32个子网,30个有效子网,每个子网6台有效主机

11111111.11111111.11111111.11111100 | 255.255.255.252 |  64个子网,62个有效子网,每个子网2台有效主机

----------------------------------------------------------------------------------------------------

 

全0和全1的子网号是不能使用的。所以有效子网数是要从总子网数中减2的。主机号为0的IP地址代表网络地址,主机号全1的IP地址代表广播地址,这两个地址不能分配给电脑使用的,所以有效主机数要从总主机数中减2。

B类地址的子网掩码列表:

---------------------------------------------------------------------------------------------------

           二进制掩码                  十进制掩码            子网状态

---------------------------------------------------------------------------------------------------

11111111.11111111.00000000.00000000 | 255.255.0.0     |默认子网掩码,可包含65534台有效主机

11111111.11111111.10000000.00000000 | 255.255.128.0   |2个子网,无有效子网

11111111.11111111.11000000.00000000 | 255.255.192.0   |4个子网,2个有效子网,每子网16382台有效主机

11111111.11111111.11100000.00000000 | 255.255.224.0   |8个子网,6个有效子网,每子网9180台有效主机

11111111.11111111.11110000.00000000 | 255.255.240.0   |16个子网,14个有效子网,每子网4094台有效主机

11111111.11111111.11111000.00000000 | 255.255.248.0   |32个子网,30个有效子网,每子网2046台有效主机

11111111.11111111.11111100.00000000 | 255.255.252.0   |64个子网,62个有效子网,每子网1022台有效主机

11111111.11111111.11111110.00000000 | 255.255.254.0   |128个子网,126个有效子网,每子网510台有效主机

11111111.11111111.11111111.00000000 | 255.255.255.0   |256个子网,254个有效子网,每子网254台有效主机

11111111.11111111.11111111.10000000 | 255.255.255.128 |512个子网,510个有效子网,每子网126台有效主机

11111111.11111111.11111111.11000000 | 255.255.255.192 |1024个子网,1022个有效子网,每子网62台有效主机

11111111.11111111.11111111.11100000 | 255.255.255.224 |2048个子网,2046个有效子网,每子网30台有效主机

11111111.11111111.11111111.11110000 | 255.255.255.240 |4096个子网,4094个有效子网,每子网14台有效主机

11111111.11111111.11111111.11111000 | 255.255.255.248 |8192个子网,8190个有效子网,每子网6台有效主机

11111111.11111111.11111111.11111100 | 255.255.255.252 |16384个子网,16382个有效子网,每子网2台有效主机

----------------------------------------------------------------------------------------------------

 

从上面的示例中我们可总结出子网数、主机数和掩码三者间的规律。只要数子网掩码的子网位中1和0的个数就可以算出子网数和主机数了。假设1的个数为M,0的个数为N。则2的M次方减2就是有效子网数,2的N次方减2就是有效主机数。通以上规律我们可以很快写出A类地址的子网掩码表,我这里就一一列举了。

VLSM和CIDR

VLSM(Variable Length Subnet Mask)即是可变长子网掩码,在RFC 1878中定义。通过VLSM我们可以在一个子网里再细分多个小子网,每个小子网的主机数又可以不同。使子网分配更灵活高效,节省IP地址资源。我们把192.168.2.0/24分成不同具有不同掩码长度的子网,每个子网里的主机数也不同。

WAN link: 2x -2 >= 2 x=2:

Subnet mask : 255.255.255.1111 1100    /30

Building A : 2x -2 >= 25 x=5

Subnet mask : 255.255.255.1110 0000    /27

Building B : 2x -2 >= 50 x=6

Subnet mask : 255.255.255.1100 0000    /26

 

 

我们划分的时候从需要ip多的组到需要ip少的组.

 

有两个62个主机的子网

 

192.168.2.0/26   

192.168.2.64/26  

 

有三个30个主机的子网

 

192.168.2.128/27 

192.168.2.160/27 

192.168.2.192/27 

 

有一个2个主机的子网

192.168.2.224/30 

 

CIDR即是无类别域间选路,它是对IP寻址功能的补充。能把一块IP地址聚合成一个带前缀的IP地址范围,减少路由条目。如192.168.61.8/20,表示前20位是网络地址。而不是默认的24位。现在的internet都使用CIDR进行IP路由的。要使用CIDR必须满足两个条件,一是聚合的IP块有相同的高位;二是聚合的网络地址数必须是2的n次方,如2个,4个,8个,16个等。下面演示如何把一块IP地址聚合成一个IP子网。我们有一组C类的子网,192.168.1.0/24---192.168.8.0/24。为了使我们有更直观的认识,我们把IP地址中第三组的值化成二进制形式。

192.168.00000001.0   --- 192.168.1.0/24    

192.168.00000010.0   --- 192.168.2.0/24

192.168.00000011.0   --- 192.168.3.0/24

192.168.00000100.0   --- 192.168.4.0/24

192.168.00000101.0   --- 192.168.5.0/24

192.168.00000110.0   --- 192.168.6.0/24

192.168.00000111.0   --- 192.168.7.0/24

192.168.00001000.0   --- 192.168.8.0/24

网络地址的前20位都是相同的,我们可把这些子网聚合成192.168.1.0/20子网。在路由器上只需一条路由项即可。

 

小结:CIDR聚合是把网络地址的一部份转化为主机地址,VLSM子网划分把主机地址的一部份转化为网络地址。CIDR聚合使子网掩码变短,VLSM划分使子网掩码变长。CIDR(无类别域间选路)和VLSM(可变长子网掩码)是互相配合工作的。VLSM是掩码的设计方法,而CIDR是支持VLSM的路由协议。使用CIDR后,0子网也变成有效子网号,但必须在路由器上用ip subnet-zero命令开启。

TCP和UDP的选择

tcp和udp各有优势,在选择协议时,以下参考意见可能对你有所帮助。

如果以下内容是你需要的,则请选择TCP。

你需要一个可靠的数据传输,以确保你的数据能完整无缺地到达目的地。

你的协议需要不止一个请求和服务器的回答。

你要发送较多的数据。

初始连接出现短暂的延迟是可以接受的。

如果以下内容是你需要的,则请选择UDP。

不太关心数据是否到达或不太关心数据到达的顺序是否正确。

你的协议只包括基本请求和回答。

你需要尽快建立网络会话。

只传输很少的一部份数据。UDP限制一个数据包最大不超过64KB。

TCP建立和断开的过程

在建立TCP连接时,要经过著名的三次握手过程。

第一次握手:client端首先向server端发送一个SYN包,值为1。这是第一个封包,告知server端client端想与server建立TCP连接;

第二次握手:server端接收到client端发送的SYN包后,会回复一个SYN/ACK包,SYN值加1,ACK值随机产生。告知client端server端已收到client端发送的SYN包;

第三次握手:client端收到server端答复的SYN/ACk包后,又会回复一个ACK,ACK值是server端发送来的SYN/ACK包中的ACK值加1。告知server端client端已收到SYN/ACK包。到此为止,三次握手完成,client端和server端可以开始传送数据。

下面是TCP三次握手图示:

      client                server

       |                     |

       |--------SYN--------->|

       |                     |

       |                     |

       |<-----SYN+ACK--------|

       |                     |

       |                     |

       |--------ACk--------->|

       |                     |

       |                     |

 

 

断开TCP连接,要传送四个封包。比建立TCP连接时多了一次。主要原因是,断开TCP连接是在client端和server端分别发生的。

例设第一个封包由client端发送,则client端会发送一个FIN封包,值为1。告知server端client端要结束连接。

server端收到client端发送的FIN包后,知道client端已完成数据的传送要请求断开TCP连接。server端会发送一个ACK包给client端。告知client端server端已知道正常收到FIN包。

server端把未传送完的数据传送给client端后,也会给client端发送一个FIN,告知client端server端已完成数据传送,可以断开TCP连接。

client端收到server端发送的FIN封包后,会向server端回复一个ACK包,表示已确认server端的FIN封包。至此,TCP连接断开。

TCP断开连接的四个步骤:

      client               server

       |                     |

       |                     |

       |--------FIN--------->|

       |                     |

       |                     |

       |<-------ACK----------|

       |                     |

       |                     |

       |<-------FIN----------|

       |                     |

       |                     |

       |--------ACK--------->|

       |                     |

 

 

Chapter 4. 无线网络

无线网络可以使我们摆脱网线的束缚,实现自由自在,随时随地在线的梦想。同时又有低成本、快速移动、灵活配置等优点。本章介绍无线网络的基础知识和最新的发展动态。

现时流行的无线网络技术有ZigBee、bluetooth、Wi-Fi、WiMAX。下面对这些无线网络技术进行简单的介绍。

ZigBee技术是一种低成本,低功耗,低速率,短距离传输的无线通信技术,它的标准号是802.15.4。它具有以下特点。

近距离,ZigBee网络的传输距离一般介于10-100米之间,通过增加RF发射功能后,可扩展到1-3公里。

低速率,最大传输速率是250Kbps。

低功耗,2节普通5号干电池可使一个ZigBee节点工作长达24个月或几年,相比较,蓝牙只能工作数周,Wi-Fi只能工作数小时。低功能耗的特性使ZigBee成为无线嵌入式系统的主要技术之一。

短时延,从睡眠转入工作状态只需15ms,节点连接进入网络只需30s。相比较,蓝牙需要3-10s,Wi-Fi需要3s。

稳定可靠,ZigBee的MAC层采用talk-when-read的碰撞避免机制,确保数据传输可靠稳定。

安全,ZigBee提供数据完整性检查和鉴权功能,在数据传输中提供三级的安全性。第一级是无安全方式,第二级是ACL方式,第三种是采用高级加密标准(AES)提供对数据的保护。

bluetooth。蓝牙是一种支持设备短距离通信(一般是10m之内)的无线电技术。能在包括移动电话、PDA、无线耳机、笔记本电脑、相关外设等众多设备之间进行无线信息交换。蓝牙的标准是IEEE802.15,工作在2.4GHz 频带,带宽为1Mb/s。

Wi-Fi(读音:waifai),全称是Wireless Fidelity。Wi-Fi使用2.4GHz频段,覆盖100米左右的区域。通过无线网卡和无线AP组成Wi-Fi无线网络,标准号是802.11x。802.11b的最大速度是11M,802.11g最大速度达到54M,现在的增强技术可以把802.11g的最大速度提高到108M。

WiMAX(Worldwide Interoperability for Microwave Access,即全球微波互联接入),WiMAX是Wi-Fi的接班人,标准号是802.16x,WiMAX全面兼容Wi-Fi。WiMAX具有更远的传输距离(50公里),更宽的频段选择以及更高的传输速度(70M)。

TD-SCDMA(时分同步码分多址接入),中国大陆独自制定拥有自主知识产权的3G标准。

Chapter 5. 交换机

Table of Contents

Cisco IOS登录

CLI功能简介

启用Web管理界面

ROM监控系统

常用Cisco交换机介绍

交换式网络设计

配置Supervisor Engine

配置2层接口

交换表

端口选择

配置3层接口

VLAN和Trunking技术

创建VLAN

Trunking技术

VTP

私有VLAN

STP生成树协议

VLAN ACL

ARP操作

在交换机上配置DHCP服务器

Cisco IOS登录

通过控制台端或telnet连接交换机,输入密码后首先进入用户模式。提示符:

debian:~# telnet 192.168.10.240

Trying 192.168.0.240...

Connected to 192.168.10.240.

Escape character is '^]'.

 

 

User Access Verification

 

Password:

4006>

 

在用户模式下使用enable进入特权模式,需要输入特权模式密码。

4006>enable

Password:

4006#

 

在特权模式下输入configure terminal进入配置模式,这里不需要密码。

4006#configure terminal

Enter configuration commands, one per line.  End with CNTL/Z.

4006(config)#

 

介绍一个小技巧。在配置模式下是不能直接输入show命令查看配置结果的,所以我们在配置完后要经常切换到全局模式下用show命令来查看配置结果。这样切换来切换去影响效率,在配置模式下有一个do命令可以直接执行show命令。

启用交换机的telnet功能,默认是关闭的。

4006(config)#line vty 0 4

4006(config-line)#login

4006(config-line)#password xxxx

4006(config-line)#end

4006#configure terminal

4006(config)#service password-encryption           #加密telnet密码

 

设置进入特权模式(enable)的加密口令,加密方式使用MD5。

4006(config)#enable secret xxxx

 

CLI功能简介

在不同模式下输入?号可以显示当前模式下可以使用的命令。在命令行中使用?号可以提示当前命令行的帮助信息。

4006#ping ?

  WORD  Ping destination address or hostname

  ip    IP echo

  tag   Tag encapsulated IP echo

  <cr>

 

使用show命令可以显示很多有用信息。show命令格式:

4006# show command | {begin | include | exclude} re-expression

 

可以使用的正则表达式操作符是:

.             匹配单个字符

*             匹配前面模式的0个或多个组合

+             匹配前面模式的1个或多个组合

?             匹配前面模式的0个或1个实例

^             匹配字符串首

$             匹配字符串尾

_             匹配1个逗号、花括号、圆括号、一个字符串的首或尾,或者一个空白

[]            定义可选字符串范围模式

()            用括号定义的模式能在后面用\符号和模式出现的次数来调用它

 

使用show running-config命令能够看到正在起作用的配置,禁用某些功能使用no开头的命令,如no shutdown会启动某些端口。

启用Web管理界面

交换机中有一个Web界面,通过它可以访问和监控交换的信息。启用交换机的http服务器的命令如下:

Switch(config)# ip http server

 

设置http服务端口。

Switch(config)# ip http port xxx

 

限制对Web服务器的访问。

Switch(config)# ip http access-class xxx

 

选择访问Web服务器的用户验证方式。

Switch(config)# ip http authentication {aaa | enable | local | tacacs}

 

默认使用enable的密码。aaa和local使用用户名和密码在交换机上执行本地验证。tacacs使用TACACS进行验证。

ROM监控系统

ROM监控系统是基于ROM的程序,在交换机加电或复位时才执行。如果用户在交换机启动过程中按下Ctrl+Break键就会进入ROM监控系统。它就像操作系统的安全模式,当交换机遇到无法恢复的严重错误时,它就会进入ROM监控系统。ROM监控系统的操作界面和IOS的类似。它有一组操作指令帮助我们恢复配置。

用户界面

rommon1>

 

常用命令

输入?号也可查看帮助。

使用set命令可以查看配置变量。

使用PARAMETER= Value重新设置配置变量。要清除变量Value为空即可。

保存配置用sync命令。重新加载新变量用reset命令。

dir [device:]命令可以查看Flash设置里的系统映像,如dir bootflash:或slot0:。

boot [device:filename]命令可以从Flash中引导映像。如果不带参数,则引导配置变量里BOOT变量指定的映像。

常用Cisco交换机介绍

Cisco的Catalyst系列交换机是现时主流的交换机,主要型号有以下几种:

Catalyst 3500XL和2900MXL是入门级的接入交换机,为终端用户设备提供基本的连接。3500XL提供G比特的接口,可实现G比特上连。2900MXL是模块化交换机,可包括ATM LEC(LAN仿真客户机)用于连接ATM LANE网络。

Catalyst 2950系列是典型的终端用户接入设备,具有高级功能。如2层转发,trunking,EtherChannel功能。有基于3层和4层信息的VLAN ACL和扩充的QoS分类和调度技术来增加3层和4层的安全性。是园区网络的接入设备。

Catalyst 3550系统是一款中档交换机,能提供2层或3层服务。支持trunking,channeling,QoS分类和marking功能。3550系列交换机配置灵活,是中小型园区网的主要交换设备。可以作为接入交换机或汇聚交换机进行安装部署。3550已代替2948G-L3交换机而成为一种中等规模的线速3层交换机。

Catalyst 5000系列交换机是园区网的主要机型,它是一种模块化的产品,提供各种介质的支持。该系列有5000和5500两种产品。5500交换机已经在许多网络中作为汇聚交换机和主干交换机使用。支持的模块有路由、WAN、ATM、FDDI、令牌环、以太网、快速以太网、吉比特以太网。

Catalyst 4000系列交换机是一种中档交换机,可作为高密度端口接入交换机和汇聚交换机,也可作为低密度端口的核心设备。4000系统的Supervisor III Engine集成一个3层模块,能够运行Cisco IOS Software。支持2层trunking、EtherChannel功能。

Catalyst 6000系列交换机是Catalyst产品线上的旗舰产品,拥有最高容量的背板支持。可作为高密度端口的接入交换机、2层/3层汇聚交换机和线速度2层/3层核心交换机。支持各种高级特性板卡,如:语音服务、内容交换、入侵检测、网络分析、光纤服务、10G以太网、防火墙支持和加密服务。

交换机操作系统是交换机的软件配置环境,有两种主要的操作系统。分别是:

第一种是Cisco IOS(Cisco Internetwork Operating System)。这种操作系统和路由器所用的操作系统都基于相同的内核和shell。在交换机领域,这一OS有3种衍生版本:

Layer 2 IOS(2层IOS),只运行在基于2层信息转发分组的设备上,如3500XL和2950。

Layer 3 IOS(3层IOS),运行3层IOS的交换设备在它接口上执行3层的分组转发。这种OS和路由器上运行的OS是一样的。

Layer 2/3 IOS(2/3层IOS),运行这种IOS的设备上的端口,其作用类似于路由器端(3层),或者交换机端口(2层),具体取决于设备的配置。4000系列带的Supervisor III上运行的OS就是这种OS。

另一种OS是COS(Catalyst Operating System)。也叫CatOS,只提供2层支持,可在4000、5000和6000系列交换机上运行。

交换式网络设计

设计一个大型网络是非常复杂的,需考虑很多因素。我们可按以下原则进行设计。

使用LAN交换机把LAN分段成可能的最小冲突域。

将网络组织成层次结构。可分为3层。

接入层(access layer),由连接到终端用户的交换机所组成。

汇聚层(distribution layer),由汇聚接入层流量的交换机组成。

核心层(core layer),由汇集汇聚层流量的交换机组成。

在中小规模的网络中,可以省略汇聚层。接入层交换机直接上连到核心层。这种设计叫紧缩核心(collapsed code)的设计。

为提供高可用性,在网络各层中的每台交换机都应该双重或冗余上连到更高一层的交换机上。在链路或整台交换机出现故障的情况下,富余的上连链路能很快投入使用。上连链路的故障切换是由2层的STP(Spanning Tree Protocol 生成树)协议,或3层的路由协议来处理的。

在层次结构中的每一层都设置交换功能。

接入层,端口密度高,成本低,有解决用户访问或者安全性的功能,而且还有多个高速上连端口。使用2层交换就足够了。

汇聚层,需提供高的交换性能,应采用3层交换。

核心层,由最高性能的交换机构建,它汇集了网络所有流量.虽然3层交换带来更高的可用性和更强的QoS功能。但2层交换实际上也都可以胜任。

找出网络中承担共同功能的资源。如交换机核心块、服务器群、Internet接入、用户组。我们按这些功能划分网络功能块。

在网络功能块中使用高可用性或冗余性功能。

核心功能块:

如果使用2层交换机,连接两台核心交换机时不要造成生成树环(spanning-tree loop)。

确保为每个VLAN都指定和配置了主(Primary)次(Secondary)根桥接交换机。

如果使用3层交换机,要采用多条链路连接到核心交换机上。

在3层核心中,使用HSRP(Hot Standby Router Protocol,热备份路由器协议)提供冗余的网关地址。

每台核心交换机应该全冗余连接到每台汇聚交换机上。如果在核心层或者汇聚层没有使用3层交换机,就要使用STP BackboneFast模式降低STP的收敛时间。

服务器块:

使用冗余上连链路连接到汇聚层或者核心层。利用STP UplinkFast模式或者HSRP做到快速故障切换。

服务器多数都有双网卡以提供冗余。把两块网卡连接到不同的交换机板卡或者模块上。

Internet块

使用服务器端负载均衡技术把流量分流到一个服务器群的多台服务器上。

使用防火墙负载均衡功能把流量分散到一个防火墙群中的多台防火墙上。

交换机块

每台接入层交换机都有两条上连链路,连接到两台独立的汇聚交换机上。

使用接入层交换机上的STP UplinkFast模式,降低上连链路的故障切换时间。

使用接入层交换机端口上的STP PortFast功能,减少终端用户的端口启动时间。

为了在接入层上连链路之间平衡负载,调整STP参数,让一个接入VLAN的流量通过一条上连链路,而另一个VLAN的流量通过另一条上连链路。否则,调整3层的汇聚层里的HSRP的优先级,站一台汇聚交换机支持一个接入VLAN,而另一台汇聚交换机支持另一个VLAN。

如果在汇聚层里采用的是3层交换,就要在没有其他路由器的地方使用被动接口连接接入层。

其他考虑:

为每个VLAN在尽可能靠近核心层的地方配置一个STP根网桥(root bridge)和次根网桥。

广播域:

通过控制VLAN的规模限制广播域的大小。虽然允许把VLAN扩展到网络的任何地方,但是广播流量也会随之传到哪里。

考虑在交换机端口上使用广播抑制。

VTP协议:

在最靠近核心层的地方配置VTP(VLAN trunking protocol,VLAN链路聚集协议)服务器。

使用VTP pruning(剪裁)功能或者手工配置在干路(trunk)上传输的特定VLAN。这样做减少了干路上不必要的广播流量。

扩展干路:

将多条干路(trunk)绑定到一起构成一条EtherChannel。为了容错,将EtherChannel划分到多个交换机模块上。

不要配置干路协商,使用"on"模式。

QoS:

在网络上的每台交换机上配置QoS。QoS必须在端到端的链路上都得到正确的支持。

把QoS可信边界扩展到能够可信的边界设备,如IP电话。

使用流量约束功能控制非关键的流量。

冗余的交换机模块:

考虑在服务器群的交换机上使用冗余的supervisor引擎,这里的主机都是单连的(一块NIC)。

如果每层网络都提供了冗余的上连链路,那么两台物理上独立的交换机一定可以保证冗余。在只有一条上连链路的汇聚或核心层交换机上要使用冗余的supervisor引擎。

使用一个机箱上多个supervisor之间的高可用冗余性。启动版本升级功能,从而在无需关闭交换机的情况下升级OS。

端口安全、身份认证:

采用端口安全机制,你可以控制连接到一台接入层交换机端口的终端用户的MAC地址或者用户数量。

在接入层交换机端口上使用802.1x身份验证机制验证用户的身份。

采用VLAN ACL控制对VLAN的访问。

配置Supervisor Engine

配置提示符,提示符可以标记交换机,方便管理。

hostname string

 

配置MOTD标题,MOTD是Message Of The Day(每日消息)的缩写。

banner motd *

 

配置IP地址信息。在2层交换机中,IP地址对于交换机正常运行来说不是必须的,只是为了方便通过IP登录交换机进行管理。下面示例的功能是配置vlan1的IP地址的默认网关,设置vlan1为管理vlan,指定dns 服务器为192.168.3.2。禁止交换机的http服务。

dasdfSwitch(config)# interface vlan 1

Switch(config-subif)# ip address 192.168.0.100 255.255.255.0

Switch(config-subif)# management

Switch(config-subif)# ip default-gateway 192.168.0.1

Switch(config)# ip name-server 192.168.3.2

Switch(config)# no ip http server

 

Switch(config)# end

Switch(config)# copy running-config startup-config

 

配置口令。有两种口令,一种是用户级口令(登录交换机口令),一种是特权级口令(enable口令)。要在每条线路上(con0 vty 0 4)都配置login和password命令。login命令是IOS交换机上针对telnet连线的默认设置。在配置口令字之前,该设置能防止用户通过telnet登录交换机。

Switch(config)# enable secret 5 12345           #5表示使用加密的密码

Switch(config)# line vty 0 4                    #vty表示Virtual terminal

Switch(config-line)# password 12345

Switch(config-line)# line con 0                 #con表示console(控制台)

Switch(config-line)# login

Switch(config-line)# password 12345

Switch(config-line)#end

Switch(config)# copy running-config startup-config

 

在IOS设备上恢复口令字:规程1。该规程涵盖2900/3500XL、2950和3550系列的交换机。要从丢失IOS口令字的情况下恢复过来,就必须中断交换机引导过程,并命令交换机不使用配置文件。在交换机没有加载配置文件的情况下,我们可以不需口令就进入特权模式。在特权模式下,我们可以把配置文件复制到内存,然后改变口令字后再保存配置文件。这样新的口令的成功设置了。具体操作步骤如下:

通过交换机控制台连接交换机,按用交换机上的mode按钮通电开机,在端口1x的LED已经亮了至少2秒钟后再放开mode按钮。

这时在电脑的终端上会收到信息说Flash初始化过程已中断。在收到该信息后,在提示符处输入flash_init命令。

接着输入load_helper命令。

接着输入dir flash:命令列出Flash清单。

用命令rename flash:config.text flash:config.text.old把原配置文件改名。

用boot命令继续启动过程。

屏幕出现是否进入设置模式的问答,回答n。

Continue with the configuration dialog? [yes/no]: n

 

回车后会进入用户模式,用enable命令进入特权模式。

用命令rename flash:config.text.old flash:config.text把配置文件名改回原来的名字。

用命令copy flash:config.text system:running-config把配置文件复制到活动内存中。

用户configure terminal命令进入配置模式。用上面介绍的修改口令字的命令重新设置交换机的口令字。

保存配置。

在IOS设备上恢复口令字:规程2。该方法对应6000系列交换机。要恢复口令字,必须停止路由处理的引导过程,然后命令交换机不使用配置文件。在交换机没有加载配置文件的时候,我们就可以不需要口令进入特权模式。在特权模式下把配置文件复制到内存中,然后更改口令字。具体过程如下:

在正常连接交换机控制台的情况下重启交换机,当控制台输出"%OIR-6-CONSOLE:Changing console ownership to route processor"时,按"Ctrl+Break"中断引导过程。

这时会出现rommon1>提示符。输入confreg 0x2142命令告诉交换机忽略当前的配置。

在rommon2>提示符下输入reset命令复位交换机,当出现是否进入设置模式的问答时回答n。

回车出现Router>提示符,输入enable命令进入特权模式。

在Router>#状态下用命令copy startup-config running-config把启动配置复制到正在运行的配置里。

用命令configure terminal进入配置模式。用上面介绍的修改口令字的方法重新设置口令字。

用config-register 0x2102复位配置寄存器。

用end命令退出设置模式,运行copy running-config startup-config保存配置。

查看交换机上已安装的模块。

Switch>show module all

 

查看交换机IOS的版本信息。

Switch>show version or show hardware

 

配置CDP(Cisco Discovery Protocol,Cisco发现协议)用于识别直连的Cisco设备。CDP能识别邻居的地址、操作系统、VLAN、VTP域和Cisco交换机之间的单双工信息。

Switch(config)# cdp run              #全局启用CDP

Switch(config)# cdp timer 80         #CDP公告的更新时间,默认为60秒

Switch(config)# cdp holdtime 240     #公告保持时间,应大于更新时间,通常是更新时间的3倍。

 

配置2层接口

交换表

交换表包含有MAC地址和交换机端口信息,MAC地址是从这些交换机端口上学习到的。交换机通过在交换表中查找目的MAC地址进行转发分组(packet)或帧(frame)。

显示交换机2层交换表信息。

Switch# show mac-address-table

Unicast Entries

 vlan   mac address     type        protocols               port

-------+---------------+--------+---------------------+--------------------

   1    000a.4124.3599   dynamic other                  GigabitEthernet2/3

   1    000a.b753.9dff    static ip,ipx,assigned,other  Switch

   1    000a.f49f.6772   dynamic other                  GigabitEthernet2/2

   1    000b.5f64.bd32   dynamic other                  GigabitEthernet2/1

   1    000e.d7f4.e0f2   dynamic other                  GigabitEthernet2/4

   1    0011.21eb.601a   dynamic other                  GigabitEthernet2/5

   2    0001.0298.d1c2   dynamic ip                     GigabitEthernet2/1

   2    0001.0298.d61e   dynamic ip                     GigabitEthernet2/1

   2    0001.0298.d634   dynamic ip                     GigabitEthernet2/1

   2    0004.acee.0593   dynamic ip                     GigabitEthernet2/1

 

....

 

 

显示交换表里地址的数量和交换表的大小。

Switch#show mac-address-table count

MAC Entries for all vlans:

Dynamic Unicast Address Count:                  180

Static Unicast Address (User-defined) Count:    0

Static Unicast Address (System-defined) Count:  8

Total Unicast MAC Addresses In Use:             188

Total Unicast MAC Addresses Available:          32768

Multicast MAC Address Count:                    9

Total Multicast MAC Addresses Available:        16384

 

设置静态交换表项。

Switch(config)#mac-address-table static xxxx.xxxx.xxxx     #xxxx.xxxx.xxxx是48位的MAC地址

 

设置交换表老化时间,到达老化时间后,交换表项自动从交换表中清除。

Switch(config)#mac-address-table aging-time 10000          #默认为300秒,0表示禁止老化过程

 

手动删除交换表项。

Switch(config)# no mac-address-table static xxxx.xxxx.xxxx

 

端口选择

在配置端口前,要使用interface命令选择(进入)要配置的端口。端口标识由类型(fastethernet,gigabitethernet)、模块、端口组成,如要标识模块1上端口2的fastethernet端口可以用fa1/2来表示。

Switch(config)# interface fa1/2

Switch(config-if)#

 

给端口分配一个描述性的名字。

Switch(config-if)#description xxxxxxx

 

设置端口速度。可以设置10M\100M\1000M\auto\nonegotiate。auto表示自动协商,nonegotiate表示不自动协商。

Switch(config-if)#speed xxxx

 

设置端口的单双工模式。可设置为full\half\auto。只有在端口速度设为auto时,才能设置auto的单双工模式。

Switch(config-if)#duplex xxxx

 

在端口连接到一台主机时优化端口的设置。有几个选项,分别是启用STP PortFast,禁用trunk模式,禁用EtherChannel,不允许dot1q功能。

Switch(config-if)#spanning-tree portfast

Switch(config-if)#switchport mode access

Switch(config-if)#no channel-group

 

禁用和启用端口。

Switch(config-if)#shutdown              #禁用端口

Switch(config-if)#no shutdown            #启用端口

 

使用show interface可以显示很多有关interface的信息。

Switch#show interfaces counters

 

配置3层接口

3层交换是指使用包含3层网络寻址信息的表或者路径在设备之间移动数据。要执行3层交换,设备必须有3层交换处理器。3层交换处理器使用3层IOS来配置3层交换部件。要进行3层交换,交换机必须启动针对指定协议的路由功能。启动路由选择进程的命令格式如下:

protocol routing           #protocol是ipx,ip or appletalk

 

如果是路由IP分组,则不需使用运行该命令。默认已启动IP分组路由功能。

Supervisor IOS的交换机可直接和3层交换处理器通信,不需用session命令访问3层交换处理器。

先用interface命令进入需配置的端口。

Switch(config)#interface FastEthernet 3/1        #配置交换机第3槽上第1个快速以太网端口

Switch(config-if)#

 

用no switchport命令把交换机端口设置为3层端口。switchport命令把端口设置为2层端口。运行Supervisor IOS的4000和6000系列交换机上端口默认运行在路由模式。3550系列交换机默认运行在交换(switchport)模式。

与3层端口连接的为一个网络,3层端口的IP地址就是该网络的网关地址。为3层端口分配IP地址的命令如下:

Switch(config-if)#ip address 192.168.0.2 255.255.255.0

 

许多3层口默认都是shutdown状态的,所以我们要启用接口。

Switch(config-if)#no shutdown

 

配置完成后,我们可以检查设置情况。

Switch#show ip interface GigabitEthernet 1/2

GigabitEthernet1/2 is up, line protocol is down

  Internet protocol processing disabled

 

VLAN和Trunking技术

VLAN是在多台交换机内规定的广播域。VTP(VLAN Trunking Protocol,VLAN链路聚集协议)是Cisco交换机为了实现trunking(链路聚集)功能而在交换机之间维护一个一致数据库的协议。

创建VLAN

指定VTP名称

Switch(vlan)#vtp domain xxx

 

禁用VTP同步功能。禁用它能让你不必配置和依赖VTP就可以管理自已本地的VTP数据库。

Switch(vlan)#vtp transparent

 

创建VLAN。每个VLAN都有一个编号,有两种编号范围,1--1000是标准范围,1025--4096是扩展范围。VLAN 1是交换机默认的管理VLAN,用户不能这它进行配置。

Switch#vlan database

Switch(vlan)#vlan 2 name test mtu 1480     #vlan2命名为test,mtu为1480,默认的mtu为1500

 

把交换机端口划分到VLAN中。默认所有端口都划分到VLAN 1。只有当端口被划分到交换机上存在的VLAN时,这些端口才会处于活动状态。

Switch(config)#interface FastEthernet 3/1

Switch(config-if)#switchport access vlan 2       #把模块3上的快速以太网端口1划分到vlan2

 

Trunking技术

VLAN对于每台交换机的数据库而言都是本地,VLAN信息不会在交换机之间传递。trunking链路能区别交换机之间传递的帧是哪个VLAN的。Cisco有两种Ethernet trunking机制:ISL和IEEE 802.1q。trunking必须在链路两端同时配置。启动交换机上的trunking功能的步骤如下:

Switch(config-if)#switchport mode dynamic

Switch(config-if)#switchport mode trunk

Switch(config-if)#switchport nonegotiate       #禁用DTP(动态链路聚集协议)

 

指定封装方式。封装方式有ISL(Inter-Switch Link)和dot1q(802.1Q)两种。ISL是Cisco私有的,而802.1Q是由IEEE开发的公用标准。并不是所有的Catalyst交换机都支持802.1Q标准。ISL只支持快速以太网和千兆以太网;而802.1Q标准不仅仅支持这些,还支持FDDI和Token Ring等等。

Switch(config-if)#switchport trunk encapsulation dot1q

 

如果采用dot1q封装,则trunk上每个端口的native VLAN都要一样。默认IOS上所有native VLAN都配置成VLAN 1,所以在默认状态已匹配。CDP(Cisco Discovery Protocol,Cisco发现协议)在交换机间传递native VLAN信息。如果不匹配,则控制台会输出CDP出错信息。

指定trunk中的VLAN。默认trunk链路会承载交换机上所有VLAN的流量。我们也可以添加和删除trunk中的VLAN。

Switch(config-if)#switchport trunk allowed vlan remove 2      #从trunk中删除VLAN 2

Switch(config-if)#switchport trunk allowed vlan add 3         #向trunk中添加VLAN 3

 

VTP

为保证trunk正常,VTP在建立trunk的交换机之间发送信息,以维护其上的VLAN。VTP消息在同一VTP域内的交换机之间进行交流。VTP只管理VLAN2-VLAN1002。交换机可在三各VTP模式下运行:server、client或者transparent。VTP信息只在trunk链路中传送,如果没有启动一条trunk链路,则两台交换机之间就不能交换VLAN信息。

默认情况下,Cisco交换同处于VTP server模式,在这种模式下,你可以创建、删除或修改本地VLAN数据库里的VLAN。在做过改动后,VLAN数据库的变化会被传送到VTP域内所有处于server或client模式的交换机上。server也可以接收从域其它交换机发送来的VLAN数据库变化信息。在client模式下运行VTP的交换机不能创建、删除或修改本地VLAN数据库里的VLAN。它依赖VTP域内其它交换机来更新自已的VLAN信息。client会保护数据库同步,但它不会保存信息,如果掉电,会丢失所有信息。client还会公布自已数据库的信息,把VTP信息转发给其它交换机。transparent模式和server的运行方式类似,但它不会把本地VLAN的变化信息传播给其它的交换机。此外,本地VLAN数据库也不接收其它交换机的修改信息。transparent模式的交换机不需要有VTP域名。

通过VTP Pruning(裁剪)功能,可以动态添加和删除trunk中的VLAN。要启用Pruning功能,交换机需支持VTP版本2。启动方式如下:

Switch(vlan)#vtp pruning

 

指定符合裁剪资格的VLAN,默认所有VLAN都有资格,也就是说都会被自动裁剪。如果不想被自动裁剪,则要把该VLAN从资格清单中删除。

Switch(config-if)#switchport trunk pruning vlan remove 2

 

VTP有版本1和版本2,默认情况下所有交换机处于版本1,可以用以下命令启用版本2。

Switch(vlan)#vtp v2-mode

V2 mode enabled.

 

查看vtp配置情况。

Switch# show vtp status

 

私有VLAN

私有VLAN能给处于同子网的设备带来更高的安全性。在Catalyst 6000和Catalyst 4000系列交换机上可以配置私有VLAN。在一个私有VLAN中,可以隔离某些设备,避免被隔离VLAN内的设备之间互通。私有VLAN利用isolated和community两种次VLAN来控制设备通信方式。次VLAN被划给主VLAN,而端口则被划给次VLAN。在isolated内的端口不能VLAN内除混杂端口之外的其他设备通信。community内的端口可以和同一群体内的其它端口以及混杂端口进行通信。不同community内的端口不能互相通信。在创建一个私有VLAN之前,你必须配置VTP为transparent模式。私用VLAN必须在单台交换机上配置,不能有其它交换机上VLAN的成员端口。

STP生成树协议

STP检测并避免2层桥接环的出现。

启用STP。

Switch(config)#spanning-tree vlan 3

 

在接入层链路使用uplinkfast STP收敛加快端口的启动速度。

Switch(config)#spanning-tree uplinkfast

 

VLAN ACL

我们可以为ACL起个编号,编码范围如下:

4006(config)#access-list ?

  <1-99>            IP standard access list       #标准范围

  <100-199>         IP extended access list       #扩展范围

  <1300-1999>       IP standard access list (expanded range)

  <2000-2699>       IP extended access list (expanded range)

  dynamic-extended  Extend the dynamic ACL absolute timer

  rate-limit        Simple rate-limit specific access list

 

标准范围的ACL能过滤源IP地址,对IP层进行访问控制。

4006(config)#access-list 1 deny 192.168.6.0 0.0.0.255

4006(config)#access-list 1 permit any

 

扩展的ACL可以对应用层(TCP、ICMP等)进行更细致的控制。设置一条acl示例:

4006(config)#access-list 101 deny ip 192.168.6.246 0.0.0.0 192.168.3.0 0.0.0.255

4006(config)#access-list 101 permit ip any any

 

上面创建个编号为101的扩展ACL。deny表示禁止,permit表示允许。192.168.6.246 0.0.0.0表示源主机地址,192.168.3.0 0.0.0.255表示3.0这个网段,any表示任意地址。由于Cisco交换机和路由器的ACL默认策略会在最后添加deny any(标准ACL)或deny ip any any(扩展ACL),也就是禁止所有数据通过,所以如果我们不想执行该条ACL的话就要在我们设置的ACL的最后添加一条permit any(标准ACL)或者permit ip any any(扩展ACL)跳过默认规则。0.0.0.0和0.0.0.255是通配符,通配符为0表示对应的IP地址位的值一定要相符。通配符为1表示对应的IP地址位的值可以任意。所以192.168.6.246 0.0.0.0表示主机192.168.6.246这台主机。192.168.3.0 0.0.0.255表示192.168.3.0这个网段。IOS中的通配符(wildcards)有自动对齐功能,会根据通配符把IP地址进行对齐。如:

4006(config)#access-list 101 deny ip 192.168.6.223 0.0.0.0 192.168.4.2 0.0.0.255

4006(config)#exit

4006#show access-lists

Extended IP access list 101

        deny ip host 192.168.6.223 192.168.4.0 0.0.0.255

 

Note

192.168.4.2根据通配符自动对齐为192.168.4.0。

命名ACL可以为ACL起个名称,而不是上面介绍的数字。用命名ACL可解决ACL编码不足问题。而且可以删除命名ACL中的某条规则,而不象编码ACL只能删除整个ACL。但新添加的项目只能添加在列表的后面,而不能插入到中间位置。

4006(config)#ip access-list standard server

4006(config-std-nacl)#deny 192.168.6.245 0.0.0.0

4006(config-std-nacl)#permit any              #千万记住要加这句,否则整个网都会断掉

4006(config-std-nacl)#exit

4006#show access-lists

Standard IP access list server

    deny   192.168.6.245

 

使用no命令就可以删除ACL或命名ACL中的规则。

把ACL应用到vlan 6的in接口上。in表示数据流入的方向,out表示数据流出的方向。

4006(config)#interface vlan 6

4006(config-if)#ip access-group server in

 

路由器设备中判断in和out方向只要根据应用ACL的接口在数据流的前后位置设置即可。如:

        router

  in  ___________ out

---->|F01    S01 |---->

     |___________|

箭头为数据流向,ACL应用在F01接口则要用in,如果应用到S01接口则要用out。

 

在vlan中in和out的说明:

         switch

  in  ______________  out

---->|vlan6   vlan4 |----->

     |______________|

箭头为数据流向,如果要控制vlan6访问vlan4,ACL应用在vlan6要用in,应用在vlan4则要用out。

 

acl的established选项会检查TCP数据包的ACK和RST标识是否置位,如果设置了则可以通过,否则就过滤掉。通过该选项,我们可以控制通信只能由一方主动发起,另一方只有应答信息被允许通过。其它主动发起的连接都被过滤掉。

access-list 101 permit tcp any 192.168.2.0 0.0.0.255 esablished

 

我们一般不能访问192.168.2.0网段,除非通信是由192.168.2.0网段主动发起的。这样能有效减少192.168.2.0网段感染电脑病毒和遭受恶意攻击的机率。

反射性访问列表(reflexive access lists)允许通信的返回信息通过,其它信息则会过滤掉。它代替静态的established选项。要使用反射性访问列表,就要使用命名ACL。例如我们要允许内部网中的任何人建立对Internet上主机的基于UDP的通信,还要阻止除前面查询答复分组以外的任何向内UDP通信。实现方法分以下两步:

生成允许UDP通信流向外的规则,并让路由器建立分组的状态表项目。

生成向内的过滤规则,只匹配内网向外发送的UDP通信流的答复。

4006(config)# ip access-list extended filterout

4006(config-ext-nacl)#permit udp 192.168.6.0 0.0.0.255 any reflect udpfilter

 

第一行创建一个叫filterout的命名扩展ACL,第二行设置允许向外的UDP通信。命令reflect updfilter告诉路由器在表updfilter中建立状态表项目。路由器会在这里跟踪所有向外UDP

设计ACL的几个原则:

ACL的执行顺序是从上到下一条条进行匹配,一旦匹配成功则不再往下执行。所以我们把把较细较具体的匹配条件放在ACL的前面,范围较广的条件放到后面。

所有ACL最后都默认添加一条deny any any规则以禁止所有通信,所以如果想跳过该条ACL规则,则要在ACL后显式地添加一个permit any any规则。

将扩展ACL尽量放在靠近过滤源的位置,这样创建的过滤器就不会影响其它接口上的数据流。

将标准ACL放在靠近目标位置。由于标准ACL使用源IP地址进行过滤,靠近源会影响数据流流向其它端口。

ARP操作

查看arp表

            show arp

        

查看并过滤arp表

            show arp | include xxxx.xxxx.xxxx

        

删除单条arp记录

            no arp xxxx.xxxx.xxxx

        

在交换机上配置DHCP服务器

我们可以在交换机上设置DHCP服务器,为网络中的各个子网动态分配IP地址。当我们在交换机中设置了DHCP服务器后,子网上的电脑会优先使用交换机上的DHCP服务,而不会通过DHCP代理转发DHCP请求。

要在交换机上使用DHCP服务,首先要启动该服务。

4006(config)#service dhcp

 

配置地址池。

4006(config)#ip dhcp pool abc               #abc为地址池标识

4006(dhcp-config)#network 192.168.12.0 255.255.255.0          #定义网络

4006(dhcp-config)#default-router 192.168.12.1                 #定义网络默认网关

4006(dhcp-config)#domain-name tigerhead                       #定义域名后缀

4006(dhcp-config)#dns-server 192.168.3.2 192.168.3.6          #定义DNS服务器

4006(dhcp-config)#netbios-name-server 192.168.3.2             #定义Wins服务器

4006(dhcp-config)#lease 5                                     #定义IP租期

4006(dhcp-config)#end

 

配置完成后,地址池就正式生效。划分到192.168.12.0这个VLAN的电脑就可以从abc这个地址池中自动获得一个192.168.12.x的IP地址。如果在abc地址池中要保留192.168.12.230--192.168.12.254这段IP地址作为固定IP,则可以用以下命令实现。

4006(config)#ip dhcp excluded-address 192.168.12.230 192.168.12.254

 

用show命令可以查询IP的分配情况。

4006#show ip dhcp binding

IP address       Hardware address        Lease expiration        Type

192.168.12.2     0100.e04c.99f2.b9       Jul 22 2017 01:53 PM    Automatic

192.168.12.3     0100.80c8.e7cd.3f       Jul 22 2017 07:37 PM    Automatic

192.168.12.4     0100.055d.02bb.3b       Jul 22 2017 02:03 PM    Automatic

...

 

交换机上的DHCP服务分配的IP地址是保存在内存中的,交换机断电或重启后已分配的IP信息会丢失。为保证IP分配的稳定,我们可以把这些IP分配表保存在一台tftp服务器上。当交换机重启时自动从tftp服务器加载IP分配表。设置方法如下:

4006(config)#ip dhcp database tftp://192.168.0.4/dhcp-release

 

可以用show命令查询交换机上的dhcp服务器与远程tftp服务器的连接状态。

4006#show ip dhcp database

URL      : tftp://192.168.0.4/dhcp-release

Read     : Never

Written  : Aug 29 2007 09:48 AM

Status   : Last write succeeded. Agent information is up-to-date.

Delay    : 300 seconds

Timeout  : 300 seconds

Failures : 2

Successes: 323

 

在交换机上我们可以设置多个IP地址池为不同的网段服务。不同的地址池用不同的标识符区分开。

Chapter 6. PIX防火墙

Table of Contents

入门

ASA安全级别

基本配置

PPPoE拔号配置

NAT

访问控制列表--ACL

Turbo ACL

icmp ACL

PDM

VPN

IKE

CA

LAN to LAN VPN

easy remote VPN

远程访问VPN

远程连接PIX

命令授权

Cisco公司的PIX系列防火墙是一种基于状态检测的包过滤防火墙。

入门

PIX防火墙CLI提供4种访问模式,分别是非特权模式、特权模式、配置模式和监控模式。前三种模式我们应该很熟悉了,和Cisco交换机和路由器一样。监控模式用于更新系统映像。

当没有配置的PIX防火墙启动时,它会提示你通过交互的方式进行预先配置。按向导一步步完成后,就可以通过PDM这个GUI工具登录防火墙进行进一步的配置。

一般在内部网络我们多数都是通过telnet命令登录我们PIX防火墙来进行配置管理的,所以我们要配置PIX允许我们使用telnet登录PIX,默认是不允许的。按下面的步骤操作打开PIX的telnet功能。第一次登录时的默认密码是cisco。

debian:~/c# telnet 192.168.10.1

Trying 192.168.10.1...

Connected to 192.168.10.1.

Escape character is '^]'.

 

 

User Access Verification

 

Password:                                                

Type help or '?' for a list of available commands.

fw> enable                                                #进入特权模式,默认不需要密码,直接回车即可

fw# configure terminla                                    #进入配置模式

fw(config)# telnet 192.168.0.246 255.255.255.255 inside   #允许192.168.0.246从内接口登录

fw(config)# telnet timeout 30                             #设置telnet的空闲中断时间为30分钟

fw(config)# passwd 12345                                  #设置新的telnet密码

 

这里我们使用telnet工具登录PIX是不用提供用户名的。也就是说只能有一个用户可以登录PIX。我们也可以创创建本地用户数据库,利用数据库中用户进行登录。使用以下命令启用通过本地用户数据库进行授权和添加本地用户。

fw(config)# aaa authentication telnet console LOCAL    #启用本地用户数据库授权

fw(config)# username jims password 12345 privilege 15  #创建拥有最高安全级别的管理员jims

 

启用本地用户数据库授权后,重新登录PIX时就要求输入用户名了。

进入特权模式要用enable命令,默认不需要密码,直接按回车就可以进入。接着要为我们的特权模式设置一个安全的密码。设置进入特权模式密码的命令是enable password。命令格式:

Usage:  enable password [<pw>] [level <level>] [encrypted]        #设置密码

        no enable password level <level>                          #取消密码

        show enable                                               #显示密码

password设置密码串,level设置的是特权级别,最高15最低0,encrypted关健字说明密码串为加密后的值。

 

在PIX中,可在任意地方使用show命令来显示系统状态。下面几个show命令可以帮助我们了解防火墙的系统信息。分别是:show memory、show version、show interface、show ip address和show cpu usage。

用show run和write terminal命令可以显示当前的配置信息。该信息保存在内存中,重启会丢失。用write memory命令可把当前配置信息保存在闪存中。

语法:

Usage:  write erase|floppy|mem|terminal|standby

       

示例:

fw(config)# wr mem

Building configuration...

Cryptochecksum: 2014cbd3 b91eb007 f759bc58 36b62288

[OK]

 

如果我们在使用中CLI时对有些命令不熟悉,可以用help命令显示帮助信息。

fw(config)# help write

 

USAGE:

 

        write erase|floppy|mem|terminal|standby

        write net [<tftp_ip>]:<filename>

 

DESCRIPTION:

 

write           Write config to net, flash, floppy, or terminal, or erase flash

 

SYNTAX:

 

erase           Clears the flash memory configuration

 

terminal        Display the current active configuration, not necessarily

                the saved configuration

 

mem             Save the active configuration to the flash, so that it will

                be the active configuration after a PIX Firewall reload

 

floppy          Save the active configuration to a floppy disk. This is

                highly recommended between PIX Firewall upgrades

 

see also:       configure

 

<tftp_ip>       IP address of the tftp server.

 

<filename>      Name of the configuration file.

 

使用show startup-config和show configure命令可以显示闪存中配置信息。

使用show history命令可以显示命令历史。

使用write erase可清除闪存中的配置信息。

PIX防火墙可以和tftp服务器通信,把配置信息保存在tftp服务器上或从tftp服务器重新读取配置信息。用tftp-server启用tftp服务器。命令格式如下:

fw(config)# tftp-server ?

Usage:  tftp-server [<if_name>] <ip> <directory>     #指定tftp服务器地址和路径

        [no|show|clear] tftp-server

示例:

fw(config)# tftp-server 192.168.0.3 firewall/config/506e

 

使用write net和configure net命令读写tftp上的备份配置。运行configure net命令会用tftp服务器上的配置文件重建配置,所以如果我们在没有清空现有配置的情况下运行该命令,会显示有重复项目的出错信息。

fw(config)# write net

Building configuration...

TFTP write '/srv/tftp/pix506e' at 192.168.0.3 on interface 1

[OK]

fw(config)# configure net

192.168.3.0 is already mapped to 'anet'!

192.168.4.0 is already mapped to 'bnet'!

Adding obj (port-object range 26 finger) to grp (port) failed; object already exists

...

 

reload命令重启PIX防火墙,并从闪存中重新加载配置信息。重启前,如果当前配置信息没有写到闪中,则重启后,原先所做的修改信息会丢失。

在防火墙中,准确的时间设置是很重要的。用clock set命令设置时间,用clear clock删除时间设置。clock set命令格式:

clock set hh:mm:ss month day year

示例:

clock set 09:59:00 sep 14 2007

 

ASA安全级别

ASA是一种基于状态的安全防护方式。每个进来的数据包(从低安全级别主机到高安全级别主机)都要根据ASA和PIX防火墙内存中的连接状态信息进行检查。ASA执行以下任务:

对经过PIX防火墙的连接执行状态连接控制。

对内部应用,在没有明确配置情况下,允许单向(出站)连接。出站的连接指从高安全级别接口向低安全级别接口的连接。

监视返回的数据包,确认其有效性。

对TCP顺序号进行随机处理,减少被攻击的可能性。

安全级别表明一个接口相对于另一个接口是可信还是不可信。如果一个接口的安全级别高于另一个接口的安全级别,则这个接口是可信的,如果一个接口的安全级别低于另一个接口的安全级别,则这个接口是不可信的。

安全级别的基本访问规则是:具有较高安全级别的接口可以访问较低安全级别的接口。反之,较低安全级别的接口默认不能访问较高安全级别的接口,除非设置了ACL或conduit(管道)。安全级别的范围是0--100。下面分别介绍这些安全级别的规则。

安全级别100。这是PIX防火墙内部接口的最高级别,是默认设置,且不能改变。企业内部网络应该连接在该接口上。外部的网络不能访问该接口,而该接口可以任意访问其它接口。

安全级别0。这是PIX防火墙外部接口的最低级别,是默认设置,且不能改变。一般用以连接Internet。

安全级别1--99。与PIX连接的边界接口的安全级别,可根据每台设备的访问情况来给它们分配相应的安全级别。

安全级别100访问安全级别0时,所有IP数据流都可以通行,除非设置了ACL、认证或授权的限制。虽然允许IP数据流通行,但还是要通行nat转换才能到达外网口。

安全级别0要访问安全级别100时,默认禁止所有IP数据流通行,除非设置了ACL以允许数据流通过。认证和授权机制可进一步限制数据流的通行。

基本配置

使用CLI对PIX进行基本需要使用以下几个命令:

nameif,设置接口名称和指定接口安全级别。

语法:

fw(config)# nameif ?

Usage:  nameif <hardware_id> <if_name> <security_lvl>

        nameif <vlan_id> <if_name> <security_lvl>

        no nameif

 

示例:

fw(config)# nameif ethernet0 outside security0

fw(config)# nameif ethernet1 inside security100

 

PIX的内网接口名(inside)和外网接口名(outside)都是默认的,不能更改。clear nameif可清除配置,show nameif可显示nameif配置。

interface,设置接口的硬件参数和启动接口。默认PIX所有接口都是关闭的。要用没带shutdown参数的interface命令来启用接口。

语法:

fw(config)# interface ?

Usage:  interface <hardware_id> [<hw_speed> [shutdown]]

        [no] interface <hardware_id> <vlan_id> [logical|physical] [shutdown]

        interface <hardware_id> change-vlan <old_vlan_id> <new_vlan_id>

        show interface

 

示例:

fw(config)# interface ethernet0 auto

fw(config)# interface ethernet1 auto

 

ip address,给接口分配固定IP地址。

语法:

fw(config)# ip address ?

Usage:  [no] ip address <if_name> <ip_address> [<mask>]

        [no] ip address <if_name> <ip_address> <mask> pppoe [setroute]

        [no] ip address <if_name> dhcp [setroute] [retry <retry_cnt>]

        [no] ip address <if_name> pppoe [setroute]

 

示例:

fw(config)# ip address outside 61.28.60.10 255.255.255.248

fw(config)# ip address inside 192.168.0.1 255.255.255.0

 

我们也可用ip address outside dhcp命令启动dhcp client功能来自动获取IP地址。使用show ip address dhcp命令可以查看dhcp租用的相关信息。重新输入ip address outside dhcp命令会释放并重新获取outside接口的dhcp租用,也可用clear ip命令刷新所有接口的dhcp租用信息。clear ip address outside dhcp可清除outside接口的dhcp租用信息。

nat,配置内网接口到外网接口的地址转换功能,把内网的私有IP转换为公有IP地址,隐藏内网IP信息。

语法:

fw(config)# nat ?

Usage:  [no] nat [(<if_name>)] <nat_id> <local_ip> [<mask>

                [dns] [outside]

                [<max_conns> [emb_limit> [<norandomseq>]]]]

[no] nat [(if_name)] 0 [access-list <acl-name> [outside]]

 

示例:

fw(config)# nat (inside) 1 0.0.0.0 0.0.0.0

 

上面的示例表示对内网所有主机的出站通信进行地址转换。1表示转换后的公网IP地址池,通过global命令指定。使用nat 0命令可以指定某些内部主机禁用地址转换功能。

fw(config)# nat (inside) 0 192.168.0.0 255.255.255.0

 

192.168.0.0网段所有主机都禁用nat功能。

global,指定公网IP地址池。

语法:

fw(config)# global ?

Usage:  [no] global [(<ext_if_name>)] <nat_id> {<global_ip>[-<global_ip>] [netmask <global_mask>]} | interface

 

示例:

fw(config)# global (outside) 1 192.168.0.20-192.168.0.100

 

如果使用了interface参数表示使用PAT方式的NAT。PAT的具体介绍请参考下面的内容。

route,为接口设置路由信息。

语法:

fw(config)# route ?

Usage:  [no] route <if_name> <foreign_ip> <mask> <gateway> [<metric>]

 

示例:

fw(config)# route outside 0.0.0.0 0.0.0.0 61.28.60.10 1

 

上例设置了外网口的默认路由。所有出站信息都会路由到61.28.60.10。

logging,记录目录信息。

fw(config)# logging ?

Usage:  [no] logging on

        [no] logging timestamp

        [no] logging standby

        [no] logging host [<in_if>] <l_ip> [tcp|udp/port#] [format {emblem}]

        [no] logging console <level>

        [no] logging buffered <level>

        [no] logging monitor <level>

        [no] logging history <level>

        [no] logging trap <level>

        [no] logging message <syslog_id> level <level>

        [no] logging facility <fac>

        [no] logging device-id hostname | ipaddress <if_name>

                | string <text>

        logging queue <queue_size>

        show logging [{message [<syslog_id>|all]} | level | disabled]

 

PPPoE拔号配置

从软件版本6.2开始,可以把PIX防火墙配置成一个PPPoE客户端。配置方法如下:

fw(config)# vpdn group test request dialout pppoe        #设置一个名为test的pppoe拔号连接

fw(config)# vpdn group test ppp authentication PAP       #为test拔号连接指定一种用户验证协议

fw(config)# vpdn group test localname gzDSL1234          #把拔号帐号gzDSL1234和拔号连接test关联起来

fw(config)# vpdn username gzDSL1234 passowrd xxx         #设置ISP提供的ADSL线路的用户名和密码

fw(config)# ip address outside pppoe setroute            #把pppoe连接接口设置为默认路由

 

用ip address pppoe命令启动PPPoE会话。如果PIX不存在默认路由,则可用ip address pppoe命令的setroute选项把pppoe接入服务器的IP地址设置为默认路由。如果PIX存在默认路由,则不能使用setroute命令。否则会不能建立pppoe会话。这是因为pppoe提供的默认网关不能够覆盖已存在的默认网关。如果想使用pppoe服务器提供的默认网关,则要清除已存在默认网关。

ip address pppoe语法:

[no] ip address <if_name> pppoe [setroute]

 

用show vpdn命令可以查看PPPoE隧道和会话信息。

NAT

NAT即网络地址转换,把数据包中的私有IP地址转换成公有IP地址用于访问公网或连接另一网络。在PIX中内网都是要通过NAT转换才能访问外网的。PIX使用nat命令和global命令来完成NAT的配置。global命令用来定义转换后的IP地址池,一般是一个或一组公网IP地址。nat命令使用该地址池进行地址转换。

global命令格式:

Usage:  [no] global [(<ext_if_name>)] <nat_id> {<global_ip>[-<global_ip>] [netmask <global_mask>]} | interface

 

示例

global (outsite) 1 192.168.0.2-192.168.0.10 netmask 255.255.255.0

定义了地址池1,也就是说nat_id的值为1,地址池的IP范围是192.168.0.2到192.168.0.10

 

如果地址池使用interface接口参数,则定义了一个PAT(端口地址转换),PAT也是NAT的一种。PAT把多个内网IP转换成一个固定的外网IP,转换后,通过分配不同的端口号来区分每个数据包。在中国,由于IP资源的紧缺,每个企业所获得的公网IP地址都不多。不可能定义一个大的IP地址池来进行IP地址转换。多数企业都是利用一个外网IP地址,通过配置PAT来使所有内网用户都能连接互联网。

nat命令格式:

fw(config)# nat ?

Usage:  [no] nat [(<if_name>)] <nat_id> <local_ip> [<mask>

                [dns] [outside]

                [<max_conns> [emb_limit> [<norandomseq>]]]]

[no] nat [(if_name)] 0 [access-list <acl-name> [outside]]

 

动态内部NAT,把内网私有IP地址动态地转换成一组外部公网IP地址。

fw(config)# nat (inside) 1 0.0.0.0 0.0.0.0 0 0

fw(config)# global (outside) 1 192.168.0.2-192.168.0.10 netmask 255.255.255.0

 

0.0.0.0可以写成0。global定义了外网IP地址池1,nat使用标识1将内部网络和外网IP地址池联系起来,实现地址转换。当内网IP要访问外网时,通过NAT机制从global定义的外网地址池中申请1个外网IP,通过该外网IP与Internet上的主机进行通信。

静态内部NAT,把一个内网私有IP地址静态地转换成一个公网IP地址。设置静态NAT要使用static命令。

fw(config)# static ?

Usage:  [no] static [(internal_if_name, external_if_name)]

                {<global_ip>|interface} <local_ip> [dns] [netmask <mask>]

                [<max_conns> [<emb_limit> [<norandomseq>]]]

        [no] static [(internal_if_name, external_if_name)] {tcp|udp}

                {<global_ip>|interface} <global_port>

                <local_ip> <local_port> [dns] [netmask <mask>]

                [<max_conns> [<emb_limit> [<norandomseq>]]]

 

下面示例把内网的IP地址192.168.0.2转换成外网的IP地址61.28.20.11。

fw(config)# static (inside,outside) 192.168.0.2 61.28.20.11

 

使用static命令设置的静态转换的优先级高于用nat和global命令设置的动态转换。如果一个IP地址已经被PAT使用了,则不能在静态转换中再使用该IP地址。静态转换的作用是把内网服务器开放出来,允许外网用户通过外网IP地址访问。

使用static命令可以设置端口重定向,把内部主机的特定端口转换成外网主机的特定端口。该命令还需配置ACL来允许流量通过。下面的例子就把内网主机的8000端口转成外网主机的80端口。

fw(config)# access-list outside_access_in permit tcp any host 61.28.61.10 eq www

fw(config)# static (inside,outside) tcp 61.28.61.10 www 192.168.0.6 8000 netmask 255.255.255.255 0 0

 

PIX防火墙软件版本6.2或更高版本中,还支持外部动态NAT和外部静态NAT。可以把一个外部不太安全的接口上的IP地址转换成内部安全接口上的IP地址。

用nat 0命令控制某些内部IP地址不使用NAT功能。如果这些IP地址是私有IP地址则不能与外网联接。

fw(config)# nat (inside) 0 x.x.x.x

 

用ACL策略对nat进行控制。下面对匹配inside_outbound_nat0_acl策略的信息流禁止使用nat。

fw(config)# access-list inside_outbound_nat0_acl permit ip any 192.168.4.0 255.255.255.224

fw(config)# nat (inside) 0 access-list inside_outbound_nat0_acl

 

如果内网主机要通过位于PIX外的DNS主机进行域名解析来访问内部WEB主机,则要用到NAT的DNS记录转换功能。

fw(config)# nat (inside) 1 10.0.0.0 255.255.255.0 dns

fw(config)# global (outside) 1 192.168.0.20-192.168.0.254 netmask 255.255.255.0

fw(config)# static (inside,outside) 192.168.0.17 10.0.0.10 dns

 

10.0.0.10是Web clien IP,192.168.0.17是内部Web Server IP。

使用show xlate命令显示转换槽内容,clear xlate命令清除转换槽内容。

fw# show xlate

984 in use, 1750 most used

PAT Global 66.29.61.11(45903) Local 192.168.12.36(2998)

PAT Global 66.29.61.11(46863) Local 192.168.12.36(3847)

PAT Global 66.29.61.11(47887) Local 192.168.6.79(2678)

PAT Global 66.29.61.11(47823) Local 192.168.12.16(2054)

PAT Global 66.29.61.11(47759) Local 192.168.6.147(1632)

...

 

使用show conn命令显示处于活跃的连接。

fw# show conn

670 in use, 997 most used

TCP out 220.179.251.106:80 in 192.168.6.79:1514 idle 0:03:04 Bytes 1704 flags UfO

TCP out 58.251.62.35:80 in 192.168.12.8:1046 idle 0:00:23 Bytes 29662 flags UIO

TCP out 222.163.35.99:80 in 192.168.12.36:2513 idle 0:00:25 Bytes 0 flags saA

TCP out 58.251.62.31:80 in 192.168.6.227:1203 idle 0:00:30 Bytes 9570 flags UIO

TCP out 209.85.143.99:80 in 192.168.13.12:1685 idle 0:00:17 Bytes 1258 flags UIO

UDP out 61.144.56.100:53 in 192.168.3.6:8621 idle 0:01:03 flags D

...

 

通过PIX的流量有两种,一种是出站流量,一种是入站流量。出站流量是从一个较高安全级别的接口到一个较低安全级别的接口的流量。入站流量则相反,是由较低安全级别接口到较高安全级别接口的流量。

访问控制列表--ACL

PIX中的ACL用来控制通过内网接口和外网接口的流量,使用access-list和access-group两个命令实现。access-list用来创建ACL,access-group用来把ACL绑定到PIX的特定接口上。使用access-group在一个接口上只能绑定一个ACL,且只能绑定在接口的入站(in)流量上,在PIX中没有出站ACL。PIX的ACL条目的编辑比路由器或交换机的灵活,可以随意把新的ACL条目插入到列表的中间位置。在路由器或交换机上的ACL条目是不支持中间插入的。要在中间插入一条新的ACL条目,就要把整个ACL删除重建。

show access-list命令可以列出已设置的ACL条目和匹配命中情况。

clear access-list命令删除所有的ACL配置。如果指定acl_id则只删除指定的ACL条目。

PIX中的ACL和Cisco IOS中的ACL的子网掩码设置方式是完全相反的。在PIX中255.255.255.0表示一个标准C类网络的子网掩码,与Linux操作系统的网络子网掩码设置方式一样。而在Cisco IOS是用0.0.0.255来表示的。

在ACL中可以使用lt(小于)、gt(大于)、eq(等于)、neq(除外)和range(范围)操作符。

示例1,创建一个允许外网访问60.20.60.22主机的www端口的ACL。把该ACL绑定在outsite接口过滤入站的数据包。outside_access_in是使用access-group定义的外部接口别名。

fw(config)# access-list outside_access_in permit tcp any host 60.20.60.22 eq www

fw(config)# access-group outside_access_in in interface outside

 

nat access-list命令结合nat和access-list实现策略nat。它可以只对与ACL中的条目匹配的流量进行nat转换。使用nat 0 access-list还可以对与ACL条目匹配的流量不进行nat操作。下面是一个示例:

fw(config)# access-list nonat permit ip host 192.168.0.2 host 10.2.3.2

fw(config)# nat (inside) 0 access-list nonat

 

示例2,允许内网主机Ping通外网主机。ping程序使用了icmp协议,出站流量默认是通行的。入站流量默认是禁止的,我们要允许icmp协议回复的echo-reply入站流量通过outside接口。

fw(config)# access-list outside_access_in permit icmp any any echo-reply

 

Turbo ACL

一般我们的ACL都有多个条目,当PIX处理数据包时会一条条地在ACL列表中搜索以找到匹配的条目。当ACL列表中的条目较多时,搜索的效率问题就会影响处理速度。根据测算,当ACL中多于19个条目时,查询时间就会越来越长。这时我们就要启用Trubo ACL。常规ACL和Turbo ACL处理过程的特点如下:

常规ACL处理过程:

ACL条目在内部被有序地组织起来形成一个链表。

线性地查找相匹配的条目,过滤匹配的数据包。

当ACL条目增大时会相应增大查找时间,导致PIX性能下降。

Turbo ACL处理过程:

ACL被编译成一个数据表。

对于大量的ACL来说,会减少查找时间。

最少需要2.1M的内存。

由于Turbo ACL对内存的要求较高,在启用该特性时要注意。每增加2000条ACL则需增加1M内存。启用Turbo ACL的命令是access-list compiled,使用no access-list compiled命令关闭该特性。

icmp ACL

icmp命令用来允许或禁止ping程序访问PIX上的接口,icmp命令的格式如下:

fw(config)# icmp ?

Usage:  [no] icmp permit|deny <ip-address> <net-mask> [<icmp-type>] <if-name>

        [clear|show] icmp

 

PIX默认内网主机是不允许ping外网口而允许ping内网口的。禁止内网主机ping防火墙的inside接口的命令如下:

fw(config)# icmp deny any echo inside

 

用show icmp可以显示我们设置的icmp acl,删除icmp acl使用clear icmp命令。

注意:Cisco建议允许ICMP unreachable信息。因为如果我们拒绝了ICMP unreachable信息,将不能自动发现ICMP路径最大传输单元(MTU),造成IPSec和PPTP流量中断。

fw(config)# icmp permit any unreachable outside

 

PDM

PDM是个基于Web的GUI管理工具,使用SSL加密传输来保证数据传输的安全。使用PDM可完成大部份的PIX配置。

默认是没有开放HTTPS服务的,不能登录PDM来管理PIX防火墙。用下面的命令打开http服务并允许访问。

http server enable

http 192.168.1.0 255.255.255.0 inside

 

上面配置可以打开PDM服务并允许192.168.1.0网段上主机访问https服务。

VPN

VPN(虚拟专网)可以在公网上创建一条安全的加密通道,连接不同区域的办公网络。利用VPN技术,可以节省企业大量的专网建设成本,是现时很热门的一种联网技术。

PIX 506E防火墙最多可支持25条的VPN通道。

创建VPN的技术有很多种,有PPTP、L2TP、IPSec和SSL等。PIX使用IPSec协议支持VPN,具有以下特点:

数据机密性,发送者发送的数据经网络传送前对数据包进行加密。

数据完整性,接收者对接收的数据进行认证,保证数据在传输过程中没有被修改。

数据源认证,接收者对发送者数据包的源进行认证。

拒绝重放,接收者可探测并拒绝重放数据包,防止欺骗和中间人攻击。

IPSec包含两个主要协议,AH(认证头)和ESP(封装安全净荷)。

AH提供认证和可选的重放检测服务,充当"数字签名",保证数据在IP网络上没有被篡改。AH的IP协议号是51。

ESP提供数据加密机制,对IP数据包的数据净荷进行加密。ESP的IP协议号是50。

IPSec可以在两种不同的模式下工作:

隧道模式,在此模式下,整个数据包,包括初始的包头都使用ESP加密。PIX充当IPSec的代理,执行所有的加密工作,主机不执行任何的加密。

传输模式,在此模式下,只有IP净荷被加密。初始包头不进行加密,ESP包头插在IP包头后面。

启动IPSec加密,通信双方必须共享一个密钥。为保证共享密钥交换的机密性,IPSec分两步工作:

第一步,配置IKE参数,创建一个安全通道,用以交换安全信息。

第二步,配置IPSec参数,利用第一步创建的安全通道协商IPSec SA,SA用以对实际的用户数据进行加密和传输。SA包含的信息包括有通信双方的变换集和密钥。

PIX防火墙IPSec支持的标准。

ISAKMP(Internet Security Association and Key Management Protocol,互连网安全联盟及密钥管理协议)。ISAKMP是一个定义在主机之间交换密钥和协商安全参数的框架。ISAKMP定义密钥在非安全网络上交换的一般机制,ISAKMP定义的信息包括报文中消息的位置和通信过程发生的机制,但它不指明使用的协议和算法。

IKE(Internet密钥交换),为IPSec提供基础服务的混合协议,它在ISAKMP框架下运行。用于在对等体之间认证密钥并在它们之间建立共享的安全策略。IKE用于确认,譬如标志一个要求加密会话的对等体,以及决定对等体使用何种算法和何种密钥。IKE使用公开密钥加密算法在非安全网络上安全地交换秘密密钥。

DES,用以对数据包进行加密和解密。DES使用56位的密钥,加密速度很快。

3DES,是DES的加强版本,使用3个单独的密钥加密3次,是DES加密强度的3倍。3DES使用168位的密码,加密强度大。

AES,新的数据包加解密标准。加密强度比DES和3DES都要高,而且加密开销比它们小。AES使用128位、192位或256位的密钥。

D-H,D-H是一种公钥密码协议,该协议让收发双方通过一个不安全的通信通道建立共享密钥。IKE通过D-H建立会话密钥。PIX防火墙支持768位(组1),1024位(组2)和1536位(组3)的D-H组。

MD5,摘要算法,在认证数据包数据时使用的算法。IKE、AH、ESP都使用MD5进行认证。

SHA-1,另一种认证数据包数据的算法。IKE、AH、ESP都使用SHA-1进行认证。

RSA签名,用于认证的公钥加密系统。IKE使用D-H交换确定双方执行加密算法所需要的密钥。D-H交换可以使用RSA进行认证。

CA,为每台设备提供一个数据证书,双方通信时可通过交换数据证书进行身份认证。数字证书要从CA上申请。PIX使用RSA签名对CA上的交换过程进行验证。

NAT-T,在NAT设备间建立透明的IPSec通道,它自动探测NAT设备,在需要的时候把IPSec数据包进行封装。

SA(安全联盟),SA是IPSec的基础。类似于TCP和UDP中的端口号。每个IPSec设备在内存中都需包含SA参数的SA数据库。通过IPSec设备的地址、安全协议和安全参数索引唯一地确定出SA。

IKE

在创建IPSec安全通道的第一个阶段,要配置IKE来创建一个安全通道。配置IKE的参数有下面这五个:

加密算法(Encryption),指定IPSec对等体之间的加密算法,默认是56位的DES,可以指定168位的3DES。如果防火墙使用的是6.3或更高版本的软件,可以指定使用128位、192位或256位的AES。

哈希算法(Hash),指定用于保证数据完整性的哈希算法。可以选择MD5、SHA-1。

认证(Authentication),为IKE协调指定认证方式,可以选择数字证书或共享密钥。

D-H组,指定在IKE协商期间,用来保证共享密钥安全传递的D-H组。可选择组1(768位)、组2(1024位)或组5(1536位)。组5只在PIX版本在6.3或以上才有效。

SA有效期(lifetime),指定SA的有效期,单位为秒,默认为86400秒。SA有效期越短,安全性就越高。周期越长,协商的次数越少,性能越高。

通过对以上五种参数的组合,可以创建多个IKE。可为每个IKE策略指定优先级,通信双方进行协商时,优先级高的先被用来匹配,如果匹配成功就创建IKE SA,如果多种优先级匹配都不能成功则不能创建SA。

CA

当IPSec对等体较少时,才会在IKE认证时使用预先配置共享密钥(per-share)。当对等体较大时,一般使用CA来进行认证。在PIX中,使用ca命令配置对CA的支持。主要步骤有以下几个:

配置主机名:

fw(config)# hostname fw

 

配置域名:

fw(config)# domain-name test.com

 

创建一个RSA密钥对:

fw(config)# ca generate rsa key 1024

 

配置PIX与CA服务器间的通信参数,重试周期为1分钟,重试次数为100次:

fw(config)# ca configure ca.test.com ca 1 100

 

指定CA服务器地址:

fw(config)# ca identity ca.test.com 10.1.1.2

 

配置PIX通过获取CA的公钥和证书对CA进行认证:

fw(config)# ca authenticate ca.test.com

 

从CA服务器请求证书,12345是撤消证书时用到的质询密码,serial和ipaddress关健字表示把防火墙的序列号和IP地址包含在签名的证书中:

fw(config)# ca enroll ca.test.com 12345 serial ipaddress

 

到止为止配置完成,用show命令检查配置是否成功:

fw(config)# show ca certificate

 

配置正确,保存证书和配置:

fw(config)# ca save all

 

更新闪存。

fw(config)# write memory

 

LAN to LAN VPN

下面介绍使用IPSec实现两个局域网的互联,实验网络结构如下:

                                            IPSec通道

(内网1)192.168.1.0---PIX1(61.28.60.2)----------------PIX2(61.28.39.2)---192.168.2.0(内网2)

 

首先,设置允许IPSec数据包通过防火墙的ACL和管道。

fw(config)# sysopt connection permit-ipsec

 

接下来我们就可以开始创建IPSec通道了。创建IPSec通道分两个阶段,首先配置IKE策略,共有五个参数需要配置。下面介绍的是在PIX1上的配置过程。

启动IKE自动协商功能,并指明启动IKE的接口,IKE默认已启动。

fw(config)# isakmp enable outside

 

使用isakmp policy命令配置IKE的五个参数。

指定加密算法(default is des):

fw(config)# isakmp policy 20 encryption 3des

 

指定Hash算法(default is sha):

fw(config)# isakmp policy 20 hash md5

 

指定认证方法(default is rsa-sig):

fw(config)# isakmp policy 20 authentication pre-share

 

如果采用预先配置共享密钥的认证方法,则要使用isakmp key命令预先定义共享钥密。注意:对等体两端的共享钥密要一致才能协商成功。

fw(config)# isakmp key 12345 address 61.28.39.2 netmask 255.255.255.255

 

指定D-H组标识符(default is group 1):

fw(config)# isakmp policy 20 group 2

 

指明IKE SA的有效期,单位为秒(default is 86400):

fw(config)# isakmp policy 20 lifetime 3600

 

(可选)配置NAT-T,当我们的PIX1位于地址转换设备后面时,需要配置NAT穿透功能。该功能只在PIX防火墙6.3及以上版本才支持。

fw(config)# isakmp nat-traversal

 

policy后跟的数字20表示IKE策略的优先级。我们可创建几个IKE策略,优先级高的先进行匹配。使用show isakmp policy命令可以查看配置。注意,如果我们使用的是默认值,则在配置文件中不会显示出来,要使用show命令来查看配置信息。

fw# show isakmp policy

 

Protection suite of priority 20

        encryption algorithm:   Three key triple DES

        hash algorithm:         Secure Hash Standard

        authentication method:  Pre-Shared Key

        Diffie-Hellman group:   #2 (1024 bit)

        lifetime:               86400 seconds, no volume limit

Default protection suite

        encryption algorithm:   DES - Data Encryption Standard (56 bit keys).

        hash algorithm:         Secure Hash Standard

        authentication method:  Rivest-Shamir-Adleman Signature

        Diffie-Hellman group:   #1 (768 bit)

        lifetime:               86400 seconds, no volume limit

fw# show isakmp policy 20

isakmp enable outside

isakmp key ******** address 61.28.39.2 netmask 255.255.255.255

isakmp policy 20 authentication pre-share

isakmp policy 20 encryption 3des

isakmp policy 20 hash sha

isakmp policy 20 group 2

isakmp policy 20 lifetime 86400

 

配置完IKE策略后,我们就要进行第二阶段IPSec参数的配置了。

配置加密流量的ACL,确定哪些流量需要被IPSec保护。语法和普通ACL一样。

fw(config)# access-list inside_outbound_nat0_acl permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0

fw(config)# nat (inside) 0 access-list inside_outbound_nat0_acl

fw(config)# access-list outside_cryptomap_20 permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0 

 

前两条语句表示对于从192.168.1.0到192.168.2.0的出站流量不用进行地址转换。第三条ACL表示对192.168.1.0到192.168.2.0的出站流量进行IPSec加密。这条加密ACL通过outside_cryptomap_20与后面的加密图关联。

注意:在配置加密ACL时,尽量不要使用any关健字。在应用了加密图的PIX上修改加密ACL时,应先去掉加密图,修改完加密ACL后再重新应用加密图。否则可能会使PIX外部接口的连接自动断开。对等体两端的加密ACL应该是对称的,如果不对称,则不能构建SA。

配置IPSec变换集,变换集是IPSec数据流安全策略的集合。包含数据包认证算法(AH),净荷加密及可选认证机制(ESP)和IPSec模式(传输模式或隧道模式)。对等体两端的变换集要一致才能连接。

fw(config)# crypto ipsec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac

 

ESP-3DES-SHA是我们定义的变换集的名称,esp-3des和esp-sha-hmac是我们指定的两个变换集。esp-3des表示使用3DES密码(168位)的ESP变换。esp-sha-hmac表示带有HMAC-SHA认证的ESP变换,和esp-3des一起使用能为ESP数据包提供额外的完整性。选择变换集是一个比较复杂的问题,下面列举一些常用的变换集组合。

esp-des,提供高性能加密。

ah-md5-hmac,仅提供数据包认证,没有加密。

esp-3des和esp-md5-hmac,提供高强度加密和认证。

esp-aes-256和esp-sha-hmac,提供最强的加密和认证。SHA算法比MD5算法安全性更好,但速度慢。

在IPSec SA协商过程中,对等体搜索两个对等体上相的变换集。搜索从最高的安全级别开始搜索,当发现有相同的变换集后,就选中该变换集。变换集作为IPSec SA的一部份,用以保护加密ACL指定的数据流。

配置IPSec SA的有效期。它决定了IPSec SA在重新协商之前处于有效状态的时间。有效期仅用于通过IKE建立的SA,手工建立的SA不会过期。当SA过期时,在不中断数据流的情况下,会协商一个新的值。设置IPSec SA有效期的命令如下:

fw(config)# crypto ipsec security-association lifetime seconds 3600

 

上面这条命令把SA有效期设为1小时。seconds关健字指明SA过期之前的有效时间,单位是秒,默认值是28800秒(8小时)。还有一个关健字kilobytes,指明在SA过期之前,两个IPSec对等体间使用该SA可以传递的流量。默认是4608000KB(10MByte/s持续1小时)。注意:Cisco建议使用默认的有效期。

配置加密图,加密图把各项IPSec参数组合在一起,提供对数据流的加密。

在IPSec ISAKMP模式下创建加密图,创建加密图名和序号,序号越低优先级越高。

fw(config)# crypto map outside_map 20 ipsec-isakmp

 

把上面我们设置的加密ACL与该加密图关联,控制允许通过的加密数据流。

fw(config)# crypto map outside_map 20 match address outside_cryptomap_20

 

指定另一端的主机名或IP地址,可指定多个主机名或IP地址。当指定多个不机名或IP地址时就说明有多个对等体。

fw(config)# crypto map outside_map 20 set peer 61.28.39.2

 

指定加密图使用的变换集,该变换集由上面的crypto ipsec transform-set命令设置。

fw(config)# crypto map outside_map 20 set transform-set ESP-3DES-SHA

 

可以指定多个变换集,按顺序先列出的优先级高。最多可指定9个变换集。

(可选)指定为该加密图请求SA时,是否要请求PFS。PFS是最佳转发保密的意思,指定PFS时,每次协商SA都要进行一次D-H交换。PFS在生成密钥的过程中增强了安全性,但也增加了处理开销。

fw(config)# crypto map outside_map 20 set pfs group2

 

(可选)指定该加密图项SA的有效期。默认与IPSec SA有效期一样。

fw(config)# crypto map outside_map 20 set security-association lifetime seconds 7200

 

(可选)使用动态加密图。动态加密图是一个没有任何参数配置的基本加密图项。它是一个策略模板,缺少的参数以后根据对等体的要求动态配置(通过IPSec协商实现)。也就是说,即使PIX防火墙没有配置一个满足所有对等体要求的加密图项,对等体也能够和PIX防火墙交换IPSec数据流。命令格式如下:

fw(config)# crypto dynamic-map dynamic-map-name dynamic-seq-num

 

把加密图应用到接口。下面是应用到PIX防火墙的outside接口。

fw(config)# crypto map outside_map interface outside

 

使用show crypto map命令可以显示加密图配置信息。

fw# show crypto map

 

Crypto Map: "outside_map" interfaces: { outside }

 

Crypto Map "outside_map" 20 ipsec-isakmp

        Peer = 61.28.39.2

        access-list outside_cryptomap_20 turbo-configured; 1 elements

        access-list outside_cryptomap_20 line 1 permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0 (hitcnt=60282)

        Current peer: 61.28.39.2

        Security association lifetime: 4608000 kilobytes/28800 seconds

        PFS (Y/N): N

        Transform sets={ ESP-3DES-SHA, }

 

PIX默认是不允许通过IPSec VPN远程管理PIX防火墙的,也就是不允许通过VPN访问防火墙的内网接口(inside)。通过management-access inside命令可以打开该限制。

上面详细介绍了通过CLI创建IPSec VPN的过程,对于新手来说可能会复杂了一点。所以PIX提供了一个通过PDM来创建IPSec VPN的功能。通过PDM的VPN向导可以快速创建IPSec VPN,本文就不详细介绍了。

easy remote VPN

在PIx防火墙中还有一种叫Easy remote VPN的连接方式。该方式不属真正的site to site VPN解决方案。但当配置成网络扩展模式时,简易VPN可以提供类似site to site的连接功能。该功能在soho环境下实施效果非常好。在这种环境下,远程设备的IP地址可以动态的。简易远程VPN由VPN服务器和VPN远程设备组成。PIX可以担任两者中的任何一个角色。

客户端可以配置成两种模式,一种是客户端模式,一种是网络扩展模式。

客户端模式:在此模式下,服务器不能直接访问位于简易VPN远程设备后的设备。也就是说,简易VPN远程设备要对客户端经隧道发出的数据进行端口-地址转换。这种方式下,要求给远端设备分配一个单独的私有IP地址。客户端模式下,简易VPN远程设备的数据触发VPN连接,因此资源是按需分配的。

网络扩展模式:在此模式下,服务器可直接访问位于简易VPN远程设备后面的客户端。此时,客户端的IP地址不会被翻译,所以在网络扩展模式下,要给客户端分配适当数量的IP地址。网络扩展模式下,即使没有数据流发送的情况下,也会保持VPN连接。该方式和标准IPSec的site to site VPN连接的功能相似。

命令vpnclient配置客户端,示例:

fw(config)# vpnclient mode client-mode

fw(config)# vpnclient vpngroup server-name password 123456     #指定服务器上的vpngroup组名

fw(config)# vpnclient username username password 123456        #指定用户名和密码

fw(config)# vpnclient server 192.168.1.2                       #指定服务器IP地址,可多个

fw(config)# vpnclient enable

 

vpngroup命令配置服务器,示例:

fw(config)# access-list nonat permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0

fw(config)# access-list easy_acl permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0

fw(config)# nat(inside) 0 access-list nonat

fw(config)# ip local pool easypool 192.168.2.2-192.168.2.20

 

fw(config)# crypto ipsec transform-set ESP-3DES-SHA esp-3des esp-sha-hmac

fw(config)# crypto dynamic-map test 20 set transform-set ESP-3DES-SHA

fw(config)# crypto map easy 50 ipsec-isakmp dynamic test

fw(config)# crypto map easy client configuration address initiate

fw(config)# crypto map easy interface outside

 

fw(config)# isakmp enable outside

fw(config)# isakmp identity vpnserver

fw(config)# isakmp nat-traversal 60

fw(config)# isakmp policy 20 authentication pre-share

fw(config)# isakmp policy 20 encryption 3des

fw(config)# isakmp policy 20 hash sha

fw(config)# isakmp policy 20 group 2

fw(config)# isakmp policy 20 lifetime 86400

 

fw(config)# vpngroup server-name address-pool easypool

fw(config)# vpngroup server-name dns-server 192.168.2.30

fw(config)# vpngroup server-name wins-server 192.168.2.31

fw(config)# vpngroup server-name default-domain test.com

fw(config)# vpngroup server-name split-tunnel easy_acl

fw(config)# vpngroup server-name idle-time 1200

fw(config)# vpngroup server-name password 123456

 

简易VPN服务器配置除了利用vpngroup命令外,还需要合适的IKE、IPSec以及动态加密图。192.168.1.0/24到192.168.2.0/24网络间的数据流是加密的,而且不会进行NAT转换。远端设备会把到其它网络的数据流直接路由到Internet上。远端设备的配置是在服务器上配置的,一旦连接成功,则服务器会把配置参数推送到客户端。

远程访问VPN

远程访问VPN提供一个接入点,方便远程用户通过拔号或宽带通过公网安全地登录公司网络。主要有两种连接方式,分别是IPSec和PPTP。

客户端可通过IPSec与PIX建立VPN连接。IPSec远程访问VPN的配置使用vpngroup命令。步骤如下:

配置ACL来选择通过VPN通道的数据流。源是内部网络,目的是分配置给远程用户的IP地址池。

fw(config)# access-list 2 permit ip 192.168.1.0 255.255.255.0 192.168.2.0 255.255.255.0

 

设置VPN通道的数据流不经NAT转换。

fw(config)# nat (inside) 0 access-list 2

 

设置动态分配组远程客户端的IP地址池。

fw(config)# ip local pool vpnpool 192.168.2.2-192.168.2.20

 

配置XAUTH。

配置PIX防火墙允许在IPSec隧道中传递任何数据。

fw(config)# sysopt connection permit-ipsec

 

创建用于VPN客户端的变换集。

fw(config)# crypto ipsec transform-set MYDES esp-des esp-md5-hmac

 

创建动态加密图,至少要设置一个变换集。为增强安全性,也可再建立ACL。

fw(config)# crypto dynamic-map MYMAP 10 set transform-set MYDES

 

创建加密图,并把动态加密图分配给它。

fw(config)# crypto map VPNPEER 20 ipsec-isakmp dynamic MYMAP

 

配置XAUTH,指向验证服务器。

把加密图应用到PIX防火墙的接口上。

fw(config)# crypto map VPNPEER interface outside

 

在外部接口上启动ISAKMP,定义接口的IP地址为ISAKMP的标识。

fw(config)# isakmp enable outsie

fw(config)# isakmp identity address

 

配置ISAKMP策略

fw(config)# isakmp policy 10 authentication pre-share

fw(config)# isakmp policy 10 encryption des

fw(config)# isakmp policy 10 hash md5

fw(config)# isakmp policy 10 group 2

fw(config)# isakmp policy 10 lifetime 86400

 

配置VPN组,以便把配置参数推送到VPN客户端。这里的VPN组名必须和VPN客户端中使用的组名一致。另外,VPN组的密码(实际上是预先共享密钥)也必须和VPN客户端中使用的密码一致。还可配置VPN组把DNS和WINS信息推送到客户端。

fw(config)# vpngroup 555 address-pool vpnpool

fw(config)# vpngroup 555 idle-time 1200

fw(config)# vpngroup 555 password 123456

 

PIX也也支持PPTP客户端VPN连接。远程用户可以通过PPTP拔号与PIX建立VPN连接。PPTP虽然没有IPSec安全,但Windows操作系统中默认已安装有PPTP客户端,所以PPTP也是一种常用的远程VPN连接手段。使用vpdn命令配置PPTP。

fw(config)# sysopt connection permit-pptp

fw(config)# ip local pool vpn 192.168.2.2-192.168.2.20

fw(config)# vpdn group PPTP-VPDN-GROUP accept dialin pptp

fw(config)# vpdn group PPTP-VPDN-GROUP ppp authentication pap

fw(config)# vpdn group PPTP-VPDN-GROUP ppp authentication chap

fw(config)# vpdn group PPTP-VPDN-GROUP ppp authentication mschap

fw(config)# vpdn group PPTP-VPDN-GROUP ppp encryption mppe 128

fw(config)# vpdn group PPTP-VPDN-GROUP client configuration address local vpn

fw(config)# vpdn group PPTP-VPDN-GROUP client configuration dns 192.168.1.2 192.168.2.6

fw(config)# vpdn group PPTP-VPDN-GROUP client configuration wins 192.168.1.2

fw(config)# vpdn group PPTP-VPDN-GROUP pptp echo 300

fw(config)# vpdn group PPTP-VPDN-GROUP client authentication local

fw(config)# vpdn username jimsyang password *********

fw(config)# vpdn enable outside

 

使用debug vpdn event和debug vpdn error可以跟踪pptp连接状态。

远程连接PIX

当管理的防火墙设备比较多时,使用telnet或ssh进行远程登录是最我们常用的方法。PIX要求所有到外部接口的telnet流量都经过IPSec的保护。要启动外部接口的telnet会话,要在防火墙的外部接口上把防火墙产生的IP数据流封装在IPSec中。新版的PIX(6.3以上)允许我们通过VPN隧道访问PIX防火墙的内部接口,使用management-access命令配置。配置telnet登录系统上面已介绍过了,这里就不再介绍。我们主要介绍如何配置ssh远程登录PIX。

SSH比telnet安全性高,具有底层加密和应用安全性。PIX使用SSH v1。在PIX只能配置成SSH服务器,本身不能发起SSH连接。最多允许5个SSH客户端访问控制台。配置方法如下:

fw(config)# ca zeroize rsa

fw(config)# ca save all

fw(config)# domain-name test.com

fw(config)# ca generate rsa key 1024

For <key_modulus_size> >= 1024, key generation could

  take up to several minutes. Please wait.

Keypair generation process begin.

.Success.

fw(config)# ca save all

 

设置完成后,在PC上使用SSH客户端程序就可以安全登录PIX防火墙了。

命令授权

命令授权是PIX的一种细化管理方式,可把命令分配给不同的本地用户或特权级别。有三种类型的命令授权。分别是:

使用密码进行特权级别进行命令授权。共有16个特权级别:0级到15级,15级是最高的特权级别。

fw(config)# enable password 12345 level 9                   #定义特权级别9

fw(config)# privilege show level 1 command access-list      #定义特权级别1只能show access-list

fw(config)# privilege configure level 9 command access-list #定义特权级别9可以配置access-list

fw(config)# aaa authorization command LOCAL                 #启用命令授权功能

 

使用本地用户数据库进行命令授权。

fw(config)# privilege configure level 10 command access-list  #定义特权级别10可以配置access-list

fw(config)# username jims password 12345 privilege 10         #定义jims用户可登录特权级别10

fw(config)# aaa authorization command LOCAL                   #启用命令授权功能

fw(config)# aaa authentication enable console LOCAL           #启用本地用户数据库验证功能

 

使用CSACS进行命令授权。

使用show privilege all命令可以显示所有命令授权的配置。

fw(config)# show privilege all

privilege show level 15 command aaa

privilege clear level 15 command aaa

privilege configure level 15 command aaa

privilege show level 15 command aaa-server

privilege clear level 15 command aaa-server

privilege configure level 15 command aaa-server

privilege show level 15 command access-group

privilege clear level 15 command access-group

privilege configure level 15 command access-group

...

 

使用show curpriv命令可以显示当前登录用户。

fw(config)# show curpriv

Username : enable_15

Current privilege level : 15

Current Mode/s : P_PRIV P_CONF