首页 > 系统相关 >iptables命令常用规则汇总

iptables命令常用规则汇总

时间:2023-04-18 15:37:17浏览次数:28  
标签:iptables -- 汇总 规则 端口 nat 转发

iptables非常强大,但是参数选项多,学习成本较高。本文将常用的iptables的命令进行汇总,在关键时刻方便拿来即用。

iptables的四表五链

iptables的四表五链是指iptables中的四个表和五个链。四个表分别是:

  1. filter表:用于过滤数据包,控制网络流量。

  2. nat表:用于对数据包进行地址转换,实现网络地址转换(NAT)功能。

  3. mangle表:用于修改数据包的头部信息,比如TTL、TOS等。

  4. raw表:用于处理数据包的连接状态,对于未建立连接的数据包进行处理。

五个链分别是:

  1. PREROUTING:数据包进入路由之前进行处理。

  2. INPUT:数据包进入本机之前进行处理。

  3. FORWARD:数据包转发到其他主机之前进行处理。

  4. OUTPUT:数据包从本机发出之前进行处理。

  5. POSTROUTING:数据包离开路由之后进行处理。

iptables中需要用 -t <表名> 来指定查看对应表的规则,不指定默认为filter表的规则。例如查看nat表的规则:

iptables -t nat -L

图片

查看表的详细规则

iptables -t nat -nvL --line-numbers

图片

显示编号方便删除指定的规则。

端口转发

开启内核转发

echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf

sysctl -p

本地端口转发

本地端口转发,只涉及一台机器。比如外部访问本机的2222端口转发到本地的22端口。

iptables -t nat -A PREROUTING -p tcp --dport 2222 -j REDIRECT --to-port 22

图片

添加上面的规则后,外部可以访问,但是本地127.0.0.1无法访问。因为本地的请求不经过PREROUTING。

多主机端口转发

A的ip是192.168.1.2,B的ip是192.168.1.1,A和B是内网互通的,现在有一个外部ip(1.2.3.4)为C,C想通过访问B的2222端口从而访问到A的22端口。

图片

iptables -t nat -A POSTROUTING -d 192.168.1.2 -p tcp --dport 22 -j SNAT --to-source 192.168.1.1

该命令很重要!将所有从A机器返回的TCP流量的源地址改为B机器的IP地址,不管单端口还是多端口转发都需要执行。

单端口转发

iptables -t nat -A PREROUTING -s 1.2.3.4 -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.2:22

第一条命令将所有目的地为1.2.3.4且端口为2222的TCP流量重定向到A机器的22端口。

注意:这两条都要在B机器上执行,因为它是外部访问的目标机器。

如果不想限制外部访问的来源是C,可以不指定-s选项。

iptables -t nat -A PREROUTING  -p tcp --dport 2222 -j DNAT --to-destination 192.168.1.2:22

这样任意外部ip访问都可以请求转发了。

多端口转发

针对上面的命令,如果是多端口转发,可以分为多对一和多对多的情况。

注意:经测试,iptables不支持在一条命令中实现不同主机的多端口的不同映射。比如同时将B的80转发到A的8080,将B的443转发到A的4443。

多对一端口转发

例如将B的50000到60000的端口全部转发到A的443端口,命令如下:

iptables -t nat -I PREROUTING  -p tcp  -m multiport --dport 50000:60000 -j DNAT --to-destination 192.168.1.2:443

注意:”–dports” 参数指定端口范围,使用冒号 “:” 表示起始端口和结束端口之间的范围。

多对多端口转发

例如将B的50000到60000的端口全部转发到A的50000到60000的端口,命令如下:

iptables -t nat -I PREROUTING -p tcp -m multiport --dport 50000:60000 -j DNAT --to-destination 192.168.1.2:50000-60000

当然多个端口也可以是不连续的,比如80、443、8080同端口转发,端口用逗号”,”隔开,–to-destination后面的ip不用再指定端口。

