iptables:如何给ip接入一个tcp服务一个小时?

我想给一个小时的tcp端口3306的IP访问。 之后,所有连接必须closures。

我如何添加一个超时到以下expression式?

iptables -A INPUT -m state --state NEW -m tcp -p tcp --source 1.2.3.4 --dport 3306 -j ACCEPT 

我相信(我从来没有使用它,并通过iptables的手册页find它)–timestart和–timestop将完成这一点。

iptables -A INPUT -m state --state NEW,ESTABLISHED,RELATED -m tcp -p tcp --source 1.2.3.4 --dport 3306 --timestart 13:00 --timestop 14:00 -j ACCEPT

将允许您在1至2pm之间。

如果分组到达时间/date在给定范围内,则匹配。 所有选项都是兼容的。

–timestart

只有在“值”之后才匹配(包含,格式:HH:MM;默认00:00)。

–timestop

只有在“值”之前匹配(包含,格式:HH:MM;默认23:59)。

不需要支持iptables时间模块的替代解决scheme。

 ( iptables -I INPUT -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT ; sleep 1h; iptables -D INPUT -p tcp -s 1.2.3.4 --dport 3306 -j ACCEPT ) & 

这将不会在一小时后closures连接,它只会返回到允许连接之前的任何策略。 可以设置为中断和丢弃/拒绝不再允许的stream量,除非您有STATE ESTABLISHED ALLOW事先。