我只想允许从 07:00 到 15:00 访问交通。
由于我还有其他 iptables 规则,所以我想使用否定。以下示例中使用否定是否满足我对时间段的要求?
iptables -A MYCHAIN -m time ! --timestart 07:00 --timestop 15:00 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
答案1
您的否定规则可能会起作用,但您可能希望考虑将其作为两个规则分开执行,而不是使用单个否定规则(因为有时它们在调试规则集时会出现问题或造成混淆)。
您可能需要考虑将其拆分为两个规则,而不是使用一个否定规则:
iptables -A MYCHAIN -m time --timestart 00:00 --timestop 07:00 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
iptables -A MYCHAIN -m time --timestart 15:00 --timestop 23:59 --days Mon,Tue,Wed,Thu,Fri,Sat,Sun -j DROP
也就是说,我们也可以大大降低规则的复杂性。默认值为days
“每天”,因此您不必定义它,timestart
默认为 00:00,timestop
默认为 23:59,因此这两个规则可以重写并简化为:
iptables -A MYCHAIN -m time --timestop 07:00 -j DROP
iptables -A MYCHAIN -m time --timestart 15:00 -j DROP
或者,我们可以这样做逆改为这样做:
iptables -A MYCHAIN -m time --timestart 07:00 --timestop 15:00 -j ACCEPT
iptables -A MYCHAIN -j DROP
... 然后,任何超出此范围的时间都会触发 DROP 规则。唯一可能不理想的原因是,如果您还有其他需要遵守的访问控制规则,在这种情况下,请使用我之前提出的建议。