夏天/isummer

Sun of my life !Talk is cheap, Show me the code! 追风赶月莫停留,平芜尽处是春山~

博客园 首页 新随笔 联系 管理

 

1.  虚拟机中NAT架构的网络结构中, 虚拟网卡VMnet8(192.168.134.1)是连接宿主主机。

  用虚拟网段中主机(192.168.134.133),ping  VMnet8 为什么没有响应,说明此网卡不在虚拟网段???

  NAT虚拟网段中:

  (1)NAT服务器,DNS服务器的IP,  A:192.168.134.2(充当网关,要进行网络地址转换)

  (2)虚拟主机IP,          B:192.168.134.133

  (3)与宿主主机通信的虚拟网卡,  C:192.168.134.1

  宿主主机IP

  (1)宿主主机IP:   D

  测试:

  宿主环境测试:

  D ping C,B  成功!

  D ping A ,   失败!

  NAT局域网测试

  B ping D, A 成功

    B ping C ,   失败!

  


 

-------ping命令------

  Win: ping

  Linux: ping

  在网络中Ping 是一个十分好用的TCP/IP工具。它主要的功能是用来检测网络的连通情况和分析网络速度。

  检测两台主机联通性的判断。

  作为一个生活在网络上的管理员或者黑客来说,ping命令是第一个必须掌握的DOS命令,它所利用的原理是这样的:网络上的机器都有唯一确定的IP地址, 我们给目标IP地址发送一个数据包,对方就要返回一个同样大小的数据包,根据返回的数据包我们可以确定目标主机的存在,可以初步判断目标主机的操作系统 等。

  ping /? 例出ping 以下是PING的一些参数

  -n 定义向目标IP发送数据包的次数,默认为3次。如果网络速度比较慢,3次对我们来说也浪费了不少时间,因为现在我们的目的仅仅是判断目标IP是否存在,那 么就定义为一次吧。说明一下,如果-t 参数和 -n参数一起使用,ping命令就以放在后面的参数为标准,比如“ping IP -t -n 3”,虽然使用了-t参数,但并不是一直ping下去,而是只ping 3次。另外,ping命令不一定非得ping IP,也可以直接ping主机域名,这样就可以得到主机的IP。

  -a 将地址解析为计算机名。

 

  -n count 发送 count 指定的 ECHO 数据包数。默认值为 4。

 

  测试网络的设备:

1. ping本网段的网关/路由器的IP地址;

  Ping本网网关或本网IP地址,这样的是为了检查硬件设备是否有问题,也可以检查本机与本地网络连接是否正常;(在非局域网中这一步骤可以忽略)

2. ping中心的中心交换机的IP地址;

3. ping中心的主页服务器的域名“www.cc.shu.edu.cn”

4. Ping 自己的主机

  (1)127.0.0.1      回送地址Ping回送地址是为了检查本地的TCP/IP协议有没有设置好

  (2)自己主机的IP  这样是为了检查本机的IP地址是否设置有误

5. Ping远程IP地址,这主要是检查本网或本机与外部的连接是否正常

 

 对Ping后返回信息的分析

  

1.Request timed out

(1) 对方已关机,或者网络上根本没有这个地址:比如在上图中主机A中PING 192.168.0.7 ,或者主机B关机了,在主机A中PING 192.168.0.5 都会得到超时的信息。

 一个本网段中不存在的IP,实例。

(2)对方与自己不在同一网段内,通过路由也无法找到对方,但有时对方确实是存在的,当然不存在也是返回超时的信息。

(3)对方确实存在,但设置了ICMP数据包过滤(比如防火墙设置)。

  怎样知道对方是存在,还是不存在呢,可以用带参数 -a 的Ping命令探测对方,如果能得到对方的NETBIOS名称,则说明对方是存在的,是有防火墙设置,如果得不到,多半是对方不存在或关机,或不在同一网段内。

(4)错误设置IP地址

