如何在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


相关推荐: ,南京靠谱的征婚网站?  PHP的CURL方法curl_setopt()函数案例介绍(抓取网页,POST数据)  Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】  Laravel如何使用Facades(门面)及其工作原理_Laravel门面模式与底层机制  Laravel如何实现图片防盗链功能_Laravel中间件验证Referer来源请求【方案】  UC浏览器如何设置启动页 UC浏览器启动页设置方法  Laravel队列由Redis驱动怎么配置_Laravel Redis队列使用教程  焦点电影公司作品,电影焦点结局是什么?  高防服务器如何保障网站安全无虞?  C++时间戳转换成日期时间的步骤和示例代码  东莞专业网站制作公司有哪些,东莞招聘网站哪个好?  详解jQuery中的事件  Laravel如何生成URL和重定向?(路由助手函数)  如何在宝塔面板创建新站点?  Laravel如何实现登录错误次数限制_Laravel自带LoginThrottles限流配置【方法】  nginx修改上传文件大小限制的方法  Windows10如何更改计算机工作组_Win10系统属性修改Workgroup  phpredis提高消息队列的实时性方法(推荐)  如何快速搭建高效WAP手机网站吸引移动用户?  如何自定义建站之星网站的导航菜单样式?  Laravel怎么返回JSON格式数据_Laravel API资源Response响应格式化【技巧】  如何在自有机房高效搭建专业网站?  Laravel Docker环境搭建教程_Laravel Sail使用指南  Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)  Laravel请求验证怎么写_Laravel Validator自定义表单验证规则教程  音响网站制作视频教程,隆霸音响官方网站?  家族网站制作贴纸教程视频,用豆子做粘帖画怎么制作?  Win11怎么关闭透明效果_Windows11辅助功能视觉效果设置  Laravel如何生成API文档?(Swagger/OpenAPI教程)  网页设计与网站制作内容,怎样注册网站?  laravel怎么为API路由添加签名中间件保护_laravel API路由签名中间件保护方法  在线教育网站制作平台,山西立德教育官网?  Laravel怎么上传文件_Laravel图片上传及存储配置  手机网站制作与建设方案,手机网站如何建设?  百度浏览器网页无法复制文字怎么办 百度浏览器复制修复  网站设计制作书签怎么做,怎样将网页添加到书签/主页书签/桌面?  南京网站制作费用,南京远驱官方网站?  Laravel API资源类怎么用_Laravel API Resource数据转换  Java遍历集合的三种方式  JS中使用new Date(str)创建时间对象不兼容firefox和ie的解决方法(两种)  如何获取上海专业网站定制建站电话?  JavaScript如何实现类型判断_typeof和instanceof有什么区别  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  ChatGPT 4.0官网入口地址 ChatGPT在线体验官网  laravel怎么配置和使用PHP-FPM来优化性能_laravel PHP-FPM配置与性能优化方法  济南网站建设制作公司,室内设计网站一般都有哪些功能?  Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】  Laravel项目如何进行性能优化_Laravel应用性能分析与优化技巧大全  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)