Traceroute

路由跟踪 原文参考链接 if pc want connect to server it maybe should through many routers. if one of the routers have something problem, so you maybe can not touch the internet .

显示路由表: netstat -nr // Mac OS 路由表中,可以找到网关(Gateway)。 网关是通向更加广域网络的出口。

路由跟踪 Traceroute:

遇到网络问题,通常会用 Traceroute 去排查.

Traceroute是一种电脑网络工具, 它可显示数据包在IP网络经过的路由器的IP地址。

Traceroute 三大特点:

  1. 跨平台 Traceroute工具存在与各个操作系统平台, 包括主流系统MAC OS、Windows、Linux、Android、IOS等;

    1. 使用方便 只要在Traceroute后输入IP或域名即可;

      1. 信息全面 Traceroute能够显示跳数、丢包情况、延时等信息。

实现原理:

  1. 从SRC发出一个探测包到DST,并将TTL设置为1;
    1. 每一跳TTL将会减一;
    2. 当TTL变为0时,包被丢弃,路由器向SRC发回一个ICMP TTL Exceed包;
    3. 当SRC收到该ICMP包时,显示这一跳信息;
    4. 重复1~5,并每次TTL加1;
    5. 直至DST收到探测数据包,并返回ICMP Dest Unreachable包;
    6. 当SRC收到ICMP Dest Unreachable包时停止traceroute。 

Traceroute实现细节

  1. 传统UNIX系统使用UDP包进行探测, 目标端口号为33434,每次探测目标端口号增加1; Windows的tracert.exe和MTR则使用ICMP Echo Request包探测;

  2. 如果DST没有返回ICMP Dest Unreachable包则不能探测到DST。这是会发生在某些情况下,如DST前有防火墙,或者DST进行了配置,或者是DST上有一个真实的应用在监听该端口;

    1. 通过设置UDP/TCP/ICMP包中的CLI标识位都能够实现Traceroute,一般来说,不推荐使用TCP包,因为通常会被过滤掉;

    2. 不同的实现方式通常都会向每跳发送多个探测包, 典型的Traceroute默认发送3个探测包, 如果没有收到那一跳的回应,延时数据将会输出3个 ★号; MTR会循环发送无数个探测包;

    3. 每个探测包都有唯一的标识号,使得Traceroute能够识别返回的包,UDP/TCP使用递增的目标端口号进行标识,ICMP使用seq #;

    4. 由于4层哈希能使每个探测包走不同的路由,对于Traceroute来说,在三层的等价多路径(ECMP)下可见,在二层的聚合链路LAG下不可见;

    5. 虽然探测包走不同路径引起不同的结果,但TTL还是相同的。

Traceroute中的DNS反向解析

(Domain Name System) DNS 域名系统: 把域名解析成IP地址。 DNS 反向解析: 把IP解析成域名

**Traceroute 下进行 DNS反向解析 可获取:

  1. 路由器地理位置
    1. 接口类型与带宽
      1. 路由类型与角色
      2. 网络自治系统的边界与关系

    对于推断问题原因,以上信息显得尤为重要。

路由器地理位置

为什么我们需要知道地理位置?

  1. 找出不对或不太合适的路由。
    如:从上海到北京 要经过美国的话. 就不太理想了
2. 确定高延时是否合理。
	从印度到美国要300ms,
	但从日本到美国并不需要300ms。  

3. 帮助你理解网络互联的节点。  

	我们常用的帮助识别位置信息的有:
	- IATA Airport Codes(International Air Transport Association Airport Codes)
	- CLLI Codes(Common Language Location Identifier)
	- 非标准简写的城市名
	- Country Codes
	- 还有一些其他的信息  

接口类型与带宽

很多网络都会尝试将接口信息放在DNS,需要注意的是:

  1. 接口信息通常是帮助他们排查自己网络的问题;

    1. 接口信息有可能不是最新的。虽然很多大型网络会自动产生DNS,但其余的不会;

    2. 可以帮助你识别接口的类型,通过接口类型甚至可以知道路由器的型号。

