其它文章
提高机房设施的扩展性(三)
提高机房设施的扩展性(二)
Linux下的网络监听技术
组播测试工具的使用
网络使用的学习总结
Ping命令的使用还有这么多要注意的
提高机房设施的扩展性(一)
关于网络拥挤问题及对应处理办法
ADSL错误代码
采用MPLS基准定义测试网络处理器性能
Cisco技术 / 网络知识 / 网络管理 / 关于IP子网的一点基础知识

关于IP子网的一点基础知识

作者:     http://cisco.ccxx.net

If you work with networks, odds are pretty good that you're familiar with Cisco IP subnetting. But that doesn't mean you know all there is to know. It never hurts to refresh your subnetting skills—particularly if you're planning on taking a Cisco exam soon.

IP subnetting isn't some obscure, esoteric topic that only the network administration "gurus" can understand. In fact, you should be able to get a firm grasp on subnetting in about an hour.

However, just like almost anything else, you won't be able to understand subnetting unless you use it—and practice. Learning subnetting takes some repetition. And once you do learn it, you'll quickly forget it if you don't practice it periodically.

What is IP subnetting?
Subnetting means breaking a large network into smaller networks. You can accomplish this by changing the subnet mask.

When it comes to subnetting, how are routers different from computers?
Every computer needs three components in order to communicate both on its network and outside its network (e.g., to the Internet).

An IP address
A subnet mask: Combined with the IP address, the subnet mask tells the computer which IP addresses are on its local network.
A default gateway: A computer uses the default gateway to transmit data not on its local network. If a computer only needs to communicate on its own LAN, a default gateway isn't necessary.
Routers function similarly to computers; every interface has an IP address and a subnet mask. While routers can also have default gateways, they don't always have them.

In addition, every interface on a router must be on a different network. In fact, the router won't let you place two interfaces on the same network.

Where did subnetting come from?
Published in 1990, RFC 1166 specified five different classes of IP addresses:

Class A: Any IP address that begins with 1 to 127 has a subnet mask of 255.0.0.0.
Class B: Any IP address that begins with 128 to 191 has a subnet mask of 255.255.0.0.
Class C: Any IP address that begins with 192 to 223 has a subnet mask of 255.255.255.0.
Class D is for multicast traffic only.
Class E is experimental.
However, these fixed classes and subnet masks didn't fit the growth requirements of the Internet, and the industry abandoned them in favor of Classless Inter-Domain Routing (CIDR) in 1995 (RFC 1817). CIDR uses variable length subnet masks (VLSM) (RFC 1518 and RFC 1519). That means the classes above, with their fixed length subnet masks (FLSM), were no longer applicable.

VLSM means that the subnet mask can dynamically change based on how many networks or hosts you need. So, while it's important to know the default (fixed length) subnet masks for testing purposes, a subnet mask for an IP that begins with 192 may or may not be 255.255.255.0.

What do 1s and 0s have to do with it?
 

Subnetting is taking the original subnet mask and adding bits to it to create more networks. In other words, if you convert a subnet mask into binary form and add more 1s, you are subnetting that network. The more 1s that are present in the subnet mask means the more networks with a fewer number of hosts. The more 0s that are present in the subnet mask means the fewer networks and the more hosts you have.

In other words, the subnet mask tells routers and computers which portion of the IP address is for the network and which is for the host. If you slide the line between network and host to the left, you create fewer networks and more hosts. If you slide the line to the right, you create more networks and fewer hosts.

How can I write out subnet masks?
You can write out subnet masks in two different ways: dotted decimal notation and slash notation. The dotted decimal notation method is more than likely what you're familiar with. This involves writing the numbers and separating them by periods (i.e., dots). For example, you would write a Class C default subnet mask as 255.255.255.0.

To use the slash notation method, you convert the subnet mask into binary form, writing the number of 1s in the subnet mask instead. For example, in binary form, 255.255.255.0 would be 11111111 11111111 11111111 00000000.

In slash notation, this "translates" to /24—in other words, the number of 1s. So, you would write your IP network with its subnet mask like this: 192.168.1.0/24. While the slash notation method may seem more complicated, keep in mind that it makes diagramming and note taking easier.

#p#

网络监听的原理

Ethernet协议的工作方式是将要发送的数据包发往连接在一起的所有主机。在包头中包括有应该接收数据包的主机的正确地址,因为只有与数据包中目标地址一致的那台主机才能接收到信息包,但是当主机工作在监听模式下的话不管数据包中的目标物理地址是什么,主机都将可以接收到。

许多局域网内有十几台甚至上百台主机是通过一个电缆、一个集线器连接在一起的,在协议的高层或者用户来看,当同一网络中的两台主机通信的时候,源主机将写有目的的主机地址的数据包直接发向目的主机,或者当网络中的一台主机同外界的主机通信时,源主机将写有目的的主机IP地址的数据包发向网关。

但这种数据包并不能在协议栈的高层直接发送出去,要发送的数据包必须从TCP/IP协议的IP层交给网络接口,也就是所说的数据链路层。网络接口不会识别IP地址的。在网络接口由IP层来的带有IP地址的数据包又增加了一部分以太祯的祯头的信息。

在祯头中,有两个域分别为只有网络接口才能识别的源主机和目的主机的物理地址这是一个48位的地址,这个48位的地址是与IP地址相对应的,换句话说就是一个IP地址也会对应一个物理地址。

