您的位置:首页 > 运维架构 > Linux

andlinux中运行IOL如何抓取路由器之间的通信数据

2013-01-11 15:48 369 查看
andlinux是一种运行在windows之上的ubuntu版本,基础是coLinux,比在虚拟机中运行linux效率更高。该系统默认使用TAP虚拟网卡与宿主和Internet通信,方式不同于bridge,在windows上可以通过SSH 192.168.11.150访问linux shell。

为了使IOL实例间的数据包能被我们捕获,可以使用程序changL2.py和py2net.py两个程序:

changL2.py作用是把标准输入中的pcap文件输出流中的第21-24字节的linktype

改为指定的协议如:ETH、HDLC、PPP、FR、或者你可以手动指定DLT(DataLinkType)类型,随后判断每个包的长度,然后重新输出到标准输出。

这样可以被另一个包捕获程序从标准输入读取,还可以直接使用重定向符写入到文件中。

py2net.py用于将实例通信绑定到指定的网络接口之上:loopback、tap、eth等。

显然最简单的方法就是将实例流量绑定到andlinux中的eth1中,这样,我们在windows中就可以运行wireshark等工作直接抓取。

但是缺点很明显,这种方式只能抓取eth类型封装。

如果实例间运行的是串行协议,这样无法正确抓取。

*注意:转发路由器实例串行接口封装时,重定向符只能为单向( 0 > tap0 ),否则将导致转发环回,出现大量重复的数据包,cpu使用上升。

此时我们可以使用tshark或者tcpdump程序抓取虚拟网卡的流量,然后输出到标准输出,通过管道让changL2.py程序做一个封装格式转化,然后重定向写入到一个文件中。然后我们可以打开该cap文件进行分析。

流程:(以抓取路由器间HDLC串行协议数据为例)

1、使用py2net将IOL路由器实例接口间流量引入tap接口;

2、运行

#tcpdump -i tap0 -w - | ./changL2.py hdlc >test.cap

,执行后,标准的串行pcap封装格式写入到了cap文件。

如果实例间为eth显然没有必要运行changL2。

实验目录如下:



NETMAP文件内容:

1:0/0 2:0/0 1023:0

1:0/1 2:0/1

1:0/2 3:0/2

IFMAP 文件内容:

0>tap0

py2net.py读取NETMAP和IFMAP文件内容,创建socket,发送数据帧。

参考命令如下:

//新建一个虚拟网卡tap0

tunctl -t tap0

//开启并设置tap0为混杂模式,以便于接口不属于本网卡的数据包

ifconfig tap0 promisc up

//开启实验

./start.sh

//开启程序将上述实验中实例接口的流量发送到tap0

./py2net.py

//捕获并写入文件

tcpdump -i tap0 -w - | ./changL2.py hdlc > test.cap


可以通过本地在windows命令行上运行ssh 并将ssh登录由的标准输出通过管道重定向到wireshark程序,这样可以使用wireshark在windows下即可看到动态的路由器实例间的通信过程,参考命令如下:

ssh -l root 192.168.11.150 "cd iou/ospf-traffic-share;tcpdump -i tap0 -w - | ../changeL2.py hdlc" | "D:\Program Files\WiresharkPortable\App\Wireshark\wireshark.exe" -k -i -

以root用户登录andlinux,执行命令切换到实验目录,开始抓包,并重定向到转换程序changeL2使封装格式更改为hdlc,并输出到标准输出中,再次重定向到windows下的wireshark程序,这样即可动态的查看通信过程。

注意:使用了便携版的wireshark(portable)时,重定向应该使用\App\Wireshark目录下的wireshark.exe,不应该使用WiresharkPortable.exe。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