sendip是linux下一个比较好用的发包软件,简单记录一下它的用法
下载源码,编译安装后,可通过 man sendip,查看具体选项介绍,其中说明sendip支持的协议包括:ipv4 ipv6 icmp tcp udp bgp rip ntp。下面发送几个简单的报文:
1、发送ICMPv4报文,-p icmp 将默认发送ICMP echo request报文,-v选项可在终端打印发送的报文
sendip -v -p ipv4 -is 192.168.2.129 -id 192.168.2.1 -p icmp -d 0xcafecafecafe 192.168.2.1
2、发送ICMPv6报文
sendip -p ipv6 -6s 2::3 -p icmp -d 0xcafecafecafe 2::1
3、发送IPv4 UDP报文,发送TCP只需把udp替换为tcp即可
sendip -p ipv4 -is 192.168.2.129 -p udp -d 0xcafe 192.168.2.1
4、发送IPv6 UDP报文,同样发送TCP仅需把udp替换为tcp
sendip -p ipv6 -6s 2::3 -p udp -d 0xcafe 2::1
从以上命令可见sendip的命令结构是采用的模块组合方式来构造报文,简单易懂,每种协议下都提供选项可对一些字段进行设置。另外报文的源IP不必是网卡上存在的IP,可以根据个人需求任意构造。而且本文中提到的第一个报文,你甚至可以这样构造 sendip -p ipv4 -is 192.168.2.129 -id 192.168.2.1 -p icmp -d 0xcafecafecafe 192.168.3.1 ,如此一来第一步在主机上路由时将按照192.168.3.1进行路由,而实际上报文的目的地址是192.168.2.1。
注:sendip的源码存在一些bug,例如编译不通过,或者编译安装后发送IPv6下的udp/tcp报文存在checksum错误,鄙人进行了一些修正,修正版可到此处下载 http://download.csdn.net/detail/alading2009/7811431