如何在Linux中限制网络访问 Linux iptables用户过滤

发布时间 - 2025-09-01 00:00:00    点击率:
答案:iptables是Linux中基于表、链、规则的防火墙工具,通过命令如-A、-I、-D管理流量规则,支持按IP、端口、协议限制访问,规则按顺序匹配且需保存以防重启丢失,firewalld为其上层更易用的管理工具。

简单来说,在Linux中限制网络访问,你可以使用

iptables
,它就像一个防火墙,允许你设置规则来控制哪些流量可以进出你的系统。
iptables
非常强大,但配置起来也比较复杂,需要理解它的基本概念和命令。

解决方案

  1. 理解

    iptables
    的基本结构:
    iptables
    基于表(tables)、链(chains)和规则(rules)工作。

    • 表 (Tables):
      filter
      (默认,用于过滤数据包),
      nat
      (用于网络地址转换),
      mangle
      (用于修改数据包),
      raw
      (用于配置数据包的连接追踪)。
    • 链 (Chains):
      INPUT
      (进入系统的数据包),
      OUTPUT
      (离开系统的数据包),
      FORWARD
      (通过系统转发的数据包)。
    • 规则 (Rules): 定义如何处理符合特定条件的数据包(例如,允许或拒绝)。
  2. 常用的

    iptables
    命令:

    • iptables -L
      : 列出当前规则。
    • iptables -A
      : 在链的末尾添加一条规则。
    • iptables -I
      : 在链的开头插入一条规则。
    • iptables -D
      : 删除一条规则。
    • iptables -F
      : 清空链中的所有规则。
    • iptables -P
      : 设置链的默认策略(例如,
      ACCEPT
      DROP
      )。
    • iptables -S
      : 以更易读的格式显示规则。
  3. 限制特定 IP 地址访问:

    # 阻止来自 IP 地址 192.168.1.100 的所有流量
    iptables -A INPUT -s 192.168.1.100 -j DROP
    
    # 允许来自 IP 地址 192.168.1.100 的 SSH 访问 (端口 22)
    iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT
  4. 限制特定端口的访问:

    # 阻止所有到端口 80 (HTTP) 的流量
    iptables -A INPUT -p tcp --dport 80 -j DROP
    
    # 允许到端口 80 的流量来自特定 IP 地址
    iptables -A INPUT -s 192.168.1.100 -p tcp --dport 80 -j ACCEPT
  5. 限制特定协议的访问:

    # 阻止所有 ICMP (ping) 流量
    iptables -A INPUT -p icmp -j DROP
  6. 保存

    iptables
    规则:
    iptables
    规则在系统重启后会丢失,你需要保存它们。

    • Debian/Ubuntu:
      sudo apt-get install iptables-persistent
      , 然后
      sudo netfilter-persistent save
    • CentOS/RHEL:
      sudo yum install iptables-services
      , 然后
      sudo systemctl enable iptables
      ,
      sudo systemctl start iptables
      , 最后
      sudo iptables-save > /etc/sysconfig/iptables

iptables
规则的优先级是怎样的?

iptables
按照规则在链中的顺序进行匹配。第一条匹配的规则生效,后续规则不再评估。因此,规则的顺序至关重要。通常,更具体的规则(例如,允许特定 IP 地址访问特定端口)应该放在更通用的规则(例如,阻止所有访问)之前。

如何查看和删除特定的

iptables
规则?

查看规则,可以使用

iptables -L -n -v
-n
选项会显示 IP 地址和端口号,而不是尝试进行 DNS 反向查找,
-v
显示更详细的信息。

删除规则,最简单的方法是使用行号:

  1. iptables -L --line-numbers
    : 显示规则及其对应的行号。
  2. iptables -D INPUT <行号>
    : 删除
    INPUT
    链中指定行号的规则。

例如,要删除

INPUT
链中行号为 3 的规则,可以执行
iptables -D INPUT 3

iptables
firewalld
有什么区别,我应该选择哪个?