例子:xe-11-1-0.edge1.NewYork1.Level3.net

  • xe-11-1-0: 是Juniper 10GE端口,
    该设备至少有12个板卡槽

    • edge1: 至少一台40G/板卡槽的路由器, 因为它有一块10GE板卡在板卡槽1

    ##### 常见接口类型对照表

Interface Type Cisco IOS Cisco IOS XR Juniper Fast Ethernet Fa#/# fe-#/#/# Gigabit Ethernet Gi#/# Gi#/#/#/# ge-#/#/# 10 Gigabit Ethernet Te#/# Te#/#/#/# xe-#/#/# () SONET Pos#/# POS#/#/#/# so-#/#/# T1 Se#/# t1-#/#/# T3 t3-#/#/# Ethernet Bundle Po# / Port-channel# BE#### ae# SONET Bundle PosCh# BS#### as# Tunnel Tu# TT# or TI# ip-#/#/# or gr-#/#/# ATM ATM#/# AT#/#/#/# at-#/#/# Vlan Vl### Gi#/#/#/#.### ge-#-#-#.###

路由类型与角色

知道路由器角色是非常有用的. 但每个AS都不一样,使用不同的角色命名,并且他们也不会一直遵循自己的命名规则。

总的来说,你只能通过你的网络知识去猜路由器的角色。

通常来说有以下规律:

  • Core routers – CR, Core, GBR, BB, CCR, EBR

    • Peering routers – BR, Border, Edge, IR, IGR, Peer

    • Customer routers – AR, Aggr, Cust, CAR, HSA, GW

网络自治系统的边界与关系

识别网络自治系统边缘很重要:

  1. 能帮助你知道路由策略变化的地方。如:不同的返回路径是基于本地优先级的;
    1. 能帮助你知道带宽与路由最差的地方,这些地方可能就是产生问题的地方;
    2. 当然也能帮助你知道应该去联系谁。

识别网络自治系统的关系同样有所帮助:

  1. 典型三个角色:Transit Provider、Peer、Customer

  2. 很多网络都会尝试将以上信息写在DNS上。如etworkname.customer.alter.net

网络延时

三种主要网络延时:

  1. 串行延时 该延时是路由器或交换机发送数据包的时间,串行延时=包大小(bits)/传输速率(bps);

    该延时产生在转发数据包的时候,产生原因:

    1. 一个数据包被移动到网络上的时候是一个不可分的单元;

      1. 在一个数据包传输完毕之前另外一个数据包无法发送。

        在高速网络中该延时非常小 • 1500 bytes over a 56k link (56Kbps) = 214.2ms delay

        • 1500 bytes over a T1 (1.536Mbps) = 7.8ms delay

        • 1500 bytes over a FastE (100Mbps) = 0.12ms delay

        • 1500 bytes over a GigE (1Gbps) = 0.012ms delay

      2. 排队延时 该延时是数据包在路由器队列中等待发出的时间,非拥塞情况下排队延时可忽略不计;

  2. 利用率 1G的接口跑到500Mbps我们会说利用率是50%,但实际上,一个接口只能进行转发数据(100%利用)或者不能转发数据(0%利用),故所谓的50%利用率实际上是指1s内有0.5s用来了传输数据。
  3. 排队 当一个接口在被使用,下一个包必须排队等待被发送。通常来说,一个接口90%使用率等于将要转发的包90%都在排队。当一个接口达到饱和时,排队时间将迅速增加,当一个接口过饱和时,一个包排队可能要耗费几百甚至几千毫秒,排队延时通常与拥塞程度相关联。

  4. 传播延时 该延时是数据包在传播介质中传播所用时间,该延时主要取决于光或电磁的传播速度。

该延时由光信号或电磁信号在介质中的传播速度与距离决定。光速(真空状态下传播)约为300,000km/s,但光纤是由玻璃制作,非真空,故光在光纤内传播速度较真空状态慢,约为0.67c,即200,000km/s,1ms的往返延时距离为100km。 例子: 环地球赤道一圈(约为40000km)传播延时大概为200ms(往返延时为400ms)。  知道以上数据,通过traceroute的每一跳地理位置信息,通过距离计算传播延时就知道延时是否正常了。   3 xe-3-0-0.cr1.nyc3.us.nlayer.net (69.22.142.74) 6.570ms 4 xe-0-0-0.cr1.lhr1.uk.nlayer.net (69.22.142.10) 74.144ms 美国纽约到英国伦敦只需要67.6ms,两地相距约6759km,延时正常。