对于作为网关的主机,由于它连接了多个网络,它也就同时具备有很多个IP地址,在每个网络中它都有一个。而发向网络外的祯中继携带的就是网关的物理地址。

Ethernet中填写了物理地址的祯从网络接口中,也就是从网卡中发送出去传送到物理的线路上。如果局域网是由一条粗网或细网连接成的,那么数字信号在电缆上传输信号就能够到达线路上的每一台主机。

再当使用集线器的时候,发送出去的信号到达集线器,由集线器再发向连接在集线器上的每一条线路。这样在物理线路上传输的数字信号也就能到达连接在集线器上的每个主机了。

当数字信号到达一台主机的网络接口时,正常状态下网络接口对读入数据祯进行检查,如果数据祯中携带的物理地址是自己的或者物理地址是广播地址,那么就会将数据祯交给IP层软件。对于每个到达网络接口的数据祯都要进行这个过程的。但是当主机工作在监听模式下的话,所有的数据祯都将被交给上层协议软件处理。

当连接在同一条电缆或集线器上的主机被逻辑地分为几个子网的时候,那么要是有一台主机处于监听模式,它还将可以接收到发向与自己不在同一个子网(使用了不同的掩码、IP地址和网关)的主机的数据包,在同一个物理信道上传输的所有信息都可以被接收到。

在UNIX系统上,当拥有超级权限的用户要想使自己所控制的主机进入监听模式,只需要向Interface(网络接口)发送I/O控制命令,就可以使主机设置成监听模式了。而在Windows9x的系统中则不论用户是否有权限都将可以通过直接运行监听工具就可以实现了。

在网络监听时,常常要保存大量的信息(也包含很多的垃圾信息),并将对收集的信息进行大量的整理,这样就会使正在监听的机器对其它用户的请求响应变的很慢。同时监听程序在运行的时候需要消耗大量的处理器时间,如果在这个时候就详细的分析包中的内容,许多包就会来不及接收而被漏走。

所以监听程序很多时候就会将监听得到的包存放在文件中等待以后分析。分析监听到的数据包是很头疼的事情。因为网络中的数据包都非常之复杂。两台主机之间连续发送和接收数据包,在监听到的结果中必然会加一些别的主机交互的数据包。

监听程序将同一TCP会话的包整理到一起就相当不容易了,如果你还期望将用户详细信息整理出来就需要根据协议对包进行大量的分析。Internet上那么多的协议,运行进起的话这个监听程序将会十分的大哦。

现在网络中所使用的协议都是较早前设计的,许多协议的实现都是基于一种非常友好的,通信的双方充分信任的基础。在通常的网络环境之下,用户的信息包括口令都是以明文的方式在网上传输的,因此进行网络监听从而获得用户信息并不是一件难点事情,只要掌握有初步的TCP/IP协议知识就可以轻松的监听到你想要的信息的。

前些时间美籍华人China-babble曾提出将望路监听从局域网延伸到广域网中,但这个想法很快就被否定了。如果真是这样的话我想网络必将天下大乱了。而事实上现在在广域网里也可以监听和截获到一些用户信息。只是还不够明显而已。在整个Internet中就更显得微不足道了。

#p#以太网上数据帧的监听剖析

以太网上的数据帧主要涉及Tcp/ip协议,针对以下几个协议的分析:IP,ARP,RARP,IPX,其中重点在于ip和arp协议,这两个协议是多数网络协议的基础,因此把他们研究彻底,就对大多数的协议的原理和特性比较清楚了。由于各种协议的数据帧个不相同,所以涉及很多的数据帧头格式分析,接下来将一一描述。

在linux下监听网络,应先设置网卡状态,使其处于杂混模式以便监听网络上的所有数据帧。然后选择用Linux socket来截取数据帧,通过设置socket()函数参数值,可以使socket截取未处理的网络数据帧,关键是函数的参数设置,下面就是有关的程序部分:

if ( ( fd=socket (AF_INET, 
SOCK_PACKET,htons(0x0003)))<0)
  {perror (“can get SOCK_PACKET socket
  ”);
  exit(0);
  }


AF_INET=2 表示 internet ip protocol

SOCK_PACKET=10 表示 截取数据帧的层次在物理层,既不作处理。

Htons(0x0003)表示 截取的数据帧的类型为不确定,既接受所有的包。

总的设定就是网卡上截取所有的数据帧。这样就可以截取底层数据帧,因为返回的将是一个指向数据的指针,为了分析方便,我设置了一个基本的数据帧头结构。

Struct etherpacket 
  {struct ethhdr eth;
  struct iphdr ip;
  struct tcphdr tcp;
  char buff[8192];
  } ep;


将返回的指针赋值给指向数据帧头结构的指针,然后对其进行分析。以下是有关协议的报

头:ethhdr 这是以太网数据帧的mac报头:



相应的数据结构如下:

struct ethhdr
  {
  unsigned char h_dest[ETH_ALEN];
  unsigned char h_source[ETH_ALEN];
  unsigned short h_proto;
  }