正常情况下,一台主机应该有一个网卡,一个IP地址,或多个网卡,多个IP地址(这些地址一定要处于不 同的IP子网)。但如果一台电脑的“拨号网络适配器”(相当于一块软网卡)的TCP/IP设置中,设置了一个与网卡IP地址处于同一子网的IP地址,这 样,在IP层协议看来,这台主机就有两个不同的接口处于同一网段内。当从这台主机Ping其他的机器时,会存在这样的问题:

A.主机不知道将数据包发到哪个网络接口,因为有两个网络接口都连接在同一网段。

B.主机不知道用哪个地址作为数据包的源地址。因此,从这台主机去Ping其他机器,IP层协议会无法 处理,超时后,Ping 就会给出一个“超时无应答”的错误信息提示。但从其他主机Ping这台主机时,请求包从特定的网卡来,ICMP只须简单地将目的、源地址互换,并更改一些 标志即可,ICMP应答包能顺利发出,其他主机也就能成功Ping通这台机器了。

2.Destination host Unreachable

(1) 对方与自己不在同一网段内,而自己又未设置默认的路由,比如上例中A机中不设定默认的路由,运行Ping 192.168.0.4就会出现“Destination host Unreachable”。

(2)或者网络上根本没有这个地址:比如在上图中主机A中PING 192.168.0.7

  

(3)网线出了故障

  这里要说明一下“destination host unreachable”和 “time out”的区别,如果所经过的路由器的路由表中具有到达目标的路由,而目标因为其他原因不可到达,这时候会出现“time out”,如果路由表中连到达目标的路由都没有,那就会出现“destination host unreachable”。

3.Bad IP address

这个信息表示您可能没有连接到DNS服务器,所以无法解析这个IP地址,也可能是IP地址不存在。

4. Unknown host——不知名主机

  这种出错信息的意思是,该远程主机的名字不能被域名服务器(DNS)转换成IP地址

  (1)故障原因可能是域名服务器有故障

  (2)或者其名字不正确

  (3)或者网络管理员的系统与远程主机之间的通信线路有故障。


-------Traceroute命令------

 Win: Tracert

 Linux: Traceroute

  Tracert(跟踪路由)是路由跟踪实用程序,用于确定 IP 数据报访问目标所采取的路径。  

  通 过Traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同 样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。

  UNIX系统中,我们称之为 Traceroute,MS Windows中为Tracert。

Tracert 工作原理

通过向目标发送不同 IP 生存时间 (TTL) 值的“Internet 控制消息协议 (ICMP)”回应数据包,Tracert 诊断程序确定到目标所采取的路由。要求路径上的每个路由器在转发数据包之前至少将数据包上的 TTL 递减 1。数据包上的 TTL 减为 0 时,路由器应该将“ICMP 已超时”的消息发回源系统。

  Traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备Traceroute要测3次。

  输出结果中包 括:

  (1)每次测试的时间(ms)  

  (2)设备的名称(如有的话)

  (3)其IP地址。

windows之tracert

  tracert [-d] [-h maximum_hops] [-j computer-list] [-w timeout] target_name

参数
-d
指定不对计算机名解析地址(直接返回的全是IP),否则,需要检索是否有这个IP对应的域名,然后显示域名+IP
-h maximum_hops
指定查找目标的跳转的最大数目。
-jcomputer-list
指定在 computer-list 中松散源路由。
-w timeout
等待由 timeout 对每个应答指定的毫秒数。
target_name
目标1. 主机域名(2. IP)。

  

说明:

(1)从返回的IP特征可以判定,本次的“路由追踪”经过了那些网段。且一共经过了20个节点到达目的IP。

(2)中间这三列,单位是ms,是表示我们连接到每个路由节点的速度  返回速度和  多次链接反馈的平均值

(3)后面的IP,就是每个路由(路由器)节点对应的IP

  如果在测试的时候,大量的都是*和返回超时,那就说明这个IP,在各个路由节点都有问题。

  其中带有星号(*)的信息表示该次ICMP包返回时间超时。

(4)记录按序列号从1开始,每个纪录就是一跳 ,每跳表示一个网关