5 cr2.wswdc.ip.att.net (12.122.3.38) MPLS: Label 17221 Exp 0 8ms 8ms 8ms 6 tbr2.wswdc.ip.att.net (12.122.16.102) MPLS: Label 32760 Exp 0 8ms 8ms 8ms 7 ggr3.wswdc.ip.att.net (12.122.80.69) 8ms 8ms 8ms 8 192.205.34.106 AS 7018 228ms 228ms 228ms 9 te1-4.mpd01.iad01.atlas.cogentco.com (154.54.3.222) AS 174 228ms 228ms 228ms 在美国本土传播耗时220ms,延时不正常。

优先级与限速

Traceroute延时判断影响因素 Traceroute延时 包括三点:

  1. 探测包到达一个特定路由器的时间
    1. 路由器生成IPMI TTL Exceed的时间
      1. ICMP TTL Exceed返回到SRC的时间

      第一个和第三个时间都是受实际网络情况影响的,而第二个时间不是。 对网络问题的判断起到帮助作用的仅仅只有第一个和第三个时间,第二个时间往往起到误导的作用。

路由器工作原理 **路由器有转发(data-plane)和接收(control-plane)的功能。

路由器转发包有两种模式:

  1. Fast Path:硬件实现转发源包 (几乎所有的网络的数据包)

    1. Slow Path:软件实现处理“异常”包 (IP Options, ICMP generation <–Traceroute发生在这里)

路由器能够接收直接发送到路由器上绑定的IP的包, 接收的包可以是BGP、IGP、SNMP、CLI访问(telnet/ssh)、ping等; 但是,*路由器的CPU性能是比较差的。 一个320-640+Gbps背板的路由器,却只有一个单核600MHz MIPS CPU, *通常CPU用来做其他事而不是做Traceroute, *因此ICMP Generation在路由器看来优先级较低,大多数情况下更是有速度限制和降级的处理。

1. 降级 在一些常见的路由器平台上,Slow path中的转发与接收是公用资源,同时没有使用最好的软件调度器。因此一些控制性的数据处理比如BGP churn、CLI等会消耗CPU资源,使得ICMP TTL Exceed包的产生延迟。 

  1. 限速 大部分路由器会限制他们的ICMP包产生,不同厂商会有不同的并且不可设置的限速值, 这大大影响了Traceroute的效果。

5.3 排除假延时 那么有办法排除第二个时间对整个延时的影响吗?答案是有的。 最重要的一个规则:如果在某一跳中发生问题,那么所有后续跳的延时将会持续或增长。

下面例子中第二跳并没有问题 1 ae3.cr2.iad1.us.nlayer.net 0.275ms 0.264 ms 0.137 ms 2 xe-1-2-0.cr1.ord1.us.nlayer.net 18.271 ms 68.257 ms 18.001 ms 3 tge2-1.ar1.slc1.us.nlayer.net 53.373 ms 53.213 ms 53.227 ms 在Traceroute过程中出现的延时突高并不是什么问题,造成这种现象主要有两种原因:

  1. 通常是路由器的限速与优先级问题;
  2. 最坏情况是路由器回包过程中走的路径不同导致的(非对称转发路径)。 

非对称的转发路径

网络中的路由是没法保证对称的转发路径,即往返的路径完全相同. 而Traceroute显示的只是去的方向的路径,但仍然要注意延时是往返的耗时。 对于Traceroute来说,返回的路径是完全不可见的,返回的每一跳可能跟去的时候完全不一样。 排查问题的时候可以进行反向的Traceroute,看返回的路径上是否出现问题, 当然,这样也不能保证路径是一样的。

非对称路径通常是在AS边界开始的。为什么?那是因为AS边界通常是AS管理策略改变的地方

防火墙的存在: 有可能会过滤 ICMP 和 UDP 数据包. 一般不会过滤 TCP 数据包.