iptables
是一个更底层的防火墙管理工具,而
firewalld
是一个更高级的、动态的防火墙管理器,它构建在
iptables
之上。
firewalld
使用区域 (zones) 的概念来管理规则,更容易配置和管理。

选择哪个取决于你的需求和偏好。如果你需要精细的控制和对

iptables
有深入的了解,那么
iptables
可能更适合你。如果你需要一个更易于使用和管理的防火墙,那么
firewalld
可能是更好的选择。许多现代 Linux 发行版默认使用
firewalld

实际上,即使你使用

firewalld
,它最终也会生成
iptables
规则。
firewalld
只是提供了一个更友好的接口来管理这些规则。


# linux  # centos  # ubuntu  # 工具  # ai  # 区别  # Filter  # 接口  # input  # debian  # 行号  # 数据包  # 是一个  # 如果你  # 链中  # 重启  # 放在  # 也会  # 就像  # 你可以 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: HTML透明颜色代码在Angular里怎么设置_Angular透明颜色使用指南【详解】  php嵌入式断网后怎么恢复_php检测网络重连并恢复硬件控制【操作】  如何在沈阳梯子盘古建站优化SEO排名与功能模块?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  html5如何实现懒加载图片_ intersectionobserver api用法【教程】  Laravel如何实现全文搜索_Laravel Scout集成Algolia或Meilisearch教程  想要更高端的建设网站,这些原则一定要坚持!  大连企业网站制作公司,大连2025企业社保缴费网上缴费流程?  如何快速搭建自助建站会员专属系统?  Laravel如何实现事件和监听器?(Event & Listener实战)  如何在IIS中新建站点并配置端口与物理路径?  如何快速登录WAP自助建站平台?  什么是javascript作用域_全局和局部作用域有什么区别?  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势  网站制作大概多少钱一个,做一个平台网站大概多少钱?  焦点电影公司作品,电影焦点结局是什么?  logo在线制作免费网站在线制作好吗,DW网页制作时,如何在网页标题前加上logo?  C语言设计一个闪闪的圣诞树  Laravel如何与Pusher实现实时通信?(WebSocket示例)  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  Laravel如何实现本地化和多语言支持?(i18n教程)  奇安信“盘古石”团队突破 iOS 26.1 提权  关于BootStrap modal 在IOS9中不能弹出的解决方法(IOS 9 bootstrap modal ios 9 noticework)  什么是JavaScript解构赋值_解构赋值有哪些实用技巧  图片制作网站免费软件,有没有免费的网站或软件可以将图片批量转为A4大小的pdf?  成都品牌网站制作公司,成都营业执照年报网上怎么办理?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  如何在香港免费服务器上快速搭建网站?  深圳网站制作平台,深圳市做网站好的公司有哪些?  Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程  如何基于云服务器快速搭建个人网站?  打开php文件提示内存不足_怎么调整php内存限制【解决方案】  如何在HTML表单中获取用户输入并结合JavaScript动态控制复利计算循环  node.js报错:Cannot find module &#39;ejs&#39;的解决办法  如何挑选最适合建站的高性能VPS主机?  HTML 中如何正确使用模板变量为元素的 name 属性赋值  Laravel如何集成Inertia.js与Vue/React?(安装配置)  Laravel如何发送邮件和通知_Laravel邮件与通知系统发送步骤  合肥制作网站的公司有哪些,合肥聚美网络科技有限公司介绍?  如何批量查询域名的建站时间记录?  Laravel如何处理JSON字段_Eloquent原生JSON字段类型操作教程  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  制作企业网站建设方案,怎样建设一个公司网站?  如何在万网主机上快速搭建网站?  Claude怎样写约束型提示词_Claude约束提示词写法【教程】  Laravel怎么实现模型属性的自动加密  Laravel路由怎么定义_Laravel核心路由系统完全入门指南  Win11应用商店下载慢怎么办 Win11更改DNS提速下载【修复】