其中h_dest[6]是48位的目标地址的网卡物理地址,h_source [6] 是48位的源地址的物理网卡地址。H_proto是16位的以太网协议,其中主要有0x0800 ip,0x8035.X25,0x8137 ipx,0x8863-0x8864 pppoe(这是Linux的 ppp),0x0600 ether _loop_back ,0x0200-0x0201 pup等。Iphdr 这是ip协议的报头:

由此可以定义其结构如下:

struct iphdr
  {
  #elif defined 
(_LITTLE_ENDIAN_BITFIELD)
  _u8 version :4,
  #elif defined 
(_BIG_ENDIAN_BITFIELD)
  _u8 version:4,
  ihl:4;
  #else 
  #error "Please fix"
  #endif
  _u8 tos;
  _16 tot_len;
  _u16 id;
  _u16 frag_off;
  _u8 ttl;
  _u8 protocol;
  _u16 check;
  _u32 saddr;
  _u32 daddr;
  };


这是Linux的ip协议报头,针对版本的不同它可以有不同的定义,我们国内一般用BIG的定义,其中version 是ip的版本,protocol是ip的协议分类主要有0x06 tcp.0x11 udp,0x01 icmp,0x02 igmp等,saddr是32位的源ip地址,daddr是32位的目标ip地址。

相应的数据结构:

struct arphdr
  {
  unsigned short int ar_hrd;
  unsigned short int ar_pro;
  unsigned char ar_hln;
  unsigned char ar_pln;
  unsigned short int ar_op;
  #if 0
  unsigned char _ar_sha[ETH_ALEN];
  unsigned char _ar_sip[4];
  unsigned char _ar_tha[ETH_ALEN];
  unsigned char _ar_tip[4];
  #end if
  };


这是linux的arp协议报头,其中ar_hrd是硬件地址的格式,ar_pro协议地址的格式,ar_hln是硬件地址的长度,ar_pln时协议地址的长度,ar_op是arp协议的分类0x001是arp echo 0x0002 是 arp reply.接下来的分别是源地址的物理地址,源ip地址,目标地址的物理地址,目标ip地址。Tcphdr ip协议的tcp协议报头,以下是相应数据结构:

struct tcphdr
  {
  u_int16_t source;
  u_int16_t dest;
  u_int32_t seq;
  u_int32_t ack_seq;
  # if _BYTE_ORDER == _LITTLE _ENDIAN
  u_int16_t resl:4;
  u_int16_t doff:4;
  u_int16_t fin:1;
  u_int16_t syn:1;
  u_int16_t rst:1;
  u_int16_t psh:1;
  u_int16_t ack:1;
  u_int16_t urg:1;
  u_int16_t res2:2;
  #elif _BYTE _ORDER == _BIG _ENDIAN
  u_int16_t doff:4;
  u_int16_t res1:4;
  u_int16_t res2:2;
  u_int16_t urg:1;
  u_int16_t ack:1;
  u_int16_t psh:1;
  u_int16_t rst:1;
  u_int16_t syn:1;
  u_int16_t fin:1;
  #else
  #error "Adjust your defines"
  #endif
  u_int16_t window;
  u_int16_t check;
  u_int16_t urg_ptr;
  };


这是Linux 下tcp协议的一部分与ip协议相同取BIG,其中source是源端口,dest 是目的端口,seq是s序,ack_seq是a序号,其余的是tcp的连接标志其中包括6个标志:syn表示连接请求,urg 表示紧急信息,fin表示连接结束,ack表示连接应答,psh表示推栈标志,rst表示中断连接。window是表示接受数据窗口大小,check是校验码,urg ptr是紧急指针。

Udphdr 这是udp协议报头

struct udphdr
{
  u_int16_t source;
  u_int16_t dest;
  u_int16_t len;
  u_int16_t check;
  }


这是Linux下ip协议中udp协议的一部分,结构很明显source源端口,dest目的端口,len udp 长度,check 是校验码。Icmphdr 这是ip协议的icmp协议的报头

struct icmphdr
  {
  u_int8_t type;
  u_int8_t code;
  u_int16_t checksum;
  union
  {
  struct 
  {
  u_int16_t id;
  u_int16_t sequence;
  } echo;
  u_int32_t gateway;
  struct
  {
  u_int16_t_unused;
  u_int16_t mtu;
  } frag;
  } un;
  };


这是linux下的ip协议中的icmp的协议,这里面主要的是前两项参数,其中type是icmp协议的类型,而code 则是对type类型的再分析。如:type 0x03 是表示unsearchable,这时code的不同表示了不同的unsearchable :0x00表示网络不可寻,0x01表示主机不可寻,0x02表示协议不可寻,0x03表示端口不可寻,0x05表示源路由失败,0x06网络不可知,0x07主机不可知。Igmphdr这是ip协议的igmp协议报头

struct igmphdr

{ 

_u8 type;

_u8 code;

_u16 csum;

_u32 group;

};


这是Linux下的ip协议中的igmp协议,协议中主要是前面两个属性,Type表示igmp 协议的信息类型,code表示routing code。然后,将截取的数据帧的地址赋值给定义的结构。由此可根据不同的结构分析数据,得到我们需要的信息。

#p#

检测网络监听的方法

网络监听在上述中已经说明了。它是为了系统管理员管理网络,监视网络状态和数据流动而设计的。但是由于它有着截获网络数据的功能所以也是黑客所惯用的伎俩之一。

检测规则的定义