使用TCP SYN数据包来代替UDP或者ICMP应答数据包效果会好点.

sudo traceroute 74.125.128.99 追踪到达IP目的地的经过的全部路由   traceroute -I 74.125.128.99  通过ICMP协议,追踪路由。 ICMP协议经常会被禁用,所以会返回 ※ ※ ※   sudo traceroute -T -p 80 74.125.128.99 通过TCP协议,经80端口,追踪路由。
TCP协议的默认端口80很少会被禁用。  

Mac Traceroute

man traceroute 能看出发送的是 icmp 应答包.

然后用 wireshark 抓本机的包 来分析.

  1. 先设置 要抓取的本机的 IP. 减少数据包数量.
    • 显示过滤器 输入 icmp 就能抓出来包了. 发现 每个 IP 都会发送三次包. 算平均值.

网络监听

tcpdump是一款网络抓包工具。 它可以监听网络接口不同层的通信,并过滤出特定的内容, 比如特定协议、特定端口等等。

我们上面已经使用tcpdump监听了ARP协议通信。这里我们来看更多的监听方式。 sudo tcpdump -i en0 监听en0接口的所有通信   sudo tcpdump -A -i en0    用ASCII显示en0接口的通信内容   sudo tcpdump -i en0 ‘port 8080’   显示en0接口的8080端口的通信   sudo tcpdump -i eth1 src 192.168.1.200   显示eth1接口,来自192.168.1.200的通信   sudo tcpdump -i eth1 dst 192.168.1.101 and port 80   显示eth1接口80端口,目的地为192.168.1.101的通信   sudo tcpdump -w record.pcap -i lo0   将lo0接口的通信存入文件record.pcap  

域名解析

host www.sina.com.cn

DNS是在域名和IP之间进行翻译。DNS故障会导致我们无法通过域名访问某个网址。  DNS域名解析。返回域名对应的IP地址

Ping & Traceroute & 网络诊断.

诊断第一步: 了解自己的设备. 有哪些接口. 接口的IP地址. ifconfig

ARP

查 IP-MAC 的对应关系.可看出局域网内的通信是否正常.

arp -a 显示本机的 IP-MAC 对应关系.

sudo arp-scan -1 显示整个局域网内的 所有 IP 地址对应的 MAC 地址.

sudo arping -I eth0 192.168.1.1 通过 eth0 接口, 发送 ARP 请求: 来查询192.168.1.1 的 MAC 地址.

sudo tcpdump -i en0 arp 监听 en0 接口的 arp 通信协议.

网络层:

互联网信息传递的实现要通过以下设备: 路由器 交换机 服务器 网关 等等..

这些设备一般会有一个独立的 IP.

Ping

检测目标主机是否可连通

通: 只能保证本地和服务器有一条连通的物理线路 不通: 有可能对方安装了防火墙.防Ping 的 (也就是 对方的设备 ICMP 这个功能被禁用了.)

  • Ping 通 如果还有问题: 网络系统软件配置.

    • Ping 不通
      1. 网线故障
        1. 网络适配器 配置问题
        2. IP 不正确.
    • Ping 丢包

Traceroute

**IP数据报 到达目的地 经过的路由

路有很多条.大部分走的都是同一条路. 但是也有可能不一样!!

Unix : Traceroute Windows: Tracert

Unix: 举例

sudo tracertroute www.baidu.com

Tracertroute 网关: 一般 tracertroute 是基于电脑主机的.

IT 对设备和 Internet 的连接路径 和 连接时间 速度 都是很高兴的. 使用 tracertroute 能给你一个满意的答案.

网络测试常用命令:

ping 192.168.1.1 ping www.baidu.com

ping -s 1500 192.168.1.1 指定数据包大小.

不能上网: 首先 确认是否本地局域网故障.

*测试网卡是否安装正常: ping 172.0.0.1

TracertRoute 功能类似 Ping. 但是比 Ping 详细很多. 把数据包走的全部路径.节点. IP 以及花费时间都显示出来. 适合 大型网络.

Netstat

可以了解网络整体情况≥

  1. 显示 路由表 netstat -r

    1. 显示每个协议的 使用状态 netstat -s

      1. 显示多址广播信息
      2. 显示当前所有套接字连接状态

