我有一个服务器汇集来自其他各种服务器的日志。 它大多工作得很好,但不时(重启后,但不是所有的重启),它将决定各种UDP“连接”处于一个奇怪的状态,并拒绝传入的数据包。
事情是,这是没有道理的,因为处理UDP时没有“连接”!
下面是我的防火墙日志中显示的一个例子:
Shorewall:loc2fw:REJECT:IN=eth0 OUT= MAC=/*snip*/ SRC=10.xx4 DST=10.yy14 LEN=159 TOS=0x00 PREC=0x00 TTL=254 ID=37407 PROTO=UDP SPT=514 DPT=514 LEN=139
在运行命令sudo conntrack -D -p udp从conntrack清除所有UDP“连接”后,下面是一个日志,显示来自同一主机的传入消息:
Shorewall:loc_dnat:REDIRECT:IN=eth0 OUT= MAC=/*snip*/ SRC=10.xx4 DST=10.yy14 LEN=201 TOS=0x00 PREC=0x00 TTL=254 ID=50542 PROTO=UDP SPT=514 DPT=514 LEN=181
在我运行-D命令之前,这个主机显示的是conntrack:
udp 17 29 src=10.xx4 dst=10.yy14 sport=514 dport=514 [UNREPLIED] src=10.yy14 dst=10.xx4 sport=514 dport=514 mark=0 use=1
以下是我的Shorewallconfiguration中对此端口的相关位:
#ACTION SOURCE DEST PROTO DPT SECTION NEW REDIRECT:info loc 5000 tcp,udp 514 ACCEPT:info loc $FW tcp,udp 5000
为了完整起见,下面是iptables中的结果链(这是在conntrack -D -p udp命令运行之后,防火墙已经正确接受数据包一段时间之后):
Chain loc2fw (1 references) pkts bytes target prot opt in out source destination 16328 1648K ACCEPT all -- * * 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED 6428 386K ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 icmptype 8 /* Ping */ 1 64 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:22 /* SSH */ 18 1080 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:80 /* HTTP */ 0 0 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:5000 ctorigdstport 514 12M 6677M ACCEPT udp -- * * 0.0.0.0/0 0.0.0.0/0 udp dpt:5000 ctorigdstport 514 0 0 ~log0 tcp -- * * 0.0.0.0/0 0.0.0.0/0 [goto] tcp dpt:5000 0 0 ~log0 udp -- * * 0.0.0.0/0 0.0.0.0/0 [goto] udp dpt:5000 52 3088 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:9200 126M 32G Reject all -- * * 0.0.0.0/0 0.0.0.0/0 126M 32G LOG all -- * * 0.0.0.0/0 0.0.0.0/0 LOG flags 0 level 6 prefix "Shorewall:loc2fw:REJECT:" 126M 32G reject all -- * * 0.0.0.0/0 0.0.0.0/0 [goto]
正如你所看到的,我正在使用REDIRECT规则来接受514端口上的连接,并把它们发送到5000端口,在那里我的日志聚合器监听(在防火墙中更容易完成这个任务,非特权用户打开特权端口)。
我不明白为什么UDP“连接”似乎陷入了这种被默认策略拒绝的奇怪状态; 我这样说是因为它们在conntrack中显示得相当清楚,并且从那里删除它似乎“重置”了所有内容,并让消息再次stream入我的日志聚合器。 在这一点上,我看到的唯一select是设置cron在重新启动后立即运行我的conntrack命令,但是我更愿意理解为什么会发生这种情况并修复原因,而不是仅实施此解决方法。