iptables详解

1、介绍

iptables 是一个在 Linux 系统上用于配置和管理防火墙规则的工具。它允许系统管理员定义数据包的过滤规则、网络地址转换(NAT)规则和数据包的网络地址和端口的转发规则。iptables 提供了非常灵活和强大的功能,可以用于保护网络安全、实现网络地址转换、限制网络流量等。

2、命令

2.1 命令格式

iptables命令的一般格式如下:

iptables [OPTIONS] -t table -A chain [MATCH] -j target

其中OPTIONS 是一些可选的命令选项,用于指定一些特定的操作或参数。

  • -t table 指定要操作的表(如filter、nat、mangle等)。
  • -A chain 指定要追加规则的链。
  • [MATCH] 是一些匹配条件,用于匹配数据包的特定属性。
  • -j target 指定规则的目标动作,即数据包匹配成功后要执行的操作

2.2 四张表

filter 表:

  • 用于过滤数据包,即根据规则决定是否允许数据包通过防火墙。
  • 可以配置规则来允许或拒绝数据包的传输,实现基本的网络访问控制。
  • 通常用于实现基本的网络安全功能,如阻止特定IP地址的访问、允许特定端口的访问等

nat 表(Network Address Translation,网络地址转换):

  • 用于修改数据包的源或目标地址,实现网络地址转换功能。
  • 可以将私有网络内部的IP地址转换为公网IP地址(源地址转换),也可以将目标地址转换为内部的IP地址(目标地址转换)。
  • 通常用于实现内网访问外网的功能,或者实现端口映射等。

mangle 表:

  • 用于对数据包进行特定的修改,如修改TTL(Time to Live)字段、标记数据包等。
  • 可以在数据包经过防火墙时对其进行特定的处理,而不是简单地允许或拒绝。
  • 通常用于实现一些高级的网络功能,如负载均衡、QoS(Quality of Service)等。

raw 表:

  • iptables中的一个特殊表,用于在数据包进入连接追踪之前进行处理。它提供了一种在数据包进行连接追踪之前处理数据包的机制,可以用于一些特定的场景和需求

2.3 五个链

  • PREROUTING(路由前):这个链用于在数据包进入路由流程之前进行处理。它通常用于目的地址转换(DestinationNAT)或者对数据包进行标记。举例来说,当数据包到达网络接口时,可以使用PREROUTING链将数据包的目的地址进行修改,以便将数据包重定向到不同的目标主机。
  • INPUT(数据包流入口)这个链用于处理发往本地系统的数据包。当数据包的目的地址是本地系统,它将经过INPUT链进行处理。举例来说,当一台服务器收到一个SSH连接请求时,数据包将经过INPUT链进行处理,以确定是否允许该连接进入系统。
  • FORWARD(转发管卡)这个链用于处理通过系统进行转发的数据包。当数据包的目的地址不是本地系统,且需要通过系统进行转发时,它将经过FORWARD链进行处理。举例来说,当一台路由器收到一个数据包,需要将它转发到另一个网络时,数据包将经过FORWARD链进行处理。
  • OUTPUT(数据包出口)这个链用于处理从本地系统发出的数据包。当数据包由本地系统发出时,它将经过OUTPUT链进行处理。举例来说,当本地系统发出一个HTTP请求时,数据包将经过OUTPUT链进行处理,以确定是否允许该请求离开系统。
  • POSTROUTING(路由后)这个链用于在数据包离开系统之前进行处理。它通常用于源地址转换(SourceNAT)或者对数据包进行标记。举例来说,当数据包即将离开系统的网络接口时,可以使用POSTROUTING链将数据包的源地址进行修改,以便隐藏真实的源地址或者实现负载均衡。

2.4 iptables命令选项

  • -A, --append chain rule-specification [options]: 将规则追加到指定的链(chain)中。
  • -C, --check chain: 检查规则是否存在。
  • -D, --delete chain [rulenum]: 从指定的链中删除匹配的规则,如果指定了rulenum,则删除指定编号的规则。
  • -I, --insert chain [rulenum] rule-specification [options]: 在指定的链中插入规则,如果指定了rulenum,则插入到指定编号的位置。
  • -R, --replace chain rulenum rule-specification [options]: 替换指定链中指定编号的规则。
  • -L, --list [chain [rulenum]]: 列出指定链中的规则,如果没有指定链名,则列出所有链中的规则。
  • -S, --list-rules [chain [rulenum]]: 打印指定链中的规则,如果没有指定链名,则打印所有链中的规则。
  • -F, --flush [chain]: 清空指定链中的所有规则,如果没有指定链名,则清空所有链中的规则。
  • -Z, --zero [chain [rulenum]]: 将指定链中的数据包和字节计数器归零,如果没有指定链名,则归零所有链中的计数器。
  • -N, --new chain: 创建一个新的用户自定义链。
  • -X, --delete-chain [chain]: 删除一个用户自定义链,如果没有指定链名,则删除所有用户自定义链。
  • -P, --policy chain target [options]: 修改指定链的默认策略。
  • -E, --rename-chain old-chain new-chain: 修改用户自定义链的名称,并移动任何引用该链的地方。
  • -p, --protocol proto: 指定协议,可以是协议号或协议名。
  • -s, --source address[/mask][...]: 指定源地址。
  • -d, --destination address[/mask][...]: 指定目标地址。
  • -i, --in-interface input name[+]: 指定输入网络接口名。
  • -j, --jump target: 指定规则的目标动作。
  • -g, --goto chain: 跳转到指定链,没有返回。
  • -m, --match match: 扩展匹配(可以加载扩展)。
  • -n, --numeric: 使用数字形式输出地址和端口。
  • -o, --out-interface output name[+]: 指定输出网络接口名。
  • -t, --table table: 指定要操作的表,默认为filter。
  • -v, --verbose: 显示详细信息。
  • -w, --wait [seconds]: 在放弃之前尝试获取xtables锁的最长等待时间。
  • -W, --wait-interval [usecs]: 尝试获取xtables锁的等待时间,默认为1秒。
  • -x, --exact: 显示精确值。
  • -f, --fragment: 仅匹配第二个或更多的分片。
  • -V, --version: 打印软件包版本号。