linux的traceroute

  traceroute[参数][主机]

  具体参数格式:traceroute [-dFlnrvx] [-f<存活数值>][-g<网关>...][-i<网络界面>][-m<存活数值>][-p< 通信端口>][-s<来源地址>][-t<服务类型>][-w<超时秒数>][主机名称或IP地址][数据包 大小]

-d 使用Socket层级的排错功能。

-f 设置第一个检测数据包的存活数值TTL的大小。

-F 设置勿离断位。

-g 设置来源路由网关,最多可设置8个。

-i 使用指定的网络界面送出数据包。

-I 使用ICMP回应取代UDP资料信息。

-m 设置检测数据包的最大存活数值TTL的大小。

-n 直接使用IP地址而非主机名称。显示IP地址,不查主机名

-p 设置UDP传输协议的通信端口。

-r 忽略普通的Routing Table,直接将数据包送到远端主机上。

-s 设置本地主机送出数据包的IP地址。

-t 设置检测数据包的TOS数值。

-v 详细显示指令的执行过程。

-w 设置等待远端主机回报的时间。

-x 开启或关闭数据包的正确性检验。

  NAT局域网中,主机到宿主主机的链路。可以看到是从NAT服务器IP中进行路由转换除去的,但是后面经过防火墙,所以出现了***

(1)有时我们traceroute 一台主机时,会看到有一些行是以星号表示的。出现这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。

(2)有时我们在某一网关处延时比较长,有可能是某台网关比较阻塞,也可能是物理设备本身的原因。当然如果某台DNS出现问题时,不能解析主机名、域名时,也会 有延时长的现象;您可以加-n 参数来避免DNS解析,以IP格式输出数据。

(3)如果在局域网中的不同网段之间,我们可以通过traceroute 来排查问题所在,是主机的问题还是网关的问题。如果我们通过远程来访问某台服务器遇到问题时,我们用到traceroute 追踪数据包所经过的网关


-------host命令------

linux:host

Win: nslookup

  host,常用来分析域名的工具。可以测试域名系统是否正常。

  目前只有linux系统中提供host命令。

1. 追踪地址

(1)显示域名的所有iP

  host 域名

  (1)显示其他的域名,(2)显示所有有效的IP,(3)测试一个域名是否是另一个域名的别名

  

  

(2)要显示地址为 202.106.121.66 的主机名

host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常

来自: http://man.linuxde.net/host
host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。

来自: http://man.linuxde.net/host
host命令是常用的分析域名查询工具,可以用来测试域名系统工作是否正常。

来自: http://man.linuxde.net/host

Win之nslookup:   name Search -- ns

  Nslookup 是一个监测网络中DNS服务器是否能正确实现域名解析的命令行工具。它在 Windows NT/2000/XP(在之后的windows系统也都可以用的,比如win7,win8等) 中均可使用,

 

测试Win环境测试域名的地址IP

  

(1)以上结果显示,正在工作的 DNS 服务器的主机名为 server20.hust.edu.cn,它的(DNS) IP 地址是202.114.40.242 ,而域名tencetn.com 所对应的 IP 地址为 180.163.32.150 。域名系统正常。

  如果域名不存在,则显示:

  

(2)如果一个正确的域名,但是不能解析,如上图所示

  说明测试主机在目前的网络中,根本没有找到可以使用的 DNS 服务器。此时,我们要对整个网络的连通性作全面的检测,并检查DNS服务器是否处于正常工作状态,采用逐步排错的方法,找出 DNS 服务不能启动的根源。

 


 

-------tcpdump抓包命令------

 

linux:tcpdump

TCPdump抓包命令

 

  如果,ping,或者 route printe ,以及 host 无法检测网络古装,可以通过“分析数据包”的流向。来分析网络。

  tcpdump必须使用root的身份启动。tcpdump是一个用于截取网络分组,并输出分组内容的工具。tcpdump凭借强大的功能和灵活的截取策略,使其成为类UNIX系统下用于网络分析和问题排查的首选工具。 tcpdump提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。

  根据使用者的定义对网络上的数据包进行截获的包分析工具。 tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。