监听是为了得到我们需要的网络信息,然而网络中的信息流量可能很大,例如一个拥有百台计算机的网络其一般监听日志是每分钟以MB计算的,从如此大量的数据中找出我们需要的信息是很不容易的,于是我再程序中添加了检测规则的定义,如此用户就可以自己定义检测的规则从大量的数据中找到需要的数据并对其进行操作。

关于定义的包括了我们感兴趣的大部分数据包属性:包括了源地址,目的地址,源ip地址,目的ip地址,源端口,目的端口,协议类型,连接标志,数据包数量,时间限制等。

如我们可定义将源物理地址为172.16.11.148且源端口为25,协议为tcp连接标志为syn的数据存入相关日志文件中,并且在检测中采取链式规则,就是我们可以定义很多的规则而数据将像过流水线一样通过各个规则的检测处理,该功能和现在大多数的入侵检测系统的规则定义相似,有了这种功能使网络监听更具针对性,可以满足不同用户的需要。

一般检测网络监听的方法通过以下来进行:

网络监听实际上是很难被发现的。因为运行监听程序的主机在进监听的过程中只是被动的接收在以太网中传输的信息,它不会跟其它的主机交换信息的,也不能修改在网络中传输的信息包。这就说明了网络监听的检测是比较麻烦的事情。

一般情况下可以通过ps -ef或者ps -aux来检测。但大多实施监听程序的人都会通过修改ps的命令来防止被ps -ef的。

上边提到过。当运行监听程序的时候主机响应一般会受到影响变的会慢,所以也就有人提出来通过响应的速率来判断是否受到监听。如果说当你怀疑网内某太机器正在实施监听程序的话,可以用正确的IP地址和错误的物理地址去ping它,这样正在运行的监听程序就会做出响应的。

这是因为正常的机器一般不接收错误的物理地址的ping信息的。但正在进监听的机器就可以接收,要是它的IP stack不再次反向检查的话就会响应的。不过这种方法对很多系统是没效果的,因为它依赖于系统的IP stack。

另一种就是向网上发大量不存在的物理地址的包,而监听程序往往就会将这些包进行处理,这样就会导致机器性能下降,你可以用icmp echo delay来判断和比较它。

还可以通过搜索网内所有主机上运行的程序,但这样做其的难度可想而知,因为这样不但是大的工作量,而且还不能完全同时检查所有主机上的进程。可是如果管理员这样做也会有很大的必要性,那就是可以确定是否有一个进程是从管理员机器上启动的。

在Unix中可以通过ps –aun或ps –augx命令产生一个包括所有进程的清单:进程的属主和这些进程占用的处理器时间和内存等。

这些以标准表的形式输出在STDOUT上。如果某一个进程正在运行,那么它将会列在这张清单之中。但很多黑客在运行监听程序的时候会毫不客气的把ps或其它运行中的程序修改成Trojan Horse程序,因为他完全可以做到这一点的。

如果真是这样那么上述办法就不会有结果的。但这样做在一定程度上还是有所作为的。在Unix和Windows NT上很容易就能得到当前进程的清单了。

还有一种方式,这种方式要靠足够的运气。因为往往黑客所用的监听程序大都是免费在网上得到的,他并非专业监听。所以做为管理员用来搜索监听程序也可以检测。使用Unix可以写这么一个搜索的小工具了。

有个叫Ifstatus的运行在Unix下的工具,它可以识别出网络接口是否正处于调试状态下或者是在进听装下。要是网络接口运行这样的模式之下,那么很有可能正在受到监听程序的攻击。Ifstatus一般情况下不会产生任何输出的,当它检测到网络的接口处于监听模式下的时候才回输出。

管理员可以将系统的cron参数设置成定期运行Ifstatus,如果有好的cron进程的话可以将它产生的输出用mail发送给正在执行cron任务的人,要实现可以在crontab目录下加****/usr/local/etc/ifstatus一行参数。这样不行的话还可以用一个脚本程序在crontab下00****/usr/local/etc/run-ifstatus。

一般情况下监听只是对用户口令信息比较敏感一点(没有无聊的黑客去监听两台机器间的聊天信息的那是个浪费时间的事情)。所以对用户信息和口令信息进行加密是完全有必要的。防止以明文传输而被监听到。

现代网络中,SSH通信协议一直都被沿用,SSH所使用的端口是22,它排除了在不安全信道上通信的信息,被监听的可能性使用到了RAS算法,在授权过程结束后,所有的传输都用IDEA技术加密。但SSH并不就是完全安全的。因此,总的说来,监听的检测属于安全防范的内容,需要非常综合的知识和技能进行分析设计。

#p#

安全方面的考虑

DOS 攻击的检测与预防

我国还在网络的发展阶段,自然有网络“hacker”、“crack”出现,也正是由于是发展阶段,这些人的攻击手段一般靠一些工具,这些工具一般分为破解性和破坏性,破解性耗时长成功率低,而破坏性的工具较符合这些人的性格故受欢迎,而DOS攻击工具攻击方便,成功率高,一般是“hacker”的首选。

所谓的DOS攻击是一种拒绝服务攻击,它并不是入侵系统,而只是让系统崩溃,或处于拒绝连接状态,DOS攻击的方法主要是发送大量假的syn包使服务器忙于应答和等待假syn的请求无法对正常的连接作出反应,或发送大量的广播包利用某系系统对一些广播包会产生回应得bug来形成广播风暴阻塞网络,消耗服务器资源达到进攻目的。