3、实际操作

3.1 禁止访问eth0网卡的22端口
iptables -A INPUT -i eth0 -p tcp --dport 22 -j DROP
  • -A  指定操作INPUT链
  • -i  指定网络接口为eth0
  • -p  指定tcp协议
  • --dport  指定端口
  • -j  指定DROP丢弃包

ssh使用在22端口进行监听:

添加该规则后使用PC就无法连接到终端的22端口:

使用以下命令删除该规则:

iptables -D INPUT -i eth0 -p tcp --dport 8080 -j DROP
3.2 指定使用wlan0访问固定IP
iptables -t nat -A POSTROUTING -d 172.20.247.121 -o wlan0 -j MASQUERADE
  • -t  指定nat表
  • -A  指定链POSTROUTING
  • -d  指定IP 172.20.247.121
  • -o  wlan0 指定输出wlan0网口
  • -j  MASQUERADE修改数据包的源地址
3.3 查看当前nat表详细规则
iptables -t nat -nvL
  • -t  指定nat表
  • -nvL:
  • -n:表示显示IP地址和端口号时不进行反向解析,显示数字格式。
  • -v:显示详细信息,包括数据包和字节计数。
  • -L:表示列出当前nat表中的规则。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/243463.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python数据科学视频讲解:Python序列的概念及通用操作

2.10 Python序列的概念及通用操作 视频为《Python数据科学应用从入门到精通》张甜 杨维忠 清华大学出版社一书的随书赠送视频讲解2.10节内容。本书已正式出版上市,当当、京东、淘宝等平台热销中,搜索书名即可。内容涵盖数据科学应用的全流程,…

Python 自动化之收发邮件(一)

imapclient / smtplib 收发邮件 文章目录 imapclient / smtplib 收发邮件前言一、基本内容二、发送邮件1.整体代码 三、获取邮件1.整体代码 总结 前言 简单给大家写个如何用Python进行发邮件和查看邮件教程,希望对各位有所帮助。 一、基本内容 本文主要分为两部分…

为什么FPGA是战略芯片?

FPGA(Field Programmable Gate Array)是在PAL(可编程阵列逻辑)、GAL(通用阵列逻辑)等可编程器件的基础上进一步发展的产物,它是作为一种半定制电路而出现的,既解决了定制电路的不足&…

c++知识总结

一 细碎知识 1.27 # 1.27.1 # pragma once 参考 C++学习笔记之pragma once的理解_pragma once什么意思-CSDN博客https://blog.csdn.net/lynnlee_36/article/details/105322937作用 保证只被编译一次,和#ifndef,#define,#endif功能相同 1.27.2 #if defined(__cplusplus…

1688按关键字搜索工厂数据,商品详情页数据的采集

公共参数 名称类型必须描述keyString是调用key(必须以GET方式拼接在URL中,点击获取测试key和secret)secretString是调用密钥api_nameString是API接口名称(包括在请求地址中)[item_search,item_get,item_search_shop等]cacheStrin…

十个Vue3实用但是冷门的API

文章目录 一、前言二、readonly三、shallowRef四、shallowReactive五、toRef & toRefs5.1、 toRef5.2、toRefs 六、toRaw & markRaw & unref6.1、toRaw6.2、markRaw6.3、unref 七、effectScope & onScopeDispose7.1、收集副作用7.2、全局状态管理 八、provide …

如何防止订单重复支付的?

如图是一个简化的下单流程,首先是提交订单,然后是支付。 支付的话,一般是走支付网关(支付中心),然后支付中心与第三方支付渠道(微信、支付宝、银联)交互。 支付成功以后&#xff0c…

2023-03-27 在vmware 下安装 TrueNAS

