У меня есть сомнения, как 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
.