现在还出现了分布式的DOS攻击工具,它通过控制多台分机同时发送到攻击包,威力巨大,同时,DOS攻击还可能是另一种供给的前奏,这就是IP欺骗攻击(该攻击可以获得ROOT权限,危险系数最高),如果出现了DOS攻击但又不阻塞网络,且攻击目标不起眼,那么这很可能就是一个IP欺或TCP截取的开始,所以DOS攻击是一种破坏力大,效果明显,且暗藏杀机的攻击。

然而DOS攻击是较容易检测的,其攻击现象明显,攻击特征突出,通过对网络的监听不难发现,如上所述我们已经可以从网络上监听数据帧并能分析他们,于是编写一个程序使用户可以通过定义自己的规范与数据帧比较然后对符合规范的数据作出相应的反应,对于DOS攻击我们可以通过定义一个带有时间限制的规范来检测,如我们可以定义在1秒如出现100个以上的syn数据包为DOS攻击,然后定义处理方法,如MAIL,LOG,SHUTDOWN或与_blank">防火墙联动等。

IP冒用的检测与攻击

网络的飞速发展导致了原有的32位地址协议不能满足飞速扩充的庞大计算机群。利益不能均分,导致了IP冒用的出现,使网络秩序产生混乱。

在这里先解释一下ARP协议的应用。ARP协议是将IP地址转换成MAC地址的协议,是局域网数据交流的基础,一台计算机是如何将自己和某一IP地址绑定?首先,一台计算机启动,他将向局域网发送其IP的ARP询问包,这是为了防止IP冲突,如无人回答,其将发送其IP的ARP应答包,向局域网申明绑定其物理地址和ip地址,如果没有在服务器上使用固定的ip/mac表那么没有ip使用权的计算机也可以乘机绑定ip,这就是ip冒用。

对网络监测的利用可以达到检测ip冒用的出现并对之进行攻击的目的。具体方法是将检测到的arp数据帧中的ip 和 eth 地址取出来与我们建立的对应表比较,如发现ip冒用的情况,则向其发送反向arp包使其网络中断实现攻击,该做法适用于那些无法控制路由器配置,又不想修改网关配置的网络管理。在程序中我采用的是被动式的arp查询,也就是不发arp查询包,可以说出了发攻击包外对网络没有增加另外的负担。

监听技术在网络测试中的应用

网络监听不只是网络管理的基础,还能应用在网络测试中,现在的网络测试工具大都建立在监听基础上,对监听到的数据帧的种类和数量进行统计,从而实现网络的测试。同理可以使用本监听程序对数据分类统计达到测试网络的作用。

例如目前较多用到的网络测试:

1)检测广播包在网络中的负载,即检测广播包在所有包中的比例,只要在程序中比较数据帧中目的地址的物理地址为ff:ff:ff:ff:ff:ff与总帧数的比例就可得知。从而给出了配置VLAN等的数据基础。

2)检测网络中因冲突产生的坏数据帧的数量,因为共享式以太网采取的CSMA/CD协议,每台计算机发送信号时不能保证没有有其它计算机也在发送信号,而在发现冲突后就停止发送,故会产生一些损坏的数据帧,检测损坏的数据帧在网络数据中的比例是体现网络性能的重要参数,这种检测对于监听程序而言和第一种检测大体相同,只是把统计的数据包改成冲突的数据帧,也就是数据帧大小小于64个字节的数据帧的数量,同理类是网络测试都可以通过监听程序实现,由此我们可以分析出更合适具体情况的布线方法等等。

垃圾邮件过滤的初步实现

垃圾邮件就是过滤到那些我们不想接受的,内容不安全的电子邮件,由于电子邮件的服务特点,使得电子邮件成为当代社会信息传递的便捷途径之一,但同时也有一些人利用这一点发送不安全的危害社会的宣传,于是垃圾邮件过滤就成为了必要,由于当前邮件服务器管理的松懈,随便一个人有台计算机有个IP就可以组建服务器,使得邮件的来源相当复杂,所以要完全过滤不容易,但我们还是可以通过网络监听来实现邮件的初步过滤。

第一种方法:就是屏蔽某些ip的swtp连接,通过监听程序可以实现这点,如设定规则当源IP地址为****且TCP连接端口为25时就屏蔽连接。

第二种方法:由于很多电子邮件服务器允许邮件转发(这也是必要的,我们不可能能连接到每一台机),所以通过ip地址不一定可以屏蔽这个用户的邮件他可以通过其他的服务器转发,因此在第一种方法无效的情况下我们可以通过账号来屏蔽服务,由于电子邮件服务器的统一命令要求需要用户在发邮件时申明用户例如:mail from XXX@XXX ,所以我们可以通过监听程序来发现我们不喜欢的用户并屏蔽,这要求我们对数据帧不仅分析报头,还要分析数据,将其与我们设定的字符串比较,如相同,则找到了屏蔽连接。

