You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

关于nftables配置时间段限制特定IP端口访问的技术咨询

nftables配置:按时间段限制特定IP端口的访问权限

嗨,我完全理解你的需求——要允许特定IP(x.w.y.z)的80端口流量仅在指定时间段内通过,而且你提到nftables官方关于匹配规则的文档确实不够详尽,这确实挺让人挠头的。下面直接给你可行的配置方案,一步到位解决问题:

核心配置规则

你可以通过nftables的time匹配模块,结合IP、端口过滤来实现这个需求。假设你使用的是默认的inet filter表(如果是单独的IPv4场景,把inet换成ip即可),配置示例如下:

# 若已有对应表和链,可跳过表链创建部分
table inet filter {
  chain input {
    type filter hook input priority 0; policy drop;
    # 推荐添加:允许已建立/相关连接的流量,避免中断正常会话
    ct state established,related accept
    # 关键规则:仅允许x.w.y.z的80端口流量在指定时间段内通过
    ip saddr x.w.y.z tcp dport 80 ct state new \
    time datetime start "2024-01-12 22:55:00" end "2024-01-15 17:30:00" \
    accept
  }
}

规则细节解释

  • ip saddr x.w.y.z:精准匹配源IP为x.w.y.z的流量
  • tcp dport 80:筛选目标端口为80的TCP协议流量
  • ct state new:仅对新发起的连接生效(已建立的会话如果需要保留,记得加上前面的established,related规则)
  • time datetime start ... end ...:核心的时间范围匹配,注意日期格式要写成YYYY-MM-DD HH:MM:SS,nftables会自动识别这个格式,默认使用系统本地时区

生效与保存

  • 临时生效:直接用命令行执行 nft -f /path/to/your/config.nft 加载配置
  • 永久生效:把配置写入/etc/nftables.conf(不同发行版路径可能略有差异),然后重启nftables服务:systemctl restart nftables

确实,nftables官方文档在这类具体场景的匹配规则上说明得不够直观,很多实用细节需要结合社区经验来梳理,希望这个配置能帮你顺利实现需求。

备注:内容来源于stack exchange,提问作者mah454

火山引擎 最新活动