TCPdump命令格式

tcpdump [ -adeflnNOpqStvx ] [ -c 数量 ] [ -F 文件名 ][ -i 网络接口 ] [ -r 文件名] [ -s snaplen ][ -T 类型 ] [ -w 文件名 ] [表达式 ]

一般我们的服务器里边只有一个网卡,使用tcpdump可以直接抓取数据包,但是这样查看太麻烦了,所以都会添加参数来进行获取的。

(1)参数选项

-a  将网络地址广播地址转变成名字;
-d  将匹配信息包的代码以人们能够理解的汇编格式给出;
-dd  将匹配信息包的代码以c语言程序段的格式给出;
-ddd  将匹配信息包的代码以十进制的形式给出;
-e  在输出行打印出数据链路层的头部信息;
-f  将外部的Internet地址以数字的形式打印出来;
-l  使标准输出变为缓冲行形式;
-n  不把网络地址转换成名字;
-nn  直接以IP和Port端口号显示,不适用主机域名与服务名显示。
-X  直接列出hex以及ASCII,显示16进制,以及ASCII数据包的内容,这样可以监听数据包的内容。
-t  在输出的每一行不打印时间戳
-v  输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息;
-vv  输出详细的报文信息;
-c  在收到指定的包的数目后,tcpdump就会停止;
-F  从指定的文件中读取表达式,忽略其它的表达式;
-i  指定监听的网络接口; 本主机;eth0
-r  从指定的文件中读取包(这包一般通过-w选项产生);
-w  直接将包写入文件中,并不分析和打印出来;
-T  将监听到的包直接解释为指定的类型的报文,常见的类型有rpc (远程过程调用)和snmp(简单 网络管理协议;)
(2)表达式
  表达式是一个正则表达式,tcpdump利用它作为过滤报文的条件,如果一个报文满足表达式的条件,则这个报文将会被捕获。如果没有给出任何条件,则网络上所有的信息包将会被截获。
  在表达式中一般如下几种类型的关键字:
1. 一种是关于类型的关键字,主要包括host,net,port,
  如下,如果没有指定类型,缺省的类型是host.
  •    host 210.27.48.2,指明 210.27.48.2是一台主机
  •   net 202.0.0.0 指明202.0.0.0是一个网络地址  
  •   port 23   指明端口号是23。
2. 第二种是确定传输方向的关键字,主要包括src , dst ,dst or src, dst and src ,这些关键字指明了传输的方向。
  如下,如果没有指明方向关键字,则缺省是src or dst关键字。
  •   src 210.27.48.2 ,指明ip包中源地址是210.27.48.2 
  •   dst net 202.0.0.0 指明目的网络地址是202.0.0.0
3. 第三种是协议的关键字,主要包括fddi,ip ,arp,rarp,tcp,udp等类型。
  Fddi指明是在FDDI(分布式光纤数据接口网络)上的特定的网络协议,实际上它是"ether"的别名,fddi和ether具有类似的源地址和目的地址,所以可以将fddi协议包当作ether的包进行处理和分析。其他的几个关键字就是指明了监听的包的协议内容。如果没有指定任何协议,则tcpdump将会
监听所有协议的信息包。
 
4. 除了这三种类型的关键字之外,其他重要的关键字如下:gateway, broadcast,less,greater,还有三种逻辑运算,取非运算是 'not ' '! ', 与运算是'and','&&';或运算 是'or' ,'||';
  这些关键字可以组合起来构成强大的组合条件来满足人们的需要,下面举几个例子来
  说明。