路由 / 路由表

  • 主机 路由表
    1. windows: route print
      1. Mac: netstat -r - 路由器 路由表

Windows 路由表分析: ( 172.19.16.16 导出的路由表 )

  • Active Routes: 活动的路由.
    • Network destination: 目的网段
    • Netmask: 子网掩码
    • Gateway: 网关(也叫 下一条路由)
    • Interface: 接口,本地主机用于发送数据包的网络接口. 网关必须和接口 在同一个子网. (默认网关除外)
    • Metric: 跳数
      1. 指出路由的成本, 通常代表 到达目标地址需要经过的跳跃数量.
        1. 一个跳数 代表经过一个路由器.
        2. 跳数越低 代表路由成本越低. 优先级越高.

=========================================================================== Active Routes:

  1. Network Destination Netmask Gateway Interface Metric
  2. 0.0.0.0 0.0.0.0 172.19.16.1 172.19.16.16 10
  3. 127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
  4. 172.19.16.0 255.255.255.0 172.19.16.16 172.19.16.16 10
  5. 172.19.16.16 255.255.255.255 127.0.0.1 127.0.0.1 10
  6. 172.19.255.255 255.255.255.255 172.19.16.16 172.19.16.16 10
  7. 224.0.0.0 240.0.0.0 172.19.16.16 172.19.16.16 10
  8. 255.255.255.255 255.255.255.255 172.19.16.16 172.19.16.16 1
  9. Default Gateway: 172.19.16.1

1: 缺省路由 系统收到一个目的地址不在路由表的数据包时: 系统把这个数据包 通过接口(也就是网卡):16.16 发送到 缺省网关:16.1

2: 本地环路 系统收到 一个发往 127.0.0.0 这个网段的数据包时: 系统会把这个数据包 通过 127.0.0.1 这个接口 接收发给这个网段的所有数据包.

3: 直连网段的路由记录 系统收到 172.19.16.0/24 这个网段的数据包时: 系统会把这个数据包 通过 16.16 这个接口发送出去

4: 本地主机路由 系统收到一个目标地址是本机网卡的数据包时: 收下该数据包

5: 本地广播路由 系统收到一个 发给直连网段的本地广播数据包: 把这个包 从16.16 接口.以广播的形式发送出去

6: 组播路由 系统收到一个组播数据包时: 系统会将该数据包从16.16 这个接口以组播的形式发送出去。

7: 广播路由 系统收到一个绝对广播数据包时,把该数据包通过16.16这个接口发送出去。

8: 缺省网关

**Windows 路由表操作:

Route -f -p ; print/add/delete/change ; 目的 ip ; 子网掩码 ; 网关 ; 跳数 ; 接口 -f 清楚路由表. -p 永久保留某条路由 (重启也不会丢失) *Print 打印; ADD 添加; Delete 删除; Change 修改

**网络传输三张表:

  1. MAC 地址表
    1. ARP 缓存表
    2. 路由表

Mac 地址表

交换机工作原理: 根据MAC 地址表来转发数据的! 交换机中有一张记录局域网主机MAC地址与交换机端口对应关系的表.根据这个表.传输数据到指定主机.

交换机 收到数据包(包中有 源MAC地址 和 目的MAC地址).

  1. 记录数据包中的 源MAC地址 和对应的交换机端口号到MAC表中.
  2. 检查 自己的 MAC 表中 是否有数据包中目标 MAC地址的信息. 有: 根据 Mac 表 找到相应的端口 发送数据.

    没有:把数据包 从交换机所有端口(除了收到数据包的那个端口) 广播出去….. 这时候 局域网所有电脑都收到这个包. 但是只有目的主机 会相应这个广播.并回应一个数据包(包括 目的主机的 MAC 地址) 交换机收到 目的主机的回应. 记录目的主机的 MAC 和相应的交换机端口号. 当以后两边再要传输数据的时候.就能根据交换机的 MAC 地址表里的记录 实现单播了.

ARP 缓存表

交换机 是通过 MAC 地址通信的. 但是 我们怎么获取 目标主机的 MAC 地址呢? 这就需要 ARP 协议了.

