iptables命令详解

本文详细介绍了iptables在Linux环境下的网络防火墙配置,包括其与Netfilter的关系,常用命令及其参数,nat表中的特殊选项,以及规则查看、清除、修改和实战应用案例,如设置默认策略、允许特定IP访问SSH和开启NAT功能。
摘要由CSDN通过智能技术生成

1、iptables

  在Linux环境下,iptables就是一款强大而灵活的防火墙工具,它为系统管理员提供了广泛的配置选项,能够有效地控制数据包的流动,实现网络访问的控制和安全性增强。

  iptables最初是由Rusty Russell在2000年开发的,它是基于netfilter框架的一部分,用于对Linux内核进行数据包过滤和操作。Netfilter是Linux内核中的一个模块化框架,它允许核心网络功能被扩展和修改,从而实现了包括NAT(网络地址转换)、数据包过滤等在内的网络功能。

1.1、iptables与Netfilter的关系

  iptables实际上是Netfilter的用户空间工具之一,它通过调用Netfilter提供的内核空间功能来实现数据包的处理和过滤。Netfilter框架在Linux内核中通过一系列的钩子(hooks)实现数据包处理的不同阶段,iptables就可以通过这些钩子来插入自定义的规则,从而实现对数据包的控制。

2、iptables命令及参数详解

//语法规则
iptables [-t 表名] 选项 [链名] [条件] [-j 控制类型]
//例如下列两条
iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

基于此命令了解iptables命令的相关参数

2.1、基本概念

在这里插入图片描述

  • 表(Tables):iptables规则按照功能被划分到不同的表中,常见的表包括filter、nat和mangle等。
  • 在命令中,使用 -t 参数来指定表。 filter表:用于过滤数据包,常用于设置防火墙规则。
    nat表:用于网络地址转换,常用于实现端口转发和SNAT/DNAT等功能。
    mangle表:用于修改数据包的头部信息,常用于设置QoS(服务质量)和网络流量控制。
  • 链(Chains):每个表包含一系列的链,用于决定如何处理数据包。常见的链包括INPUT、OUTPUT、FORWARD等。

常见的链包括:
INPUT:处理输入数据包。
OUTPUT:处理输出数据包。
FORWARD:处理转发数据包。
PREROUTING:在路由决策之前处理数据包,主要用于DNAT。
POSTROUTING:在路由决策之后处理数据包,主要用于SNAT。

  • 规则(Rules):规则定义了数据包的匹配条件以及对匹配数据包的操作。

2.2、常用命令和参数

- **iptables**:用于配置iptables规则的主要命令。
-A, --append:向指定链末尾添加一条规则。
-I, --insert:向指定链的指定位置插入一条规则。
-D, --delete:删除指定链中的一条规则。
-P, --policy:设置指定链的默认策略。
-s, --source:指定源IP地址或地址段。
-d, --destination:指定目标IP地址或地址段。
-i, --in-interface:指定数据包的输入接口。
-o, --out-interface:指定数据包的输出接口。
-p, --protocol:指定数据包所使用的协议。

2.3、nat表中的--to-destination--to-source--to-ports

  --to--to-destination 都是iptables中的选项,用于指定数据包转发的目标地址。它们的主要区别在于作用对象和具体用法:

  1. - -to-destination:这个选项用于目标地址的转换。当你使用 --to-destination 时,你需要指定具体的目标IP地址和端口号(可省略端口)。这通常用于目标地址的改变,比如端口映射或者转发到另一个内部主机的不同端口上。

示例:

iptables -t nat -A PREROUTING -p tcp --dport 8080 -j DNAT --to-destination 192.168.1.100:80

这个命令将目标端口为8080的TCP数据包转发到内部主机192.168.1.100的80端口。

  2. - -to:这个选项用于更一般化的目标地址转换。它可以用于改变数据包的目标地址,源地址,目标端口或源端口。

示例:

iptables -t nat -A POSTROUTING -p tcp --dport 80 -j SNAT --to 192.168.1.200

   这个命令将通过本机出口的TCP数据包的目标端口为80的流量转发到192.168.1.200,而不改变目标端口。

  总之,--to-destination 是专门用于目标地址转换的选项,而 --to 则更通用,可以用于各种类型的地址转换,需要指定具体的转换行为。

  3. - -to-ports:选项用于指定目标端口的转发范围,通常用于端口映射或重定向的场景。

  以下是一个示例,假设你希望将来自外部网络的TCP流量转发到内部网络的不同端口范围:

iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-ports 8080-8090

  这个命令将目标端口为80的TCP数据包转发到内部网络的8080至8090端口范围内的随机端口上。

  要注意的是,--to-ports 选项后面需要跟一个端口范围,用 “-” 分隔起始端口和结束端口。这样,iptables就会将流量转发到指定范围内的端口上,实现端口的动态映射或负载均衡等功能。

3、iptables规则查看、清除和修改

3.1、查看iptables已有规则

iptables -nL
iptables -t nat -nvL --line //查看nat详细信息,并显示行号
iptables [-t tables] [-L] [-nv]
    -t:后面接table,例如nat或filter,若省略则使用filter
    -L:列出目前的table的规则
    -n:不进行IP与HOSTNAME的反查,这样显示速度快
    -v:列出更多的信息(数据包的位数、相关的网络接口)
    
iptables-save 会列出完整的防火墙规则

3.2、清除iptables规则

iptables [-t tables] [-FXZ]
    -F:清除所有已定制的规则
    -X:除掉所有用户"自定义"的chain
    -Z:将所有的chain的计数与流量统计都归零

3.3、iptables规则修改和替换

iptables -R INPUT 5 -s 192.168.1.0/24 -j DROP

这个命令将替换 INPUT 链中编号为 5 的规则,将其改为拒绝来自 192.168.1.0/24 网段的流量。

注意:使用 -R 选项时需要确保指定的规则号存在,否则会报错。

4、实际命令使用案例

4.1设置默认策略

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

上述命令将INPUT和FORWARD链的默认策略设置为DROP,即拒绝所有未匹配规则的数据包;而将OUTPUT链的默认策略设置为ACCEPT,即允许所有输出流量。

4.2、允许特定IP访问SSH服务

iptables -A INPUT -p tcp --dport 22 -s 192.168.1.0/24 -j ACCEPT

该命令允许来自192.168.1.0/24网段的主机访问SSH服务(使用TCP协议,目标端口为22)。

4.3、开启网络地址转换(NAT)

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

该命令将对通过eth0网卡出口的数据包进行源地址伪装,用于实现网络地址转换。

  • 17
    点赞
  • 39
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iptables命令是用于配置Linux系统的防火墙规则的工具。默认情况下,iptables的默认规则是ACCEPT,即允许所有的网络流量通过。然而,为了提高系统的安全性,我们可以设置INPUT,OUTPUT和FORWARD这些链的默认规则为DROP,即拒绝所有的网络流量。可以使用以下命令来设置默认规则为DROP:iptables -P INPUT DROP,iptables -P FORWARD DROP,iptables -P OUTPUT DROP。\[1\] 除了设置默认规则,iptables还有其他常用的命令。例如,使用iptables -L命令可以查看当前的规则链;使用iptables -F命令可以清除预设表filter中的所有规则链的规则,但要慎用;使用iptables -D num命令可以删除指定的规则;使用service iptables save命令可以保存iptables配置;使用service iptables restart命令可以重启iptables使配置生效。\[2\] 如果你需要清空默认规则或已有规则,可以使用iptables -F或iptables --flush命令来满足你的需求。\[3\] #### 引用[.reference_title] - *1* *3* [25个常用的iptables命令](https://blog.csdn.net/weixin_34205076/article/details/92205200)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [iptables命令介绍](https://blog.csdn.net/qq_22543449/article/details/127094308)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insertT0,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值