iptables语法规则

news2024/12/23 16:45:06

iptables命令基本语法

iptables [-t table] command [链名] [条件匹配] [-j 目标动作]

在这里插入图片描述

以下是对iptables命令的拆分讲解:

  • -t table

用来指明使用的表,有三种选项:filter,nat,mangle。若未指定,则默认使用filter表。

  • command参数

    指定iptables对我们提交的规则要做什么样的操作,以下是command常用参数:

-A
Append,追加一条规则(放到最后)
举例:
iptables -A INPUT -j DROP #拒绝所有人访问服务器(最为最后一条规则)
//若 -t 未指定表,默认使用filter表

-I
Insert,在指定的位置插入规则
举例:
iptables -I INPUT 2 -s 10.10.10.1 -j ACCEPT #允许10.10.10.1主机访问本机
//在filter表的INPUT链插入成第2条规则

-L
list,查看规则列表 具体参数: n: 只显示IP地址和端口号码,不显示域名和服务名称 v:
显示详细信息,包括每条规则的匹配包数量和匹配字节数 x: 在v的基础上,禁止自动单位换算(K,M)
–line-number: 可以看到规则号
举例:
iptables -nL –line-number
在这里插入图片描述

-D
Delete,从规则列表中删除规则
举例:
iptables -D INPUT 2 // 删除 filter 表INPUT链中的第2条规则
iptables -t nat -D PREROUTING 2 // 删除nat表PREROUTING链的第2条规则

-P
Policy,设置某个链的默认规则
举例:
iptables -P INPUT DROP //设置filter表 INPUT链的默认规则是DROP
“当数据包没有被任何规则匹配时,则按默认规则处理”

-F
Flush,清空规则
iptables -F INPUT #清空filter表中INPUT链上的规则
iptables -F #清空filter表中所有链上的规则
iptables -t nat -F PREROUTING #清空NAT表中PREROUTING链上的所有规则
iptables -t nat -F #清空NAT中所有链上的规则
iptables -X #清空自定义的table

“注意: -F 是清空链中规则,但是不影响-P设置的默认规则。因此在生产环境中,若指定默认规则为DROP,一旦执行iptables -F,很容器导致自己也无法连接服务器(-F 会把配置的明细ACCEPT规则删除,只留下默认规则拒绝所有)”

-Z
zero,将制定链的所有计数器归零。(如为指定,则认为是所有链)
举例:
iptables -Z INPUT

条件匹配参数

  • 按网络接口匹配

-i
匹配数据进入的网络接口,此参数主要应用nat表,例如目标地址转换。
举例:
-i eth0

-o
配置数据流出的网络接口
举例:
-o eth1
//匹配从eth1流出的数据包

  • 按源及目的地址匹配

-s
配置源地址,可以是IP、网断、域名,也可空(代表任何地址)
举例:
iptables -A INPUT -s 10.10.10.10 -j DROP //拒绝10.10.10.10主机访问本机

-d
配置目标地址
举例:
iptables -A OUTPUT -d www.baidu.com -j DROP //禁止本机访问百度

  • 按协议类型匹配

-p
匹配协议类型,可以是TCP、UDP、ICMP等
举例:
iptables -A INPUT -s 10.10.10.10 -p icmp -j DROP //禁止10.10.10.10主机ping通本地

  • 按源及目的端口匹配

–sport
匹配源端口;可以是单个端口,也可以是端口范围
–dport
匹配目的端口;可以是单个端口,也可以是端口范围
举例:
--sport 23 //匹配源端口是23的数据包
--sport 2000:3000 //匹配源端口是2000-3000的数据包
--sport :2000 //匹配2000以下的数据包(包含2000)
--sport 1000: //匹配1000以上的数据包(包含1000
注意: --sport 和 –dport 必须配合-p参数使用
例如:
iptables -A INPUT -p tcp -dport 80 -j ACCEPT //允许外部数据访问我的服务器80端口
详细解释:
1、 这是一条从外部进入内部服务器的数据
2、 数据包的目的(dport)地址是22,就是要访问我本地的22端口
3、 允许以上的数据行为通过

  • 目的动作

-j ACCEPT
允许数据包通过本链而不拦截它
举例:
iptables -A INPUT -j ACCEPT //允许所有访问本机的数据包通过

-j DROP
丢弃数据包;阻止数据包通过本链
举例:
iptables -A FORWARD -s 10.10.10.10 -j DROP //阻止来自10.10.10.10的数据包通过本机

-j SNAT
源地址转换,支持转换为单IP,也支持转换到IP地址池 举例: 转换到单IP
举例1:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 18.18.18.18 //将内网192.168.1.0/24 转换为公网地址18.18.18.18地址;SNAT,用于访问互联网
举例2:
转换到一组地址池
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to 18.18.18.18-18.18.18.28
//同上,只不过是转换到一组IP地址池

