我正在使用 iptables v1.4.7/8。
我使用了以下命令
iptables -A INPUT -s 10.0.4.247 -m time --utc --datestart 2013-5-23T7 --datestop 2013-5-23T9 -j DROP
我的 UTC 时间
date -u
2013 年 5 月 23 日星期四 07:49:29 UTC
iptables -L
Chain INPUT (policy ACCEPT)
target prot opt source destination
DROP all -- 10.0.4.247 anywhere TIME starting from 2013-05-23 07:00:00 until date 2013-05-23 09:00:00 UTC
Chain FORWARD (policy ACCEPT)
target prot opt source destination
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
但是我如何才能在执行此命令后从 IP 10.0.4.247 ping 通,并且在阻塞时间内执行。
还有一件事是我的当地时间
date
Thu May 23 15:37:54 IST 2013
当我发出以下命令时,它能够在我指定的时间内阻止流量- 世界标准时间。
iptables -A INPUT -s 10.0.4.247 -m time --utc --datestart 2013-5-23T7 --datestop 2013-5-23T15:38 -j DROP
在规定时间内成功阻断了流量。
但我希望它检查 UTC 时间而不是当地时间。如何做到这一点。
请给出一些答案。
答案1
--utc 标志似乎考虑了硬件时钟的 tz.tz_minuteswest。我需要进一步研究,但实际上似乎是这样的
# hwclock --systz --debug
hwclock from util-linux-ng 2.17.2
Last drift adjustment done at 1396716845 seconds after 1969
Last calibration done at 1396716845 seconds after 1969
Hardware clock is on UTC time
Assuming hardware clock is kept in UTC time.
Current system time: 1414455370 = 2014/10/28 00:16:10
Calling settimeofday:
UTC: 2014/10/28 00:16:10
tv.tv_sec = 1414455370, tv.tv_usec = 262714
tz.tz_minuteswest = 300
对我有用的是计算 UTC 减去 tz.tz_minuteswest 来创建我的规则
# date
Mon Oct 27 19:07:28 CDT 2014
# iptables -A cphulk -s 10.4.80.2/32 -m state --state NEW -m time --datestop 2014-10-27T19:08:55 --utc -j DROP
# iptables -vnL cphulk
Chain cphulk (1 references)
pkts bytes target prot opt in out source destination
130 7360 DROP all -- * * 10.4.80.2 0.0.0.0/0 state NEW TIME until date 2014-10-27 19:08:55 UTC
# date
Mon Oct 27 19:09:07 CDT 2014
# iptables -vnL cphulk
Chain cphulk (1 references)
pkts bytes target prot opt in out source destination
130 7360 DROP all -- * * 10.4.80.2 0.0.0.0/0 state NEW TIME until date 2014-10-27 19:08:55 UTC
我假设它使用 tz.tz_minutewest 来跟上夏令时。注意从 300 到 360 的变化
# date 11030544
Mon Nov 3 05:44:00 CST 2014
# hwclock --systz --debug | grep tz_minuteswest
tz.tz_minuteswest = 360