广播分两种:255.255.255.255,称为全广播,由于会被路由器禁止传输,所以也叫本地网络广播。
另一种是所有的主机为都为1的广播,例如:192.168.1.255/24
这种广播路由器默认是可以转发的。            
ip directed-broadcast
或者是no ip directed-broadcast ,就是允许或者禁止这种广播的转发。                       
 
no   ip   directed-broadcast的一个作用是防止恶意攻击。一个身在千里之外的攻击者,可以向该网的directed-broadcast地址发包,到了该网段的边界路由器这儿,如果这个路由器没有关闭该选项,则会向该段内所有的其它主机(或者网络设备)发送该包,造成大量的流量。  
  directed-broadcast
现在基本上所有的路由器都是默认关闭的。
 
R1(S1/0)---------(S2/0)R2(E0/0)----------(E0/0)R3
<!--[if !vml]-->

<!--[endif]-->
Figure 8 IP直播
    默认情况下,广播数据报文是没法穿过路由器传播的,有这么一些应用,向处在一个广播域的全部主机发送广播,但是发送者并不处在这个广播域内,这个时候,希望有一种能够使用单播数据报文穿过路由网络,但到达目的网络时,以广播方式发放(这种应用一般可视为有 去无回,大都是无连接的UDP应用)。IP直播在IOS里面广泛被支持。
    以下配置,R3就是处在接收广播域内的一个成员,而R1是发送者,而R2正是一个将单播转换为广播的路由器。使用OSPF保持路由连通,环回口在这个实验并无实质应用,OSPF的数据报为组播224.0.0.5,在debug调试时,最好过滤掉输出这类信息。
R1
!
hostname R1
!
interface Loopback0
ip address 1.1.1.1 255.255.255.0
 ip ospf network point-to-point
!
interface Serial1/0
 ip address 12.1.1.1 255.255.255.0
 clockrate 64000
!
router ospf 10
 router-id 1.1.1.1
network 0.0.0.0 255.255.255.255 area 0
!
R2
!
hostname R2
!
interface Loopback0
 ip address 2.2.2.2 255.255.255.0
 ip ospf network point-to-point
!
interface Ethernet0/0
 ip address 10.1.1.2 255.255.255.0
!
interface Serial2/0
 ip address 12.1.1.2 255.255.255.0
!
router ospf 10
 router-id 2.2.2.2
 network 0.0.0.0 255.255.255.255 area 0
!
R3
!
hostname R3
!
interface Loopback0
 ip address 3.3.3.3 255.255.255.0
 ip ospf network point-to-point
!
interface Ethernet0/0
 ip address 10.1.1.3 255.255.255.0
!
router ospf 10
 router-id 3.3.3.3
 network 0.0.0.0 255.255.255.255 area 0
!
监视和测试配置
路由器可以转发主机位全为1的目的地址,对于中间路由器,转发数据报文,只检查网络位,因此这些数据报文在到达最后1跳时,转发和普通数据包无异:
1)打开R2R3的调试开关
R2(config)#access-list 101 permit icmp any any
R2#debug ip packet 101
IP packet debugging is on for access list 101
 
以上定义访问列表的意义是调试只输出ICMP相关数据包,这样可以避免OSPFhello干扰。
 
2)打开R2Ethernet0/0接口转发直播
 
R2(config)#int e0/0
R2(config-if)#ip directed-broadcast
 
3)在R1 ping 10.1.1.0/24目标网段,发起一个主机位全为1的地址。
 
R1#ping 10.1.1.255
 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.255, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 8/20/32 ms
 
4)查看R2的调试输出,关键部分为粗体显示:
 
*Jul 25 20:57:03.879: IP: s=12.1.1.1 (Serial2/0), d=10.1.1.255 (Ethernet0/0), g=255.255.255.255, len 100, forward directed broadcast
*Jul 25 20:57:03.879: IP: s=12.1.1.1 (Serial2/0), d=10.1.1.255 (Ethernet0/0), len 100, rcvd 5
*Jul 25 20:57:03.879: IP: s=12.1.1.2 (local), d=12.1.1.1 (Serial2/0), len 100, sending
*Jul 25 20:57:03.899: IP: s=12.1.1.1 (Serial2/0), d=10.1.1.255 (Ethernet0/0), g=255.255.255.255, len 100, forward directed broadcast
(以下重复,输出省略)
 
可见R2已经将数据报文转为广播方式,向10.1.1.0/24所在接口转发。
 
5)查看R3调试输出,关键部分为粗体显示:
 
