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