#p#

  第2章 网络文档

  一、网络基线

  解决网络问题的最简单途径是把当前配置和以前的配置相比较。
  基线文档由不同的网络和系统文档组成,它包括:
  ? 网络配置表
  ? 网络拓扑图
  ? ES网络配置表
  ? ES网络拓扑图

  创建网络的注意事项:
  1) 确定文档覆盖的范围;
  2) 保持一致:收集网络中所有设备的相同信息;
  3) 明确目标:了解文档的用途;
  4) 文档易于使用和访问;
  5) 及时维护更新文档。

  二、网络配置表

  网络配置表的通常目标是提供网络中使用的硬件和软件组成的列表,其组成有:
  分级 项目
  杂项信息 设备名、设备型号、CPU类型、FLASH、DRAM、接口描述、用户名口令
  第1层 介质类型、速率、双工模式、接口号、连接插座或端口
  第2层 MAC地址、STP状态、STP根桥、速端口信息、VLAN、Etherchannel配置、封装、中继状态、接口类型、端口安全、VTP状态、VTP模式
  第3层 IP地址、IPX地址、HSRP地址、子网掩码、路由协议、ACL、隧道信息、环路接口
  在多数情形下,存储这些信息的最佳方式是电子表格或数据库,电子表格用于较小的网络,数据库用于较大的网络。

  三、网络拓扑图

  网络拓扑图是图示网络的各组成部分之间如何在逻辑上和物理上相互连接。

  1、网络拓扑图的组成
  分级 项目
  杂项信息 设备名、设备型号、设置间连接、接口描述
  第1层 介质类型、接口号
  第2层 MAC地址、VLAN、封装、中继状态、接口类型、DLCI
  第3层 IP地址、子网掩码、路由协议

  对于大型的网络,可以制作多个网络拓扑图,每个网络拓扑图反映一个分离的部分。

  2、建立网络拓扑图

四、发现网络配置信息

  1、收集路由器和第3层交换机网络配置信息
  show version ;显示设备型号、Flash、DRAM、IOS版本
  show ip interface brief ;显示接口简要信息(类型、状态、协议状态、IP地址)
  show interface e0/0 ;显示某接口详细信息(MAC、IP、MASK、…)
  show ip protocols ;显示IP路由协议信息
  show ip interface e0/0 ;显示接口的IP协议信息(状态、IP地址、ACL、…)

  2、收集交换机配置信息
  交换机网络配置表包含的信息:设备名、型号、位置、Flash、DRAM、CATOS版本、管理地址、VTP域、VTP模式、端口号、端口速率、端口双工、VLAN、STP状态、速端口状态、中继状态、…
  show version ;显示IOS或CATOS版本、DRAM、Flash
  show vtp domain ;(CatOS)显示VTP域和VTP模式
  show vtp status ;(IOS)
  show interface ;(CatOS)显示管理接口信息
  show port ;(CatOS)显示每个端口的简要信息(号、VLAN、双工、…)
  show interface ;(IOS)
  show trunk ;(CatOS)显示中继信息(模式、封装、允许端口、剪裁、…)
  show interface trunk ;(IOS)
  show spantree 45 ;(CatOS)显示端口的STP模式、类型、状态、速端口、…)
  show spanning-tree 45 ;(IOS)

  3、发现相邻CISCO设备的信息
  CDP(Cisco Discovery Protocol)是CISCO的专用协议,用于识别直接相邻的CISCO设备信息,CDP工作在第2层。
  Show cdp neighbor ;显示相邻CISCO设备的简要信息(ID、相邻接口、平台、…)
  Show cdp neighbor detail;显示相邻CISCO设备的详细信息(包含第3层信息)

  五、创建网络文档的过程

  1、 LOGIN ;登录到设备进入特权模式。

  2、 接口发现 ;发现关于设备的所需信息

  3、 Document ;在网络配置表中记录发现的信息。

  4、 Diagram ;从网络配置表传输所需信息到网络拓扑图

  5、 设备发现 ;判断是否有相邻设备没有记录文档。

#p#

第3章 ES文档和故障处理

  一、ES网络配置表

  ES网络配置表是ES的硬件和软件组成的列表。ES网络配置常包括以下项目:
  分级 项目
  杂项信息 系统名、系统厂商/型号、CPU速率、RAM、存储器、系统功能
  第1、2层 介质类型、接口速率、VLAN、MAC、网络接头
  第3层 IP地址、缺省网关、子网掩码、WINS、DNS、
  第7层 操作系统(版本)、基于网络的应用程序、高带宽应用程序、低延时应用程序、特定考虑

  二、ES网络拓扑图

  ES网络拓扑图的典型项目有:系统名、网络连接、物理位置、系统目标、VLAN、IP地址、子网掩码、操作系统、网络应用程序
  大多数ES网络拓扑图都建立在网络拓扑图中,其中还可加入ES网络配置表数据的子集。

  三、收集ES网络配置信息

  通用命令:
  1) ping host/ip-address ;发送和接收ICMP响应,校验网络的连通性
  2) arp -a ;查看修改ES的MAC-IP映射表(同一子网)
  3) telnet host/ip-address ;登录远程ES或特定TCP端口

  Windows平台命令
  1) ipconfig /all ;查看修改ES的IP信息(适用所有Windows平台)
  2) winipcfg ;查看修改ES的IP信息(仅适用于Win9x平台)
  3) tracert host/ip-address ;校验到主机的连接并显示路径上的设备IP
  4) route print ;显示本设备IP路由表的内容
  5) netstat ;显示当前网络连接

  Unix、Linux和Mac OS系统命令
  1) ifconfig -a ;查看UNIX和MAC主机的IP信息
  2) traceroute host/ip ;
  3) route –n ;
  4) cat /etc/resolv.conf ;查看DNS服务器信息

  四、通用的故障处理过程

  1、通用的故障处理过程:
  l 收集症状:收集网络、用户、ES的症状
  1) 分析现存症状
  2) 判断所属
  3) 窄化范围
  4) 判定症状
  5) 记录症状

  l 分离问题
  1) Bottom-Up troubleshooting
  从物理层开始向上排查,直到应用层。常用于怀疑问题发生在物理层,或在处理复杂网络问题时使用。

  2) Top-Down troubleshooting
  从应用层开始向下排查故障,用于怀疑问题发生在软件部分。

  3) Divide-and-Conquer troubleshooting
  选择OSI模型的特定层(数据链路层、网络层、传输层)开始故障处理,确定问题是在该层、还是上层或下层。适于具有丰富的经验的人员使用。