Download TrueNAS SCALE - Data Storage Software 安装 TrueNAS 的,官网推荐系统要求: 处理器 记忆 启动装置 贮存 2 核 Intel 64 位或 AMD x86_64 处理器 8 GB 内存 16 GB SSD 引导设备 用于单个存储池的两个相同大小的设备 等待系统安装完成 esxi搭建true…

OpenHarmony应用开发——实现Toast提示功能-鸿蒙物联网应用开发-HarmonyOs应用开发

一、前言 本文我们将实现Toast样式的功能,以便于和用户进行简单、基本的信息交互。需要注意的是,本专栏(OpenHarmony应用开发)不阐述UI设计内容,而主要介绍大家开发中常遇到、常使用的功能问题,以及在物联网…

华为OD试题五(数列描述、矩阵最大值、数据分类)

1. 数列描述 示例代码&#xff1a; # 核心 从第一项 推 第N项目 # 第一项 a0 1 # 推到 第N项 N 4 def fun(a0):# 计算每一项的具体值result left 0cursor 0while cursor < len(a0):if a0[cursor] ! a0[left]:count cursor -leftresult "{}{}".format(str(…

H5开发App应用程序的常见问题以及解决方案

Hello大家好&#xff0c;我是咕噜铁蛋&#xff0c;天冷记得添衣&#xff0c;ok话说回来H5开发成为了一种流行的方式来构建跨平台的移动应用程序。然而&#xff0c;在H5开发App应用程序的过程中&#xff0c;我们常常会遇到一些问题&#xff0c;这些问题可能涉及性能、兼容性、用…

分层解耦—三层架构

目录 三层架构 分层解耦 IOC&DI 三层架构 在进行程序设计以及程序开发时&#xff0c;尽可能让每一个接口、类、方法的职责更单一些&#xff08;单一职责原则&#xff09;。 单一职责原则&#xff1a;一个类或一个方法&#xff0c;就只做一件事情&#xff0c;只管一块功…

MySQL主从复制与读写分离实验

实验一、MySQL主从服务器搭建 实验前准备 Master服务器&#xff1a;192.168.188.14 mysql5.7 Slave服务器1&#xff1a;192.168.188.15 mysql5.7 Slave服务器2&#xff1a;192.168.188.16 mysql5.7 关闭虚拟机防火墙 systemctl stop firewalld setenforce 0 主服务器准…

线性回归问题

目录 一、线性回归关键思想 1、线性模型 2、基础优化算法 二、线性回归的从零开始实现 1、生成数据集 2、读取数据集 3、初始化模型参数 4、定义模型 5、定义损失函数 6、定义优化算法 7、训练 三、线性回归的简洁实现 1、生成数据集 2、读取数据集 3、定义模型…

Java集合大总结——Map的简单使用

现实需求 现实生活与开发中&#xff0c;我们常会看到这样的一类集合&#xff1a;用户ID与账户信息、学生姓名与考试成绩、IP地址与主机名等&#xff0c;这种一一对应的关系&#xff0c;就称作映射。Java提供了专门的集合框架用来存储这种映射关系的对象&#xff0c;即java.uti…

Cobalt Strike四种提权方法

简介 Cobalt Strike是一款基于java的渗透测试神器&#xff0c;常被业界人称为CS神器。自3.0以后已经不在使用Metasploit框架而作为一个独立的平台使用&#xff0c;分为客户端与服务端&#xff0c;服务端是一个&#xff0c;客户端可以有多个&#xff0c;非常适合团队协同作战&a…

【UML】组件图中的供需接口与面向对象中的接口

UML&#xff08;统一建模语言&#xff09;组件图中的“供接口”&#xff08;Provided Interface&#xff09;和“需接口”&#xff08;Required Interface&#xff09;与面向对象编程中的接口概念有关联&#xff0c;但它们在应用上有所区别。 下面解释两者的关系&#xff1a; …

Restormer技术点小结

1. 解决cnn的不足&#xff1a; 1&#xff09;感受野有限 2&#xff09;输入尺寸固定 2. 解决transform的不足&#xff1a; 1&#xff09;计算复杂度随着空间分辨率的增加而二次增长 3. 优势结构&#xff1a;MDTA(Multi-Dconv Head Transposed Attention)和GDFN( Gated-Dco…

Redis新数据类型-Bitmaps

目录 Bitmaps 简介 命令 1. setbit (1) 格式 (2) 实例 2. getbit (1) 格式 (2) 实例 3. bitcount (1) 格式 (2) 实例 4. bitop (1) 格式 (2) 实例 我的其他博客 Bitmaps 简介 Bitmaps 是 Redis 的一种新数据类型&#xff0c;它是一种用于存储位信息的数据结构&…

Nodejs 第二十二章(脚手架)

编写自己的脚手架 那什么是脚手架&#xff1f; 例如:vue-cli Angular CLI Create React App 编写自己的脚手架是指创建一个定制化的工具&#xff0c;用于快速生成项目的基础结构和代码文件&#xff0c;以及提供一些常用的命令和功能。通过编写自己的脚手架&#xff0c;你可以…