iptables四表五链分别是什么,有什么作用

您所在的位置:网站首页 ssh是什么功能 iptables四表五链分别是什么,有什么作用

iptables四表五链分别是什么,有什么作用

2023-05-11 05:22| 来源: 网络整理| 查看: 265

iptables四表五链分别是什么,有什么作用

iptables 是 Linux 下的一个强大的防火墙工具,它可以过滤网络数据包,控制网络数据包的转发,同时也可以进行网络地址转换(NAT)。iptables 通过在 Linux 内核中设置规则来实现网络包的过滤和转发。

iptables 的工作方式基于四个表和五个链。四个表分别是:

filter 表:过滤表,可以过滤掉某些数据包。这是默认表,若不指定表名,则默认使用 filter 表。 nat 表:网络地址转换表,用于进行网络地址转换,例如进行端口映射等操作。 mangle 表:拦截表,可以修改数据包的 TTL、TOS 等字段,用于实现一些高级功能。 raw 表:原始表,主要用于设定豁免某些数据包经过 iptables 的过滤机制。

五个链分别是:

INPUT 链:处理目标是本机的数据包。 OUTPUT 链:处理源自本机的数据包。 FORWARD 链:处理不是来自本机、也不是发往本机的数据包,而是需要进行转发的数据包。 PREROUTING 链:在数据包被路由选择之前处理数据包。 POSTROUTING 链:在数据包被路由选择之后处理数据包。

通过在不同的表和链中设置规则,可以实现各种复杂的网络访问控制、数据包过滤和网络地址转换等操作,保护系统的网络安全。

举例说明:

下面是一个示例规则,该规则将来自 192.168.1.0/24 子网的所有 ICMP 包拒绝:

cssCopy code iptables -A INPUT -s 192.168.1.0/24 -p icmp -j DROP

这个规则将会在 filter 表的 INPUT 链中增加一条规则,用于拒绝所有来自 192.168.1.0/24 子网的 ICMP 数据包。当系统收到这些数据包时,它们将会被拒绝,而不会被传输到应用程序。

nat表的常见配置

iptables 的 nat 表主要用于网络地址转换,它包含三个主要的链:PREROUTING、OUTPUT 和 POSTROUTING。

下面是一些 nat 表中常用的配置:

端口转发(Port Forwarding):可以将外部对于某个 IP 地址和端口的请求转发到内部的某个不同的 IP 地址和端口。可以通过以下命令进行配置:

cssCopy codeiptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to 192.168.1.10:8080 iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 8080 -d 192.168.1.10 -j ACCEPT

上述配置将会将所有来自 eth0 网卡的外部 TCP 端口 80 的请求转发到内部的 192.168.1.10:8080。

源地址伪装(Source NAT):将源 IP 地址替换成本机的 IP 地址,通常用于实现网络地址转换。可以通过以下命令进行配置:

cssCopy code iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

上述配置将会将来自 192.168.1.0/24 子网的所有数据包的源 IP 地址替换为本机的 IP 地址,并将它们传递到 eth0 网卡。

目标地址伪装(Destination NAT):将目标 IP 地址替换为内部的某个 IP 地址。可以通过以下命令进行配置:

cssCopy code iptables -t nat -A PREROUTING -i eth0 -d 203.0.113.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80

上述配置将会将来自 eth0 网卡的外部 IP 地址为 203.0.113.1 的 TCP 端口 80 的请求转发到内部的 192.168.1.10:80。

这些是 nat 表中一些常见的配置,通过它们可以实现不同的网络地址转换和流量控制。注意,这些配置都是针对特定的网络拓扑和需求进行的,具体的配置需要根据实际情况进行选择和调整。

filter表的配置

当使用 iptables 命令时,如果没有指定表,那么默认配置的是 filter 表,也就是防火墙过滤表。下面是一个配置规则的示例:

假设我们需要在 INPUT 链上添加一条规则,只允许来自 IP 地址为 192.168.1.2 的主机发起的 SSH 连接通过,其他所有主机的 SSH 连接都被阻止。可以使用以下命令来添加规则:

bashCopy codeiptables -A INPUT -p tcp --dport 22 -s 192.168.1.2 -j ACCEPT iptables -A INPUT -p tcp --dport 22 -j DROP

解释一下这两条命令的含义:

第一条命令表示允许来自 IP 地址为 192.168.1.2 的主机发起的 SSH 连接通过。具体说明如下: -A INPUT 表示将规则添加到 INPUT 链的末尾; -p tcp 表示匹配 TCP 协议的数据包; --dport 22 表示匹配目标端口为 22 的数据包,即 SSH 服务端口; -s 192.168.1.2 表示匹配源 IP 地址为 192.168.1.2 的数据包; -j ACCEPT 表示如果匹配到该规则,就接受该数据包。 第二条命令表示阻止所有其他主机的 SSH 连接通过。具体说明如下: -A INPUT 表示将规则添加到 INPUT 链的末尾; -p tcp 表示匹配 TCP 协议的数据包; --dport 22 表示匹配目标端口为 22 的数据包,即 SSH 服务端口; -j DROP 表示如果匹配到该规则,就丢弃该数据包。

这样,我们就配置了一个简单的防火墙规则,只允许特定 IP 地址的主机访问 SSH 服务。注意,这只是一个简单的示例,实际应用中需要根据实际情况进行规则的配置。



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3