常用traceroute命令检查下4层(从物理层到应用层)。

  l 纠正问题
  2、ES故障处理命令

  1) ping
  连续Ping: ping –t 192.168.0.1 ;Windows系统
  ping –s 192.168.0.1 ;Unix环境
  记录路由: ping –r 192.168.0.1 ;Windows
  ping –s –nRv 192.168.0.1 ;Unix

  2) Trace Route
  Tracert 10.0.0.1 ;Windows系统
  Tracerout 10.0.0.1 ;Unix

  Ping记录路由器的出接口,而traceroute通常记录进入的接口。

  3) Arp
  显示第2层和第3层地址的映射表: Arp –a ;Windows/Unix

  4) Route
  显示路由表: route print ;windows系统
  route –n ;Unix

  5) Netstat
  显示到ES的当前连接及端口: netstat –n ;Windowx & Unix

  6) Ipconfig&Ifconfig
  显示ES的IP配置: ipconfig /all ;windows
  ifconfig –a ;unix

  7) Nbtstat
  显示当前名称解析缓存: nbtstat –c ;
  清除当前名称解析缓存: nbtstat –r ;

#p#

第4章 协议属性

  一、OSI参考模型
  应用层
  表示层
  会话层
  传输层
  网络层
  数据链路层
  物理层

  二、全局协议分类
  1、面向连接的协议:
  windows size:在需要目标系统确认的传输的数据包数。
  队列数据传送:对进入和发送的PDU指定序号,在目的地再按序号重排数据;
  流控:确保发送的速率不超过目标接收的速率,通过为传输建立窗口尺寸实现;
  错误控制:确保接收到的数据连续并无错,如有丢失或损失的PDU,则不发送ACK包。
  面向连接的协议有:ATM、TCP、Novell SPX、Apple Talk ATP;

  2、非连接的协议
  不包括连接设置和终止,没有流控和错误控制。
  非连接的协议有:UDP、Apple Talk DDP、Novell IPX;

  三、第2层:数据链路层
  1、Ethernet/IEEE802.3
  2、Token Ring/IEEE802.5

  四、PPP

  五、SDLC

  六、Frame Relay

  七、ISDN

  八、第3、4层:IP路由协议
  1、IP
  2、ICMP
  3、TCP
  4、UDP

#p#

第5章 Cisco测试命令和TCP/IP连接故障处理

  一、故障处理命令
  1、show命令:
  1) 全局命令:
  show version ;显示系统硬件和软件版本、DRAM、Flash
  show startup-config ;显示写入NVRAM中的配置内容
  show running-config ;显示当前运行的配置内容
  show buffers ;详细输出buffer的名称和尺寸
  show stacks ;提供路由器进程和处理器利用率信息, 用stack decode
  show tech-support ;显示几个show命令的输出
  show access-lists ;查看访问列表配置
  show memory ;用于测试内存问题

  2) 接口相关命令
  show queueing [fair|priority|custom]
  show queue e0/1 ;查看接口上队列的设置和操作
  show interface e0/1 ;Cisco缺省的Ethernet封装方法是ARPA
  show ip interface e0/1 ;显示指定接口的TCP/IP配置信息

  3) 进程相关命令
  show processes cpu ;显示路由器CPU的使用率和当前的进程
  show processes memory ;显示路由器当前进程的内存使用情况

  4) TCP/IP协议相关命令
  Show ip access-list ;显示IP访问列表(1-199)
  Show ip arp ;显示路由器的ARP缓存(IP、MAC、封装类型、接口)
  Show ip protocols ;显示运行在路由器上的IP路由协议的信息
  Show ip route ;显示IP路由表中的信息
  Show ip traffic ;显示IP流量统计信息

  2、debug命令
  DEBUG不应在CPU使用率超过50%的路由器上运行。
  1) 限制debug输出
  在使用DEBUG获得所需数据后,要关闭Debug
  使路由器对所有消息都配置使用时间戳:
  Router#service timestamps debug datetime msec localtime
  Router#service timestamp log datetime msec localtime
  缺省,error和debug信息仅发送到console,telnet到路由器上看不到debug和log的信息。想在telnet中看到debug和log信息:
  Router#terminal monitor
  Router#terminal monitor ;关闭信息输出
  Router#undebug all ;关闭debug进程及所有相关信息的输出

  可以应用ACL到debug以限定仅输出要求的debug信息。
  如仅查看从10.0.1.1到10.1.1.1的ICMP包:
  Router(config)#access-list 101 permit icmp host 10.0.1.1 host 10.1.1.1
  Router#debug ip packet detail 101

  2) 全局debug命令:

  3) 接口debug

  4) 协议debug

  5) IP debug
  debug ip packets

  3、logging命令
  输出error和其它信息到console、terminal、路由器内部buffer或一台syslog服务器:
  Router>show logging

  Cisco路由器有8种可能的logging级:0-7
  Logging级别 名称 描述
  1 Emergencies 系统不能用的信息
  2 Alerts 直接行动
  3 Critical 紧急情形
  4 Errors 错误信息
  5 Warnings 警告信息
  6 Notifications 正常但重要的情形
  7 Informational 信息
  8 Debugging 调试
  缺省地,console、monitor、buffer的logging被设置为debugging级,而trap(syslog)服务器的logging被设置为informational。