-j DNAT
目的地址转换,支持转换为单IP,也支持转换到IP地址池
举例1:
转换到单IP举例
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.1 //把从eth0口进来访问TCP/80端口的数据包目的地址改成192.168.1.1
举例2:
转换到一组地址池
iptables -t nat -A PREROUTING -i etho -p tcp --dport 80 -j DNAT --to 192.168.1.1-192.168.1.10

-j MASQUERADE
动态SNAT转换(适用于动态IP场景)
举例:
iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE //将源地址是192.168.1.0/24 的数据包进行地址伪装,转换成eth0上的IP地址

iptables常用附加模块

  • 按包状态匹配(state)

-m state --state 状态
举例:
iptables -A INPUT -m state –state RELATED,ESTAABLISHED -j ACCEPT //将目前已运行的服务端口全部开放

  • 按来源MAC匹配(mac

-m mac --mac-source MAC
举例:
iptables -A INPUT -m --mac-source xx:xx:xx:xx:xx:xx -j DROP //拒绝来自某MAC地址的数据包进入本机

  • 按包速率匹配(limit)

-m limit --limit 匹配速率
举例:
iptables -A FORWARD -d 192.168.1.1 -m limit --limit 50/s -j ACCEPT //允许192.168.1.1每秒转发50个包给自己

iptables -A FORWARD -d 192.168.1.1 -j DROP //禁止转发192.168.1.1的数据包

  • 多端口匹配(multiport)

-m multiport <–sports|–dports|–ports> 端口1[,端口2,…,端口 n]
举例:
iptables -A INPUT -p tcp -m multiport --dports 22,53,80,443 -j ACCEPT //允许访问本机TCP/22,53,80,443端口
注意:该参数必须与-p参数一起使用

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

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

相关文章

【数据库】基础知识,创建一个表

计算机硬件软件硬件&#xff1a;1.输入输出设备 2.控制器 3.运算器 4.存储器&#xff08;内存&#xff09;软件&#xff1a;1.应用软件 2.系统软件&#xff08;操作系统、数据库管理系统、语言处理系统……&#xff09;从开发者角度分软件&#xff1a;B/S浏览器和服务器结构&am…

umi学习(umi4)

umi 官方文档 官方建议使用 pnpm node版本在 14 以上 创建项目&#xff1a; 根据 包管理工具不同 &#xff0c;官方推荐 这里使用 pnpm&#xff1a; 1. pnpm dlx create-umilatest 2. 选择模板 &#xff08;这里使用 Simple App&#xff09; 想对module处理需要使用 Ant Desig…

19 客户端服务订阅机制的核心流程

Nacos客户端服务订阅机制的核心流程 说起Nacos的服务订阅机制&#xff0c;大家会觉得比较难理解&#xff0c;那我们就来详细分析一下&#xff0c;那我们先从Nacos订阅的概述说起 Nacos订阅概述 Nacos的订阅机制&#xff0c;如果用一句话来描述就是&#xff1a;Nacos客户端通…

vue自定义指令以及angular自定义指令(以禁止输入空格为例)

哈喽&#xff0c;小伙伴们&#xff0c;大家好啊&#xff0c;最近要实现一个vue自定义指令&#xff0c;就是让input输入框禁止输入空格建立一个directives的指令文件&#xff0c;里面专门用来建立各个指令的官方文档&#xff1a;自定义指令 | Vue.js (vuejs.org)我们都知道vue中…

小白学Pytorch 系列--Torch API

小白学Pytorch 系列–Torch API Torch version 1.13 Tensors TORCH.IS_TENSOR 如果obj是PyTorch张量&#xff0c;则返回True。 注意&#xff0c;这个函数只是简单地执行isinstance(obj, Tensor)。使用isinstance 更适合用mypy进行类型检查&#xff0c;而且更显式-所以建议使…

开发手册——一、编程规约_5.集合处理

这篇文章主要梳理了在java的实际开发过程中的编程规范问题。本篇文章主要借鉴于《阿里巴巴java开发手册终极版》 下面我们一起来看一下吧。 1. 【强制】关于 hashCode 和 equals 的处理&#xff0c;遵循如下规则&#xff1a; 只要重写 equals&#xff0c;就必须重写 hashCod…

I.MX6ULL_Linux_系统篇(21) kernel启动流程

链接脚本 vmlinux.lds 要分析 Linux 启动流程&#xff0c;同样需要先编译一下 Linux 源码&#xff0c;因为有很多文件是需要编译才会生成的。首先分析 Linux 内核的连接脚本文件 arch/arm/kernel/vmlinux.lds&#xff0c;通过链接脚本可以 找到 Linux 内核的第一行程序是从哪里…

计算机网络安全基础知识3:网站漏洞,安装phpstudy,安装靶场漏洞DVWA,搭建一个网站

计算机网络安全基础知识3&#xff1a;网站漏洞&#xff0c;安装phpstudy&#xff0c;安装靶场漏洞DVWA&#xff0c;搭建一个网站 2022找工作是学历、能力和运气的超强结合体&#xff0c;遇到寒冬&#xff0c;大厂不招人&#xff0c;可能很多算法学生都得去找开发&#xff0c;测…

7.桥接模式

目录 简介 定义 特点 结构 示例 1. 新建 Brand.interface 接口类&#xff0c;定义不同品牌手机共有的基本功能 2. 新建 Xiaomi.class 类&#xff0c;实现 Brand.interface 接口&#xff0c;实现具体功能 3. 新建 Vivo.class 类&#xff0c;实现 Brand.interface 接口&…

Mybatis源码学习笔记(六)之Mybatis中集成日志框架原理解析

1 Mybatis中集成日志框架示例 1.1 Mybatis使用log4j示例&#xff08;推荐方式&#xff09; 第一步&#xff1a;pom.xml引入log4j依赖 <!-- slf4j日志门面 --><dependency><groupId>org.slf4j</groupId><artifactId>slf4j-api</artifactId&…

Thinkphp6使用RabbitMQ消息队列

Thinkphp6连接使用RabbitMQ&#xff08;不止tp6&#xff0c;其他框架对应改下也一样&#xff09;&#xff0c;如何使用Docker部署RabbitMQ&#xff0c;在上一篇已经讲了->传送门<-。 部署环境 开始前先进入RabbitMQ的web管理界面&#xff0c;选择Queues菜单&#xff0c;点…

深度学习实战20(进阶版)-文件智能搜索系统,可以根据文件内容进行关键词搜索,快速找到文件

大家好&#xff0c;我是微学AI&#xff0c;今天给大家带来深度学习实战项目-文件智能搜索系统&#xff0c;文件智能搜索系统是一种能够帮助用户通过文件的内容快速搜索和定位文件的软件系统。 随着互联网和数字化技术的普及&#xff0c;数据和信息呈现爆炸式增长的趋势&#xf…

ubuntu 将jupyter-lab保存为桌面快捷方式和favourites

ubuntu: 将jupyter-lab保存为桌面快捷方式和favourites desktop shortcut 建立一个新的desktop文件 cd ~/Desktop touch Jupyter-lab.desktop将文件修改成如下&#xff1a; [Desktop Entry] Version1.0 NameJupyterlab CommentBack up your data with one click Exec/home/cjb/…

SpringCloud学习笔记(一)

单体应用架构 在诞⽣之初&#xff0c;拉勾的⽤户量、数据量规模都⽐较⼩&#xff0c;项目所有的功能模块都放在一个工程中编码、编译、打包并且部署在一个Tomcat容器中的架构模式就是单体应用架构。 优点&#xff1a; 高效开发&#xff1a;项⽬前期开发节奏快&#xff0c;团…

02-Oracle数据库的启动与关闭

本文章主要讲解Oracle数据库的启动与关闭方法&#xff0c;详细讲解启动Oracle的命令&#xff0c;三种启动数据库的方法及区别&#xff1b;关闭数据库的4种方法及他们的区别。 启动和关闭数据库 •数据库没启动前&#xff0c;只有拥有DBA权限或者以sysoper或sysdba身份才能连接到…

设计跳表(动态设置节点高度)

最近学习redis的zset时候&#xff0c;又看到跳表的思想&#xff0c;突然对跳表的设置有了新的思考 这是19年设计的跳表&#xff0c;在leetcode的执行时间是200ms 现在我对跳表有了新的想法 1、跳表的设计&#xff0c;类似二分查找&#xff0c;但是不是二分查找&#xff0c;比较…

基于Canal的数据同步

基于Canal的数据同步 一、 系统结构 该数据同步系统由Spring Boot和Canal共同组成。 Spring Boot 是一个流行的 Java Web 框架&#xff0c;而 Canal 则是阿里巴巴开源的 MySQL 数据库的数据变更监听框架。结合 Spring Boot 和 Canal&#xff0c;可以实现 MySQL 数据库的实时数…

ASGCN之图卷积网络(GCN)

文章目录前言1. 理论部分1.1 为什么会出现图卷积网络&#xff1f;1.2 图卷积网络的推导过程1.3 图卷积网络的公式2. 代码实现参考资料前言 本文从使用图卷积网络的目的出发&#xff0c;先对图卷积网络的来源与公式做简要介绍&#xff0c;之后通过一个例子来代码实现图卷积网络…

Linux命令行安装Oracle19c教程和踩坑经验

安装 下载 从 Oracle官方下载地址 需要的版本&#xff0c;本次安装是在Linux上使用yum安装&#xff0c;因此下载的是RPM。另外&#xff0c;需要说明的是&#xff0c;Oracle加了锁的下载需要登录用户才能安装&#xff0c;而用户是可以免费注册的&#xff0c;这里不做过多说明。 …

最新使用nvm控制node版本步骤

一、完全卸载已经安装的node、和环境变量 ①、打开控制面板的应用与功能&#xff0c;搜索node&#xff0c;点击卸载 ②、打开环境变量&#xff0c;将node相关的所有配置清除 ③、打开命令行工具&#xff0c;输入node-v&#xff0c;没有版本号则卸载成功 二、下载nvm安装包 ①…