IPsec VPN数据传输过程
以下是一个数据包经IPsecVPN隧 道的传送过程(如ICMP包),由左边的VPN保护子网内的PC机向右边VPN保护子网内的PC机传送数据时,左边PC发送的数据由左VPN eth1内口接收后发现需要经过隧道,则把数据交由左ipsec0口加密(tunnel, ESP或AH),加完密后再由左eth0外口发送到右VPN的eth0外口,右eth0外口收到数据发现需要解密,则由ipsec0口解完密后交由右 eth1内口进行转发或由本机接收。
加密 =========================》 解密
host:eth1===ipsec0<==>eth0==============eth0<=====>ipsec0 ===eth1:host
解密 《========================= 加密
eth0为外口(协商口),eth1为内口。
下面可以在已经建立好Ipsec VPN隧道后进行截包分析,由于隧道模式已经把原来的源IP和目的IP加密无法查看到具体IP地址ESP的真实走向,而传输模式的源和目的IP是不会被加密的,所以可以传输模式隧道为例。
环境拓扑:
PC1 VPN1 ============VPN2 PC2
184.0.0.2 184.0.0.1(eth1)/192.168.95.164(eth0) 192.168.95.195(eth0)/185.0.0.1(eth1) 185.0.0.2
现从PC1向PC2发送ICMP ping包,在VPN1上tcpdump抓包如下,为观看直观特附加一加截图。
/tos/bin/ipsec-cmds# tcpdump -ni any host 184.0.0.2
tcpdump:WARNING: Promiscuous mode not supported on the "any" device
tcpdump:verbose output suppressed, use -v or -vv for full protocol decode
listeningon any, link-type LINUX_SLL (Linux cooked), capture size 68 bytes
11:26:39.649389R@eth1 IP 184.0.0.2 > 185.0.0.2: ICMP echo request,id 512, seq 12039, length 40 (左VPN内口eth1收到PC1 ICMP明文包)
11:26:39.649411X@ipsec0 IP 184.0.0.2 > 185.0.0.2: ICMP echorequest, id 512, seq 12039, length 40 (查找route后交由ipsec0加密)
11:26:39.649485X@eth0 IP 184.0.0.2 > 185.0.0.2:ESP(spi=0x30f18c51,seq=0xc38), length 76
(加完密后的ESP包由外口eth0发出)
11:26:39.656606R@eth0 IP 185.0.0.2 > 184.0.0.2:ESP(spi=0xa6e0f4f2,seq=0xb36), length 76
(右VPN外口eth0收到ESP加密包)
11:26:39.656606R@ipsec0 IP 185.0.0.2 > 184.0.0.2: ICMP echo reply,id 512, seq 12039, length 40(由右ipsec0解密)
11:26:39.656672X@eth1 IP 185.0.0.2 > 184.0.0.2: ICMP echo reply, id512, seq 12039, length 40
(解密后的明文交由内口eth0发送给PC2,此时一个方向的ICMP包传送完成)
11:26:40.649357R@eth1 IP 184.0.0.2 > 185.0.0.2: ICMP echo request, id 512, seq 12295,length 40(PC2回应ICMP给PC1,此过程与上面分析过程类似。)
新闻热点
疑难解答