--utc 选项在 iptables 中不起作用

--utc 选项在 iptables 中不起作用

我正在使用 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

相关内容