tcpdump

TSval是本端填写的时间戳,
TSecr是回显给对端的时间戳。
两端必须都分别在SYN包和SYN|ACK包中开启时间戳选项,时间戳功能才能生效。

1. tcpdump相关操作

1.1. 绑定相应的网络接口设备

    tcpdump -i eth0 

1.2. 通过端口抓包
    tcpdump tcp port 9132
    
1.3. 通过目的端口抓包
    tcpdump tcp dst port 9132    

1.4. 通过协议抓包
    tcpdump tcp -i eth0 
    
1.5. 保存到抓包报文
    tcpdump tcp -i eth0 -w ./log.cap
    
1.6. 抓取报文后隔指定的时间保存一次     
    tcpdump -i eth3 -s0 -G 60 -Z root -w %Y_%m%d_%H%M%S.pcap
    这里解释下-G选项 后面接时间 单位为秒 本例中的时间为60秒

2. 执行tcpdump运行的脚本    
2.1 由于ppp-gprs这种网络接口,只有在拨号成功的情况下才会生成网络设备,而tcpdump在执行时如果没有检测到设备会退出,所以添加如下的脚本进行网络设备判断,网络设备存在时就执行tcpdump。runTcpdump.sh默认执行的网络接口是eth0,如果要换成其它网络接口(如ppp0),只需在执行脚本时传递对应的网络接口参数即可,如./runTcpdump ppp0

#! /bin/sh

interface="eth0"

if [ $1 ]; then
        interface=$1
fi

echo "select interface "${interface}

while true
do
        #ifconfig -a | grep ${interface}
        ifconfig | grep ${interface}
        if [ $? == 0 ]; then
                echo "start tcpdump "${interface}
                #/mnt/ext/tcpdump -i ${interface} host 58.251.74.100 -w /mnt/data/ppp0.cap        
                #/mnt/ext/tcpdump -i ${interface} host 58.251.74.100 -w /mnt/data/tcpdump/ppp0.cap                   
                #/mnt/ext/tcpdump -i ${interface} host 58.251.74.100 -G 20 -w /mnt/data/tcpdump/%Y-%m-%d_%H-%M-%S.cap
                /mnt/ext/tcpdump -i ${interface} host 58.251.74.100 -G 20 -w /mnt/data/tcpdump/%Y-%m-%d_%H-%M-%S.cap 
                break
        fi                                
                                          
        #echo "ppp0 device was not fount!"
        usleep 10000
done	

    
2.2. 有些设备是动态生成的,而tcpdump在没有执行相应的接口设备时会默认选择第一个(我的就默认绑定了eth0),但是像第7这种设备(ppp0)是实时的,监听的设备会导致一些信息丢失,所以不能绑定接口,只能绑定协议或端口,另外在执行绑定前必须关闭所有的接口设备,这样在执行如下的命令时就会监听所有的接口

[root@mike /mnt/app]#/mnt/ext/tcpdump host 58.251.74.100 -w /mnt/data/tcpdump/gprs2.cap
tcpdump: listening on any, link-type LINUX_SLL (Linux cooked), capture size 65535 bytes0 packets captured	

使用tcpdump -D查看接口设备,

使用tcpdump -i any 可以监控所有的设备

3. KeepAlive
3.1 KeepAlive都支持哪些设置项
    a. KeepAlive默认情况下是关闭的,可以被上层应用开启和关闭
    b. tcp_keepalive_time: KeepAlive的空闲时长,或者说每次正常发送心跳的周期,默认值为7200s(2小时)
    c. tcp_keepalive_intvl: KeepAlive探测包的发送间隔,默认值为75s
    d. tcp_keepalive_probes: 在tcp_keepalive_time之后,没有接收到对方确认,继续发送保活探测包次数,默认值为9(次)

3.2 在Linux内核设置, KeepAlive默认不是开启的,如果想使用KeepAlive,需要在你的应用中设置SO_KEEPALIVE才可以生效, 查看当前的配置
    a. cat /proc/sys/net/ipv4/tcp_keepalive_time
    b. cat /proc/sys/net/ipv4/tcp_keepalive_intvl
    c. cat /proc/sys/net/ipv4/tcp_keepalive_probes

3.3 在Linux中我们可以通过修改 /etc/sysctl.conf 的全局配置
    a. net.ipv4.tcp_keepalive_time=7200
    b. net.ipv4.tcp_keepalive_intvl=75
    c. net.ipv4.tcp_keepalive_probes=9
    
3.4 添加上面的配置后输入 sysctl -p 使其生效,你可以使用 sysctl -a | grep keepalive 命令来查看当前的默认配置

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值