私のルールは次のとおりです。
iptables -A INPUT -m mac --mac-source 40:e2:30:f4:00:04 -m time --timestart 18:00:00 --timestop 23:59:59 --weekdays Mon,Tue,Wed,Thu,Fri -j ACCEPT
iptables -A INPUT -m mac --mac-source 40:e2:30:f4:00:04 -j DROP
20.04(iptables v1.8.4)では機能しません。助けが必要ですか?
PD:ここ著者は、iptablesがシステム時間ではなくUTCを読むためだと言います。ルールを試してみましたが、やはり動作しません。
iptables -A INPUT -m mac --mac-source 40:e2:30:f4:00:04 --match time --weekdays Mon,Tue,Wed,Thu,Fri --timestart $(date -u -d @$(date "+%s" -d "18:00") +%H:%M) --timestop $(date -u -d @$(date "+%s" -d "23:00") +%H:%M) -j ACCEPT
iptables -A INPUT -m mac --mac-source 40:e2:30:f4:00:04 -j DROP
PD:私--kerneltz
(ここ説明)パラメータにはUTCではなくカーネルタイムゾーンを使用しているが、両方ではありません(そして--kerneltz 非常に落胆)
マイコンピュータ時間:
timedatectl status
Local time: sáb 2021-08-28 12:42:49 -05
Universal time: sáb 2021-08-28 17:42:49 UTC
RTC time: sáb 2021-08-28 17:42:48
Time zone: America/Bogota (-05, -0500)
System clock synchronized: yes
NTP service: active
RTC in local TZ: no
date --utc
sáb 28 ago 2021 17:44:23 UTC
他のアプリケーションに影響を与える可能性があるため、私のコンピュータにUTC時間を設定しないことが解決策である場合は感謝します。
他のルールは機能しません(maclist.txtコンテンツ40:e2:30:f4:00:04など)。
current_time=$(date +%H) # actual 13
allowed_time=08
denied_time=12
maclist=$(awk '{print $1}' maclist.txt)
if [ \( $current_time -ge $allowed_time -a $current_time -lt $denied_time \) ]; then
for mac in $(echo -e "$maclist"); do
iptables -I INPUT -m mac --mac-source $mac -j NFLOG --nflog-prefix 'macblock'
iptables -I INPUT -m mac --mac-source $mac -j ACCEPT
iptables -I FORWARD -m mac --mac-source $mac -j NFLOG --nflog-prefix 'macblock'
iptables -I FORWARD -m mac --mac-source $mac -j ACCEPT
done
fi
出るsudo iptables -nvL
0 0 NFLOG tcp -- eno2 * 0.0.0.0/0 0.0.0.0/0 MAC 40:e2:30:f4:00:04 TIME from 08:00:00 to 17:59:59 UTC nflog-prefix blockports
0 0 DROP tcp -- eno2 * 0.0.0.0/0 0.0.0.0/0 MAC 40:e2:30:f4:00:04 TIME from 08:00:00 to 17:59:59 UTC
0 0 ACCEPT tcp -- eno2 * 0.0.0.0/0 0.0.0.0/0 MAC 40:e2:30:f4:00:04