每台主机中都有一张 ARP 表. 记录主机的 IP 地址 和 MAC 地址的对应关系.

ARP 工作在网络层协议. 负责把 IP 地址解析为 MAC 地址.

主机 A 想给 主机 B 发数据. A 检查自己 ARP 缓存表. 看有没有 B的IP 对应的 MAC 地址关系. 有: 把 B 的 MAC 地址作为目的MAC地址 封装到数据包中. 没有: A 发送一个 ARP 请求. 请求中的信息:

目标IP: B 的 IP. 目标MAC: MAC地址的广播帧(FF-FF-FF-FF-FF-FF) 源 IP: A 的 IP 源 MAC: A 的 MAC

交换机 收到 arp 请求: 发现是广播帧: 把这个数据包 从非接收的所有端口发送出去.

所有主机都收到这个广播. B发现这个包的 IP 是自己的. 把 A 的 ip 和 MAC 记录到自己的 arp 缓存中. 同时回应这个数据包.(里面有自己的 MAC 地址) A 收到回应包, 记录 B 的 MAC 地址和 IP 的对应关系.

路由表:

负责不同网络之间的通信.是非常重要的设备.可以说没有路由器就没有互联网. 路由器中 也有一张表: 叫路由表.

记录着不同网络的信息.

**路由表信息分为: 直连路由 和 非直连路由

直连路由: 直接连在路由器接口的网段 路由器会自动生成的 非直连路由: 不是直接连在路由器上的网段. 这个记录 是要手动添加 或者 使用动态路由的.

静态路由: 需要手动添加 动态路由: 动态获取的

直连路由是属于静态路由.

路由器工作在网络层: 网络层可以识别 逻辑地址(也就是IP 地址).

  • 路由器收到包.
    • 读取包中的目标 IP 地址的 网络部分. 在路由表中进行查找. 找到路由条目 就转发给相应的接口.

      没找到: 如果配置了默认路由: 把包发给默认路由 如果没配置默认路由: 丢弃数据包.

总结:路由表负责记录一个网络到另一个网络的路径,因此路由器是根据路由表工作的。

MAC OS 路由表 维护:

netstat -nr 查看路由表.

Destination 目标网段或者主机 Gateway 网关地址, Genmask 网络掩码 Flags 标记。一些可能的标记如下: *U — 路由是活动的 *H — 目标是一个主机 *G — 路由指向网关 R — 恢复动态路由产生的表项 D — 由路由的后台程序动态地安装 M — 由路由的后台程序修改 ! — 拒绝路由 Metric 路由距离,到达指定网络所需的中转数(linux 内核中没有使用) Ref 路由项引用次数(linux 内核中没有使用) Use 此路由项被路由软件查找的次数 Iface 该路由表项对应的输出接口

**3种路由类型: *主机路由 主机路由是路由选择表中指向单个IP地址或主机名的路由记录。主机路由的Flags字段为H

*网络路由 网络路由是代表主机可以到达的网络。网络路由的Flags字段为N。

*默认路由 当主机不能在路由表中查找到目标主机的IP地址或网络路由时,
数据包就被发送到默认路由(默认网关)上。默认路由的Flags字段为G。

**MAC 路由配置: add : 添加一条路由规则 del : 删除一条路由规则 -net : 目的地址是一个网络 -host : 目的地址是一个主机 target : 目的网络或主机 netmask : 目的地址的网络掩码 gw : 路由数据包通过的网关 dev : 为路由指定的网络接口

**例子: 添加到主机的路由 route add -host 192.168.1.2 dev eth0:0 route add -host 192.168.1.88 gw 10.20.30.40 添加到网络的路由 route add -net 10.20.30.40 netmask 255.255.255.248 eth0 route add -net 10.20.30.40 netmasj 255.255.255.248 gw 10.20.30.41 route add -net 192.168.1.0/24 eth1 添加默认路由 route add default gw 192.168.1.1 删除路由: route del -host 192.168.1.2 dev eth0:0

设置包转发: CentOS 自带路由功能. 只是没有开启.

路由是网络核心部分. 路由表本身的设计 很大程度影响路由的性能. 好的设计能减少系统资源的消耗.

