如何在Linux利用Iptables实现特定时间段禁止外网访问

阿晨姑娘_7844

阿晨姑娘_7844

2026-04-01

637人浏览

原创

如何在linux利用iptables实现特定时间段禁止外网访问

iptables 如何用 time 模块限制访问时段

iptables 本身不直接支持时间控制,必须加载 xt_time 模块(内核模块),否则所有带 --timestart 的规则都会报错 iptables: No chain/target/match by that name。确认模块已加载是第一步,不是可选项。

实操建议:

  • 运行 lsmod | grep xt_time,无输出就说明没加载;执行 sudo modprobe xt_time 临时启用
  • 要永久生效,把 xt_time 加进 /etc/modules(Debian/Ubuntu)或 /etc/sysconfig/modules/iptables.modules(RHEL/CentOS)
  • xt_time 默认只支持 UTC 时间,本地时区需换算——比如你在北京想封 22:00–06:00,得写成 --timestart 14:00 --timestop 22:00(UTC+8)

封禁外网访问的典型规则写法

目标是“禁止本机主动连外网”,不是封入站流量,所以规则必须加在 OUTPUT 链,且匹配协议和目标地址范围。只封 INPUT 或只封 192.168.0.0/16 这类内网段毫无意义。

实操建议:

  • 基础命令:sudo iptables -A OUTPUT -m time --timestart 22:00 --timestop 06:00 --kerneltz -d ! 10.0.0.0/8 -j DROP
  • --kerneltz 是关键:告诉模块用系统时区而非 UTC,避免手动换算出错
  • -d ! 10.0.0.0/8 表示“非内网地址”,可根据实际调整为 ! 172.16.0.0/12 或 ! 192.168.0.0/16,但别漏掉 ! 否则会封死自己
  • 务必加 -m time,不能写成 -m timer 或 -m datetime——那些不存在

规则顺序和持久化容易踩的坑

iptables 规则按顺序匹配,一旦某条规则放行了流量,后面的 DROP 就无效。常见错误是把 time 限制规则插在默认 ACCEPT 规则之后,结果形同虚设。

Linux installer
Linux installer

先解析安全源,运行本地CLI安装、启动、卸载Linux桌面应用。用户请求时使用。

下载

实操建议:

  • 用 sudo iptables -L OUTPUT --line-numbers 查看当前 OUTPUT 链顺序,确保 time 规则在最前面(或至少在任何 ACCEPT 之前)
  • 重启后规则消失?别用 iptables-save > /etc/iptables/rules.v4 硬写——某些发行版(如 Ubuntu 22.04+)默认用 nftables 后端,iptables 命令只是兼容层,保存需用 sudo netfilter-persistent save
  • 测试时先用 -C 检查规则是否存在:sudo iptables -C OUTPUT -m time --timestart 22:00 --timestop 06:00 --kerneltz -d ! 10.0.0.0/8 -j DROP,避免重复添加

time 模块的边界行为和替代思路

xt_time 对跨日时段(如 22:00–06:00)的支持是可靠的,但它不处理“每周几”或“节假日”,也不支持毫秒级精度。如果你需要周一到周五封网、周末放开,就得靠外部调度(比如 cron + iptables 启停)。

实操建议:

  • 跨日写法合法:--timestart 22:00 --timestop 06:00 会被正确解析,不用拆成两条规则
  • 如果发现规则“有时生效有时不”,先检查系统时间是否同步:timedatectl status,NTP 失效会导致 time 模块判断失准
  • 真要按星期控制?写两个脚本:disable-internet.sh 和 enable-internet.sh,用 crontab -e 在对应时间点调用 sudo iptables -D 或 -A

time 模块看似简单,但时区、链位置、模块加载、持久化这四点只要漏一个,规则就静默失效——它不会报错,只会让你以为“好像没封住”。

相关文章

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

linux

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
Java 网络安全
Java 网络安全

本专题聚焦 Java 在网络安全与加密通信中的应用,系统讲解常见加密算法(MD5、SHA、AES、RSA)、数字签名、HTTPS证书配置、令牌认证(JWT、OAuth2)及常见安全漏洞防护(XSS、SQL注入、CSRF)。通过实战项目(如安全登录系统、加密文件传输工具),帮助学习者掌握 Java 安全开发与加密技术的实战能力。

2025.10.13

4625

12

PHP 安全与防护
PHP 安全与防护

本专题聚焦于PHP开发中的安全问题与防御措施,详细讲解SQL注入、XSS攻击、CSRF攻击、文件包含漏洞等常见安全风险及其修复方法。通过结合实际案例,帮助开发者理解漏洞成因,掌握输入验证、会话安全、加密存储与安全编码规范,全面提升PHP网站的安全防护水平。

2025.11.04

395

21

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3990

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3413

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2573

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6250

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5882

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3433

8

linux查看ip命令
linux查看ip命令

本专题为大家提供linux查看ip命令相关文章内容,感兴趣的朋友可以免费下载体验试试。

2023.07.20

2925

4

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
Buffalo框架快速入门指南
Buffalo框架快速入门指南

共0课时 | 0人学习

Valgrind支持平台说明
Valgrind支持平台说明

共0课时 | 0人学习