我怀疑 iptables 在时区改变时如何不断改变 iptables 中的信息。我使用的是 iptables sv 1.4.8
我已经封锁了一个 IP,详情如下
# date
Thu Jun 6 12:46:42 IST 2013
#iptables -A INPUT -s 10.0.3.128 -m time --datestart 2013-6-6T12:0:00 --datestop 2013-6-6T13:0:00 -j DROP
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 10.0.3.128 anywhere TIME starting from 2013-06-06 12:00:00 until date 2013-06-06 13:00:00
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
但在我改变时区之后,以下事情自动发生了。
时区更改后++++++++++++++++++++++++
#date
Thu Jun 6 15:17:48 HKT 2013
# iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 10.0.3.128 anywhere TIME starting from 2013-06-06 14:30:00 until date 2013-06-06 15:30:00
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
#
规则中的时间值发生了变化。它随着时区的变化而变化。iptables 会跟踪时区。
请解释一下。
答案1
它没有跟踪任何东西。它将字符串转换2013-6-6T12:0:00
为2013-6-6T13:0:00
原始time_t
当您添加规则时,使用您当时设置的时区。然后,当您稍后运行时-L
,它会使用新的当前时区将该时间戳转换回可读字符串。
初始命令中隐含的时区信息在执行完成后立即丢失,并且每次执行都会iptables -L
尝试通过将当前时区应用于来重建原始时间字符串time_t
。