路由表结构: Linux 使用多个路由表.而不是一个. 一个用于上传给本地上层协议 . 一个用于转发. 分成多个表. 避免了查找庞大的路由表. 一定程度提高了查找效率.

路由的查找: 路由的查找速度直接影响整个网络的性能. 路由的查找 首先发生在路由缓存中. 缓存里找不到 再去路由表中查找.

查找同一网段队友 ip 及对应的 mac 地址. 可用 nemesis 的发包功能, 构造 arp 请求. 配合批处理.可在10秒内找出同一网段下的所有 ip 和 mac 对应地址

discover.bat @echo off set ip=0 :loop if %ip%==255 goto end set /A ip=%ip%+1 @nemesis arp -S 192.168.1.255 -h 00:0e:e8:1e:02:dd -D 192.168.1.%ip% -m 00:00:00:00:00:00 -P payload.txt -M FF:FF:FF:FF:FF:FF -H 00:0e:e8:1e:02:dd @echo 192.168.1.%ip% goto loop :end

局限性:如果局域网交换机设置了IP+MAC绑定,或者对IP、MAC进行了过滤,则此方法不能奏效。

IPTABLE

linux 的防火墙 主要在网络层. 针对 TCP/IP 数据包 实施过滤和限制.

iptables 采用了 表和链 的分层结构.

iptables常见的控制类型如下:

ACCEPT:允许数据包通过。 DROP:直接丢弃数据包,不给出任何回应信息。 REJECT:拒绝数据包通过,必要时会给数据包发送端一个响应信息。 LOG:在/var/log/messages文件中记录日志信息,然后将数据包传递给下一条规则。

iptables规则的匹配条件 1、通用匹配 通用匹配也称常规匹配,这种匹配方式可以独立使用,不依赖其他条件或扩展模块,常见的通用匹配包括协议匹配,地址匹配,网络接口匹配。 1)协议pipe 编写iptables规则时使用“-p 协议名”的形式指定,用来检查数据包所使用的网络协议,如:tcp、udp、icmp等。 列如:编写iptables拒绝通过icmp的数据包。 root@localhost /#iptables -A INPUT -p icmp -j DROP 2)地址匹配 编写iptables规则时使用“-s源地址”或“-d目标地址”的形式指定,用来检查数据包的源地址或目标地址。 列如:编写iptables拒绝转发192.168.1.0/24到202.106.123.0/24的数据包。 root@localhost /#iptables -A FORWARD -s 192.168.1.0/24 -d 202.106.123.0/24 -j DROP 3)网络接口匹配 编写iptables规则时使用“-i 接口名”和“-o 接口名”的形式,用于检查数据包从防火墙的哪一个接口进入或发出,分别对应入站网卡(–in-interface),出站网卡(–out-interface)。 列如:拒绝从防火墙的eth1网卡接口ping防火墙主机。 root@localhost /#iptables -A INPUT -i eth1 -p icmp -j DROP

网络地址转换 (NAT)

把内部的私有 IP 地址 .翻译成 圈圈唯一的公网 IP地址.

NAT 的实现方式: 三种

  1. 静态地址转换: 2某个私有 ip 只能转出固定的某个公有 ip

  2. 动态地址转换

  3. 端口多路复用

Mac 路由表分析

netstat -nr

主机要发送数据, 就要参考路由表.

  1. 主机先分析自己的路由表.
    • 同一网段: 直接通过局域网功能.传送数据.
    • 不同网段:
      1. 先分析自己路由表 是否有手动设备了路由
        1. 没发现设置.把数据包发到默认路由器(网关)
  2. 数据包给网关之后,后面任务都交给路由器来做.

路由器收到数据包, 分析自己的路由表. 继续传输数据.

路由器功能: 不同网段之间传递数据包.并管理路由

默认网关: 负责 所有非本网络内的数据包的传送

局域网 通过 路由器 接入 互联网. 互联网的通信. 是经过很多路由器接力的. 途中路由器的故障,可能导致互联网访问异常.

netstat -nr 显示路由表: 路由表中可以找到网关.网关是通向互联网的出口.

Winipcfg