*Jul 25 20:59:06.079: IP: s=12.1.1.1 (Ethernet0/0), d=255.255.255.255, len 100, rcvd 2
*Jul 25 20:59:06.079: IP: s=10.1.1.3 (local), d=12.1.1.1 (Ethernet0/0), len 100, sending
*Jul 25 20:59:06.099: IP: s=12.1.1.1 (Ethernet0/0), d=255.255.255.255, len 100, rcvd 2
*Jul 25 20:59:06.099: IP: s=10.1.1.3 (local), d=12.1.1.1 (Ethernet0/0), len 100, sending
*Jul 25 20:59:06.119: IP: s=12.1.1.1 (Ethernet0/0), d=255.255.255.255, len 100, rcvd 2
*Jul 25 20:59:06.119: IP: s=10.1.1.3 (local), d=12.1.1.1 (Ethernet0/0), len 100, sending
*Jul 25 20:59:06.139: IP: s=12.1.1.1 (Ethernet0/0), d=255.255.255.255, len 100, rcvd 2
*Jul 25 20:59:06.139: IP: s=10.1.1.3 (local), d=12.1.1.1 (Ethernet0/0), len 100, sending
*Jul 25 20:59:06.167: IP: s=12.1.1.1 (Ethernet0/0), d=255.255.255.255, len 100, rcvd 2
*Jul 25 20:59:06.167: IP: s=10.1.1.3 (local), d=12.1.1.1 (Ethernet0/0), len 100, sending
 
    R3收到广播数据报文,并以单播方式应答ping
 
6)关闭R2Ethernet0/0接口直播
 
R2(config)#interface ethernet 0/0
R2(config-if)#no ip directed-broadcast
 
7)R1再次发起ping 目标网段10.1.1.0/24,主机位为全为1
R1#ping 10.1.1.255
 
Type escape sequence to abort.
Sending 5, 100-byte ICMP Echos to 10.1.1.255, timeout is 2 seconds:
!!!!!
Success rate is 100 percent (5/5), round-trip min/avg/max = 20/20/20 ms
 
8)查看R2调试输出:
 
*Jul 25 21:05:22.071: IP: s=12.1.1.1 (Serial2/0), d=10.1.1.255 (Ethernet0/0), len 100, rcvd 5
*Jul 25 21:05:22.071: IP: s=12.1.1.2 (local), d=12.1.1.1 (Serial2/0), len 100, sending
*Jul 25 21:05:22.099: IP: s=12.1.1.1 (Serial2/0), d=10.1.1.255 (Ethernet0/0), len 100, rcvd 5
*Jul 25 21:05:22.099: IP: s=12.1.1.2 (local), d=12.1.1.1 (Serial2/0), len 100, sending
*Jul 25 21:05:22.131: IP: s=12.1.1.1 (Serial2/0), d=10.1.1.255 (Ethernet0/0), len 100, rcvd 5
*Jul 25 21:05:22.131: IP: s=12.1.1.2 (local), d=12.1.1.1 (Serial2/0), len 100, sending
*Jul 25 21:05:22.159: IP: s=12.1.1.1 (Serial2/0), d=10.1.1.255 (Ethernet0/0), len 100, rcvd 5
*Jul 25 21:05:22.159: IP: s=12.1.1.2 (local), d=12.1.1.1 (Serial2/0), len 100, sending
*Jul 25 21:05:22.191: IP: s=12.1.1.1 (Serial2/0), d=10.1.1.255 (Ethernet0/0), len 100, rcvd 5
*Jul 25 21:05:22.191: IP: s=12.1.1.2 (local), d=12.1.1.1 (Serial2/0), len 100, sending
 
只有单播的应答,R2使用接收直播的接口应答(即S2/0),R2没有再将直播数据报转换成广播方式向Ethernet0/0发送。
 
    9)查看R3调试输出:
 
    R3没有调试输出,原因如上,R2关闭直播后,在对应接口,不再转换直播地址为广播发送。
 
默认情况下,router不转发目的地址255.255.255.255的广播,但是转发子网内广播,比如192.168.1.255
为什么要关闭这个功能,举例说明:routerA连接一个外网,内网中有500台主机(ip172.16.0.0/23),如果有一个Hack发出一个Ping包,目的IP172.16.255.255,而源IP地址是另外一个主机的IP地址,如果router将这个数据包转发进内网,会发生什么?——内网的500台主机都会向那个可怜的主机返回的Ping的响应,这个是什么攻击就不用我再说下去了吧