从iptables复制Python UDP syslog服务器中的日志条目

从iptables复制Python UDP syslog服务器中的日志条目,python,udp,iptables,rsyslog,Python,Udp,Iptables,Rsyslog,我用Python实现了一个基本的远程syslog服务器,代码如下: self.UDPsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) self.UDPsock.bind(self.addr) self.UDPsock.settimeout(1) while self.carryOn: try: data = self.UDPsock.recv(self.buf) print data except socke

我用Python实现了一个基本的远程syslog服务器,代码如下:

self.UDPsock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
self.UDPsock.bind(self.addr)
self.UDPsock.settimeout(1)
while self.carryOn:
  try: 
    data = self.UDPsock.recv(self.buf)
    print data
  except socket.timeout:
    pass
我用它从我的路由器(Tomato Shibby v108)接收日志消息。我对截取手机上的信息特别感兴趣,这样我就可以创建一个“状态”脚本

我最初尝试了以下iptable条目进行测试:

iptables -I FORWARD -s 192.168.2.54 -m limit --limit 1/minute --limit-burst 1 -j LOG
这项工作如预期,我将收到如下消息:

<12>Apr  1 21:51:47 kernel: IN=br0 OUT=ppp0 SRC=192.168.2.54 DST=17.158.8.77 LEN=70 TOS=0x00 PREC=0x00 TTL=63 ID=23055 DF PROTO=TCP SPT=60779 DPT=993 WINDOW=65535 RES=0x00 ACK PSH URGP=0 MARK=0x5
这里的问题是,我现在每个日志条目收到>50条消息,全部是表单的副本:

<12>Apr  1 19:54:00 kernel: IN=br0 OUT= MAC=DEST_MAC:SOURCE_MAC:08:00 SRC=192.168.2.54 DST=224.0.0.251 LEN=101 TOS=0x00 PREC=0x00 TTL=255 ID=36530 PROTO=UDP SPT=5353 DPT=5353 LEN=81 
它将重复的数量减少到4:

<12>Apr  2 12:21:55 kernel: IN=br0 OUT= MAC=DEST_MAC:SOURCE_MAC:08:00 SRC=192.168.2.54 DST=224.0.0.251 LEN=101 TOS=0x00 PREC=0x00 TTL=255 ID=1384 PROTO=UDP SPT=5353 DPT=5353 LEN=81 
apr2 12:21:55内核:IN=br0 OUT=MAC=DEST\u MAC:SOURCE\u MAC:08:00 SRC=192.168.2.54 DST=224.0.0.251 LEN=101 TOS=0x00 PREC=0x00 TTL=255 ID=1384 PROTO=UDP SPT=5353 DPT=5353 LEN=81
有人能解释为什么会发生这种情况吗?我想是某种“有趣”的角色导致了这一切。我是否可以更改iptable条目或Python程序,使每个消息只接收一个日志条目

iptables -t raw -A PREROUTING -m mac --mac-source SOURCE_MAC -m limit --limit 1/minute --limit-burst 1 -j LOG
<12>Apr  2 12:21:55 kernel: IN=br0 OUT= MAC=DEST_MAC:SOURCE_MAC:08:00 SRC=192.168.2.54 DST=224.0.0.251 LEN=101 TOS=0x00 PREC=0x00 TTL=255 ID=1384 PROTO=UDP SPT=5353 DPT=5353 LEN=81