网络检查工具

By | 2021年12月31日

1 tcpdump

1.1 案例

# 查看发往 ens192 网卡、且udp端口为 514 的数据
tcpdump -i ens192 udp port 514
tcpdump -i ens192 udp port 514 -vv -X

# 过滤找含有 ASA 的数据
tcpdump -i ens192 udp and port 514 -vv -X | grep ASA

# -X 参数:把协议头和内容显示出来,会以ASCII和16进制的形式显示(16进制实际是编码的二进制数据,编码可以是UTF-8、GBK等)
# -w 参数:后面跟文件路径,表示将结果写到文档里,控制台会打印总数量
# -vv 参数:输出详细的报文信息
# -i 参数:指定监听的网络接口
tcpdump -i ens192 udp port 514 -vv -X -w /home/demo.txt 
tcpdump -i ens192 udp and host 192.168.1.157 and port 514 -vv -X -w demo.txt
tcpdump -i ens192 udp and host 192.168.1.157 and port 514 -vv -X > mysyslog.txt

如果 CentOS7 上装了 Logstash 接收数据,记得关闭防火墙 firewalld 或放通 514 端口,否则数据会收不到!

1.2 模拟发送和接收 GBK、UTF-8 编码的数据

模拟发送一条 UDP 的 GBK 数据,这里我用的是 XShell(SSH 客户端)。
修改方式如下,选择一个会话并打开属性对话框:

将”终端”里的UTF-8默认编码改成GBK:

用此GBK会话连到跳板机 192.168.2.192 ,连上去后向服务器 192.168.3.220 发送 GBK 数据:

# 使用 nc 命令向地址为 192.168.3.220 的 514 端口上发送一条带有中文的 UDP 消息
echo "思科ASA" | nc -4u  192.168.3.220 514

服务器 192.168.3.220 收到数据:

从上图可以看到,Ascii 区域对于中文是用”…”这种表示的,并不会出现 “\\xB7\\xFE\\xCE” 这种十六进制的。在左侧区域才会显示编码的十六进制数据,具体是用什么编码的可以使用在线工具检测下,这样的工具似乎不多,我这里推荐这个:the-x ,它可以自动识别十六进制字符串是用的什么编码,并转换成中文,如图:

另外,如果我们想模拟发送 UTF-8的中文数据,改下XShell会话的编码就可以了,如图:

2 nc 命令

yum install nc

# 检查 1194 的 udp 端口是否开放
nc -vuz 185.255.130.172 1194

# 向 192.168.3.220 的 514 端口上发送一条带有中文的 UDP 消息
# -4 参数:只使用IPv4
# -u 参数:使用UDP替代默认的TCP
echo "思科ASA" | nc -4u  192.168.3.220 514

# 模拟发送一条天融信的Syslog(UDP)策略命中日志到 192.168.3.220 的 514 端口上
echo "id=tos time=\"2020-06-11 11:59:29\" fw=NLP-2F-TG4324-1  pri=6 type=ac  recorder=FW-NAT src=192.168.1.85 dst=192.168.1.255 sport=54915 dport=54915 smac=9c:b6:d0:c2:35:cd dmac=ff:ff:ff:ff:ff:ff proto=udp indev=null outdev=null user= rule=accept connid=295682 parentid=0 dpiid=0 natid=0 policyid=9645 msg=\"null\"\r\n" | nc -4u  192.168.3.220 514

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注