iptables -t nat -I PREROUTING -p tcp -m multiport --dport 80,443,8080 -j DNAT --to-destination 192.168.1.2

注意:–to-destination 参数后,使用”-“表示起始端口和结束端口之间的范围。

iptables增加、插入、删除规则

  • -A 在最后一条规则后新增规则

  • -I 默认将新规则插入到第一条

  • -F 不指定<链名>,默认清空整个表的规则

  • -D <链名> <规则编号> 删除指定编号的规则

在第n条规则后插入规则

iptables -I <chain><rule_number><new_rule>

比如要在nat表的POSTROUTING链的第三条规则后增加一条规则。

iptables -t nat -I POSTROUTING 3<new_rule>

删除指定表中某个链的全部规则

iptables -t 表名 -F 链名

其中,表名可以是filter、nat、mangle、raw等,链名可以是INPUT、OUTPUT、FORWARD等。

例如,要清空filter表中INPUT链的所有规则,可以使用以下命令:

iptables -t filter -F INPUT

注意这个操作是不可逆的,清空后所有的规则都将被删除。

让iptables规则永久生效

默认iptables的规则在重启后会失效,所以需要将规则持久化。

使用 iptables-persistent

iptables-persistent 是一个 Debian/Ubuntu 系统上的工具,可以在重新启动后自动加载 iptables 规则。使用以下命令安装:

apt-get install -y iptables-persistent

在安装过程中,会被要求保存当前的 iptables 规则。安装完毕后,可以使用以下命令来保存新的 iptables 规则。

service netfilter-persistent save

使用iptables-save 保存规则

iptables-save > /etc/iptables.rules

将 iptables 规则保存到 /etc/iptables.rules 文件中,可以使用以下命令来加载。

iptables-restore < /etc/iptables.rules

为了在系统启动时自动加载 iptables 规则,可以将上述命令添加到 /etc/rc.local 文件中。该文件中的命令将在每次系统启动时自动执行。

iptables 拒绝入方向流量

拒绝ip段访问本机端口段的请求

例如将源IP为47.100.0.0/16的TCP流量目的端口为40000-60000的数据包丢弃,命令如下:

iptables -A INPUT -s 47.100.0.0/16 -p tcp --dport 40000:60000 -j DROP

拒绝指定ip的所有请求

例如拒绝 47.100.0.1 的所有请求,命令如下:

iptables -A INPUT -s 47.100.0.1 -j DROP

限制只有指定IP段能访问

白名单:先允许,再拒绝。

例如只允许192.168.0.0/16的ip段访问本机,其他ip的请求都拒绝,命令如下:

iptables -I INPUT -s 192.168.0.0/16 -j ACCEPT

iptables -I INPUT -s 0.0.0.0/0 -j DROP

iptables 拒绝出方向流量

拒绝出方向的域名请求

一般 iptables 自带的都有 string 模块,这个模块的作用就是匹配字符串,匹配到泛域名的 URL,然后就把数据包丢弃,就实现了屏蔽泛域名的功能。

例如要限制访问 youtube.com,命令如下:

iptables -A OUTPUT -m string --string "youtube.com" --algo bm --to 65535 -j DROP

对命令的参数进行解释。

-m string

# 指定模块;

--string "youtube.com"

# 指定要匹配的字符串(域名、关键词等);

--algo bm

# 指定匹配字符串模式/算法(还有一种更复杂的算法:kmp);

--to 65535

# 指定端口,这里代表所有端口(1-65535);

-j DROP

# 指匹配到数据包后处理方式,这里是丢弃数据包。

 

标签:iptables,--,汇总,规则,端口,nat,转发
From: https://www.cnblogs.com/zhuanqian-yangmeng/p/17213783.html