#p#

4、执行路由核心复制
  core dump包含一份当前系统内存中信息的精确拷贝。捕捉包含在内存中信息的方法有:
  1) 配置路由器在崩溃时执行Core Dump,存储到TFTP、FTP、RCP服务器:
  对TFTP协议,只需指定TFTP服务器IP,不需要任何附加的配置:
  Router(config)#exception dump 192.168.1.1 ;TFTP服务器的IP地址

  对FTP协议的配置:
  Router(config)#exception dump 192.168.1.1 ;FTP服务器的IP地址
  Router(config)#ip ftp username Kevin
  Router(config)#ip ftp password aloha
  Router(config)#ip ftp source-interface e0
  Router(config)#exception protocol ftp

  对RCP协议的配置:
  Router(config)#exception protocol rcp
  Router(config)#exception dump 192.168.1.1 ;RCP服务器的IP地址
  Router(config)#ip rcmd remote-username Kevin
  Router(config)#ip rcmd rcp-enable
  Router(config)#ip rcmd rsh-enable
  Router(config)#ip rcmd remote-host Kevin 192.168.1.1 kevin ;

  2) 在系统没有崩溃的情况下,执行Core Dump命令。
  Router#write core

  Core Dump仅在Cisco工程师测试和解决路由器问题时有用。

  5、ping命令
  ping用于测试整个网络可达性和连通性。可在用户EXEC模式和特权EXEC模式下使用。
  IP的ping使用ICMP协议提供连通性和可能性信息,缺省只发送5个echo信息。
  扩展Ping的选项有:源IP地址;服务类型;数据;包头选项。
  Ping的响应字符集
  字符 解释 字符 解释
  ! Received an echo-reply message Q Source quench
  . Timeout M Unable to fragment
  U/H Destination unreachable A Administratively denied
  N Network unreachable ? Unknown packet-type
  P Protocol unreachable

  6、traceroute命令
  traceroute用于显示到达目标的包路径。可在用户模式和特权模式下使用。
  Traceroute的响应:
  字符 解释 字符 解释
  Xx msec The RTT for each packet * Timeout
  H Host unreachable U Port unreachable
  N Network unreachable P Protocol unreachable
  A Administratively denied Q Source quench
  ? Unknown packet type

  二、LAN连接问题
  1、获得IP地址
  主机可以动态或静态获得IP地址。
  1) DHCP:DHCP比BootP多了地址池和租期。
  2) BootP:
  3) Helper Addresses:指定集中放置的DHCP服务器的IP地址
  Ip helperaddress ip-address ;
  No ip forward-protocol udp 137 ;

  4) 路由器上的DHCP服务:配置路由器为一台DHCP服务器
  5) DHCP和BootP故障处理
  Show dhcp server ;
  Show dhcp lease ;

  2、ARP
  ARP映射第2层MAC地址到第3层地址。
  Show arp ;显示路由器的ARP表
  Debug arp ;

  1) ARP代理:缺省Cisco路由器的ARP代理是启用的
  在下列情况下,CISCO路由器将用自身的MAC地址响应ARP请求:
  ? 接收到ARP的接口上的Proxy ARP是启用的;
  ? ARP请求的地址不在本地子网;
  ? 路由器的路由表中包含ARP请求地址的子网;

  3、TCP连接示例

  三、IP访问列表
  1、标准ACL:基于IP包的源IP地址允许或禁用
  2、扩展ACL:提供源地址、目标地址、端口号、会话层协议进行过滤。
  3、命名ACL:可以是标准ACL,也可以是扩展ACL。
  命名ACL与编号ACL的区别:命名ACL有一个逻辑名,可以删除命名ACL中单独一行。
  Ip access-list extended Example-Named-ACL
  Deny tcp any any eq echo
  Deny tcp any any eq 37
  Permit udp host 172.16.10.2 any eq snmp
  Permit tcp any any

收藏本页

共 0 人推荐文章 关于IP子网的一点基础知识

Copyright © 2006 cisco.ccxx.net 版权所有.提供Cisco技术,Cisco培训,CCNA,CCNP,CCIE培训,Cisco论坛CCIE实验室
上海地区Cisco培训、CCNA培训、CCNP培训、CCIE培训