在centos框中,我喜欢转储tcp连接 – 我想看看服务器是否尝试向某个IP发送请求.通常tcpdump可以解决问题 – 但是没有安装tcpdump,并且安装软件不是一种选择(因为公司政策).我担心netstat不会向我显示单个请求.
所以我想知道我还有其他选择.我在服务器上有root访问权限.
解决方法
你肯定有
python吗?
from socket import * from struct import unpack import sys INTERFACE = "eth0" TARGET = "8.8.8.8" if __name__ == "__main__": sock = socket(AF_PACKET,SOCK_DGRAM,0x0800) sock.bind((INTERFACE,0x0800)) while True: data = sock.recvfrom(1500,0)[0] ip = inet_ntop(AF_INET,data[12:16]) if ip == TARGET: print "GOT TARGET" sys.exit(1)
这将以“GOT TARGET”退出,提供返回匹配的IP地址.由于TCP必须在握手期间发回一些东西,因此应该从特定目标地址捕获任何内容.它不关心协议是TCP还是UDP(我也不检查).
别忘了改变TARGET和INTERFACE.