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表中的规则。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

微服务实战系列之MQ

前言 从今天起,席卷北国的雪,持续了一整天,北京也不例外。这场意外的寒潮,把整个冬天渲染的格外cool。当然你可以在外面打雪仗、堆雪人、拉雪橇,也可以静坐屋内,来一场围炉煮茶的party。此刻,冬…

KUKA机器人如何隐藏程序或程序段?

KUKA机器人如何隐藏程序或程序段? 如下图所示,新建一个示例程序进行说明, 如下图所示,如果红框中的动作指令不想让别人看到,想隐藏起来,如何做到? 如下图所示,在想要隐藏的程序或程序段的前后,分别添加 ;fold 和 endfold指令(这里要注意是英文状态下的输入法), 如…

安卓跳转页面闪屏,方法里需要传View 参数

/*** 跳转到首页的公共方法* */public void ToIndexpage(View v){//设置跳转的页面Intent intent new Intent(this, MainActivity.class);//实行跳转startActivity(intent);}

JS基础之闭包

JS基础之闭包 闭包闭包的目的闭包的优缺点 闭包 官方定义: 闭包是能够访问到自由变量的函数。 自由变量:能够在函数中使用,但是不是函数的参数,也不是内部的局部变量。 示例: var a 1; function foo(){console.log(a…

【Jmeter】Jmeter基础5-Jmeter元件介绍之线程(用户)

2.5.1、线程组 一个线程组即一个虚拟用户组,线程组中的每个线程即为1个虚拟用户,每个线程互相隔离,互不影响参数说明: 在取样器错误后要执行的动作 继续:忽略错误,继续执行启动下一进程循环: 终…

解决:ModuleNotFoundError: No module named ‘docx‘

解决:ModuleNotFoundError: No module named ‘docx’ 文章目录 解决:ModuleNotFoundError: No module named docx背景报错问题报错翻译报错位置代码报错原因解决方法今天的分享就到此结束了 背景 在使用之前的代码时,报错: Trace…

LainChain 原理解析:结合 RAG 技术提升大型语言模型能力

摘要:本文将详细介绍 LainChain 的工作原理,以及如何通过结合 RAG(Retrieval-Aggregated Generation)技术来增强大型语言模型(如 GPT 和 ChatGPT 等)的性能。我们将探讨 COT、TOT、RAG 以及 LangChain 的概…

_try_finally原理探究后续

入口程序的最后一道防线 这里调用mainCRTStartup(),然后调用入口程序 相当于这里才是一个进程开始执行的地方 这里有一个call调用,跟进去看看 发现有修改fs:[0]的操作,这里就相当于编译器为我们注册了一个异常处理函数 这里到kernel32.dll里面…

jsp 学科竞赛成绩管理系统Myeclipse开发mysql数据库web结构java编程计算机网页项目

一、源码特点 JSP 学科竞赛成绩管理系统是一套完善的java web信息管理系统,对理解JSP java编程开发语言有帮助,系统具有完整的源代码和数据库,系统主要采用B/S模式开发。开发环境为 TOMCAT7.0,Myeclipse8.5开发,数据库为Mysq…

定制软件开发的 5 个挑战

对于大公司来说,定制软件开发就像是眼中钉。无论您是要创建内部使用的工具、自动化手动流程还是推出新产品,从头开始构建它历来都是昂贵且危险的。花钱购买领先的现成解决方案之一,却不得不花费更多的时间和金钱对其进行定制来完成工作&#…

Java数据结构篇——实现顺序表的增删查改

文章目录 1.线性表2. 顺序表2.1 顺序表结构2.2 实现顺序表接口2.3 打印顺序表2.2 实现新增元素2.3 实现查找元素2.3 获取pos位置的值2.4 删除元素2.5 获取顺序表的长度2.6 清空顺序表 3.代码在这 1.线性表 定义:线性表是 n 个具有相同特性的数据元素的有序序列。线…

大数据存储技术(1)—— Hadoop简介及安装配置

目录 一、Hadoop简介 (一)概念 (二)Hadoop发展历史 (三)Hadoop三大发行版本 (四)Hadoop的优势 二、Hadoop的组成 (一)Hadoop1.x和Hadoop2.x的区别​…

SSL通配符详解

通配符证书是一种特殊的SSL/TLS证书,它允许一个域名及其所有子域名使用相同的证书。这意味着,如果您有一个通配符证书,您可以为该证书中的任何子域名提供SSL/TLS加密,而无需为每个子域名单独购买和配置证书。 通配符证书使用通配…

苹果电脑双开

1.第一步:在应用程序中找到微信 复制一个副本出来 2.第二步:打开复制的《微信副本》 右键打开 – 显示包内容 3.第三步:Contents - info.plist 后右键 打开方式 选择 文本编辑 4.第四步:找到查找和替换 这一段com.tencent.xinWeChat 后面是修改 com.tenc…

数据库性能优化八大方案

毫不夸张的说咱们后端工程师,无论在哪家公司,呆在哪个团队,做哪个系统,遇到的第一个让人头疼的问题绝对是数据库性能问题。如果我们有一套成熟的方法论,能让大家快速、准确的去选择出合适的优化方案,我相信…

MySQL系列(十):主从架构

一:主从架构 常见的主从架构模式有四种: 一主多从架构:适用于读大于写的场景,采用多个从库来分担数据库系统的读压力。多主架构:适用于读写参半的场景,采用多个主库来承载数据库系统整体的读写压力。多主…

可视化 Java 项目

有一定规模的 IT 公司,只要几年,必然存在大量的代码,比如腾讯,2019 年一年增加 12.9 亿行代码,现在只会更多。不管是对于公司,还是对于个人,怎么低成本的了解这些代码的对应业务,所提…

Spring Boot统一功能处理(Spring拦截器)

为什么需要Spring拦截器 原生的Spring AOP实现统一拦截有两大难点,1.定义拦截的规则难写;2.在切面类中拿到HttpSession比较难。为此Spring官方提供了拦截器帮我们解决了上面痛点。 实现登入信息验证拦截器 实现HanderInterceptor接口重写preHeadler方…

【LeetCode刷题】--172.阶乘后的零

172.阶乘后的零 方法&#xff1a; class Solution {public int trailingZeroes(int n) {int ans 0;for(int i 5;i<n;i5){for(int x i; x % 50; x/5){ans;}}return ans;} }进一步优化&#xff1a; class Solution {public int trailingZeroes(int n) {int ans 0;while (n…

【个人版】SpringBoot下Spring-Security核心概念解读【二】

Spring-Security HttpSecurity Spring-Security全局导读&#xff1a; 1、Security核心类设计 2、HttpSecurity结构和执行流程解读 3、Spring-Security个人落地篇 背景&#xff1a; Spring-Security框架的核心架构上一篇已经概述&#xff0c;展示其执行流程及逻辑&#xff0c;但…