相关文章

  • 【敲敲云】零代码实战,主子表汇总统计—免费的零代码产品
    近来很多朋友在使用敲敲云时,不清楚如何使用主子表,及如何在主表中统计子表数据;下面我们就以《订单》表及《订单明细》表来设计一下吧,用到的组件有“设计子表”、“公式”、“汇总”等。《订单》表展示总金额=订单明细中“小计”求和小计=单价*数量首选我们打开敲敲云......
  • Zabbix“专家坐诊”第188期问答汇总
    问题一Q:zabbix能监控waf日志针对告警么?A:可以通过snmp trap的方式。Q:snmp trap在zabbix端怎么配置呢?我配置的不生效,zabbix服务器端。A:trap要先在设备开启,设备有告警会主动推到服务器端。Q:设备已经开启了,华为的服务器BMC界面。A:可以通过这个筛选trap的信息。问题二Q:Zabbix怎么监控W......
  • makefile使用总结--规则
    本文参考《跟我一起写Makefile》编写,并做了一些适合个人习惯的修改,稍加总结而成。 一篇文章肯定不够详细记录makefile所有的知识,所以这篇接着描述Makefile的规则。规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应......
  • 大数据开发相关技术汇总
    HadoopKaflka分布式数据日志收集,生产者消费者模式。SqoopHadoop数据导入,导出工具。自动生成mapreduce。导入数据:MySQL,Oracle导入数据到Hadoop的HDFS、HIVE、HBASE等数据存储系统;导出数据:从Hadoop的文件系统中导出数据到关系数据库;特点:可以将关系型数据库中的数据导入......
  • 【FPGA】vivado使用时的问题汇总
    今天在使用vivado的时候,出现了之前的错误,但是我忘记了解决方案,只能再去网上找方法。所以我建了个这个问题汇总博客,以后再碰到问题可以先来这里翻一翻。1、MIGIP核在重新打开工程的时候会丢失一些文件,导致无法仿真,需要重新生成一遍IP核才能够正常使用。同样的,在OpenIPExample......
  • m规则LDPC和非规则LDPC误码率matlab对比仿真,并对比不同译码迭代次数的误码率
    1.算法仿真效果matlab2022a仿真结果如下:2.算法涉及理论知识概要LDPC码是麻省理工学院RobertGallager于1963年在博士论文中提出的一种具有稀疏校验矩阵的分组纠错码。几乎适用于所有的信道,因此成为编码界近年来的研究热点。它的性能逼近香农极限,且描述和实现简单,易于进行理论......
  • 怎么给旋律配和弦 旋律配和弦的必看规则
    怎么给旋律配和弦?配和弦没有固定的配法,只要和旋律一起演奏听起来是和谐的就是正确的和弦。旋律配和弦必看规则?下文将用实际案例详细讲述旋律配和弦的方法。一、怎么给旋律配和弦1、找参照音我们要从我们要配和弦的乐句中找出参照音。例如我们要给四拍的一段乐句配一个和弦,我们可以......
  • firewalld 和 iptables 区别
    在RHEL7里有几种防火墙共存:firewalld、iptables、ebtables,默认是使用firewalld来管理netfilter子系统,不过底层调用的命令仍然是iptables等。firewalld跟iptables比起来至少有两大好处:1、firewalld可以动态修改单条规则,而不需要像iptables那样,在修改了规则后必须得全部刷新才可以......
  • CentOS 7 :Failed to start IPv4 firewall with iptables
    关闭firewalld:systemctlstopfirewalldsystemctlmaskfirewalld使用iptables服务:#开放443端口(HTTPS)iptables-AINPUT-ptcp--dport443-jACCEPT#保存上述规则serviceiptablessave#开启服务systemctlrestartiptables.service一切正常。......
  • rem、vw、vh、em原理汇总
    1.rem: rem是根据根元素的font-size大小来设置的,比如设置htmlfont-size=100px,那么1rem=100px,之后所有的元素都可以使用这个基准值来设置大小2.vw:视口宽度单位  1vw=1/100视口宽度,宽度全屏就是100vw3.vh:视口高度单位1vh=1/100视口高度,高度全屏就......