(1)想要截获所有210.27.48.1 的主机收到的发出的所有的数据包:
#tcpdump host 210.27.48.1
(2) 想要截获主机210.27.48.1 和主机210.27.48.2 或210.27.48.3的通信,使用命令:(在命令行中适用括号时,一定要带向转义\
#tcpdump host 210.27.48.1 and \ (210.27.48.2 or 210.27.48.3 \)
(3) 如果想要获取主机210.27.48.1除了和主机210.27.48.2之外所有主机通信的ip包,使用命令:
#tcpdump ip host 210.27.48.1 and ! 210.27.48.2
(4)如果想要获取主机210.27.48.1接收或发出的telnet包,使用如下命令:
#tcpdump tcp port 23 host 210.27.48.1
(5)对本机的udp 123 端口进行监视 123 ntp的服务端口
tcpdump udp port 123
(6) 监视指定网络的数据包
  打印本地主机与Berkeley网络上的主机之间的所有通信数据包(nt: ucb-ether, 此处可理解为'Berkeley网络'的网络地址,此表达式最原始的含义可表达为: 打印网络地址为ucb-ether的所有数据包)
tcpdump net ucb-ether
  打印所有通过网关snup(IP)的ftp数据包(注意, 表达式被单引号括起来了, 这可以防止shell对其中的括号进行错误解析)
tcpdump 'gateway snup and (port ftp or ftp-data)'
打印所有源地址或目标地址是本地主机的IP数据包(如果本地网络通过网关连到了另一网络, 则另一网络并不能算作本地网络.(nt: 此句翻译曲折,需补充).localnet 实际使用时要真正替换成本地网络的名字)
tcpdump ip and not net localnet
(7)我截取本机(192.168.31.147)和主机114.114.114.114之间的数据

tcpdump -n -i eth0 host 192.168.31.147 and 114.114.114.114

(8)截取全部进入服务器的数据可以使用以下的格式

tcpdump -n -i eth0 dst 192.168.31.147

或者服务器有多个IP 可以使用参数

tcpdump -n -i eth0 dst 192.168.31.147  or  192.168.31.157

(9)抓取全部进入服务器的TCP数据包使用以下的格式,大家可以参考下

 tcpdump -n -i eth0 dst 192.168.31.147 or 192.168.31.157 and tcp

从本机出去的数据包

tcpdump -n -i eth0 src 192.168.31.147 or 192.168.31.157

tcpdump -n -i eth0 src 192.168.31.147 or 192.168.31.157 and port ! 22 and tcp

  还有更神奇的用法。当我们使用tcpdump在Router上面监听明文的传输数据时,例如FTP传输协议,你觉得会发生什么问题呢?我们先在主机端执行 “tcpdump -i lo port 21 -nn –X”,然后再以FTP登录本机,并输入账号与密码,结果你就通过Tcpdump来hack用户名密码:

  如下是在虚拟机NAT架构中主机的网络分析:

  

  (1)上面:虚拟主机ping(192.168.134.133) ,宿主主机(222.20.109.61)的数据包情况

  每一次请求,都紧跟着一个回复报文。

  (2)下面是:虚拟主机ping www.baidu.com执行过程

  1. 宿主主机(192.168.134.133)需要请求一次本网络中的DNS服务器(192.168.134.2),

  请求与返回报文,获取域名www.baidu.com 的真实有效的IP,119.75.217.109

  2. 宿主主机(192.168.134.133)请求真实ip(119.75.217.109), 注意需要通过NAT服务器(192.168.134.2)转发处理。

  133 -> 真实IP  : 这个过程过转接到NAT服务器,数据包的内容是NAT中与133本机的连接信息。

  133-> NAT 02  :这个过程,就是根据上一步的返回,本机133将直接通过NAT进行网络地址转换 ,【后续 转换后地质-> 真实IP,这个过程不会被监听】

  NAT02 -> 133   : NAT转换地址后,访问真实iP的返回内容,转发给本主机

  通过Seq标志,可以继续 与NAT02通信过程。重复。

  


 

-------ping ip, arp -n 获取对方ip的mac地址------

  ping -c 4 ip;

  arp -n ;

  执行上述命令后,即可获取对方Ip所在的网卡地址,即MAC

 

endl;

posted on 2016-09-08 13:06  夏天/isummer  阅读(3328)  评论(0编辑  收藏  举报