iptables详细介绍
  l37a6NYUcOwy 2023年11月13日 25 0

iptables是Linux系统中常用的防火墙和网络包过滤工具,它通过规则链(Chain)来管理和过滤网络数据包。iptables中主要有五种规则链,包括INPUT、OUTPUT、FORWARD、PREROUTING和POSTROUTING,下面我们将分别介绍它们的区别和使用场景,并给出相应的示例。

五链

1. INPUT链

INPUT链用于处理进入本机的数据包,即所有目标地址为本机的数据包都会经过INPUT链进行处理。该链通常用于设置允许或拒绝进入本机的数据包。例如,可以在INPUT链中添加规则,允许来自特定IP地址或端口的数据包进入本机,或者拒绝来自某些IP地址或端口的数据包。

示例:

允许来自192.168.1.100的SSH连接:

sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT

拒绝来自192.168.1.200的Ping请求:

sudo iptables -A INPUT -s 192.168.1.200 -p icmp --icmp-type echo-request -j DROP

2. OUTPUT链

OUTPUT链用于处理从本机发出的数据包,即所有源地址为本机的数据包都会经过OUTPUT链进行处理。该链通常用于设置允许或拒绝从本机发出的数据包。例如,可以在OUTPUT链中添加规则,允许从本机发往特定IP地址或端口的数据包,或者拒绝发往某些IP地址或端口的数据包。

示例:

允许本机向192.168.1.100的HTTP服务器发出请求:

sudo iptables -A OUTPUT -d 192.168.1.100 -p tcp --dport 80 -j ACCEPT

拒绝本机向192.168.1.200的FTP服务器发出请求:

sudo iptables -A OUTPUT -d 192.168.1.200 -p tcp --dport 21 -j DROP

3. FORWARD链

FORWARD链用于处理经过本机转发的数据包,即所有既不是来自本机也不是发往本机的数据包都会经过FORWARD链进行处理。该链通常用于设置允许或拒绝经过本机转发的数据包。例如,可以在FORWARD链中添加规则,允许经过本机转发到特定IP地址或端口的数据包,或者拒绝经过本机转发到某些IP地址或端口的数据包。

示例:

允许将来自192.168.1.100的数据包转发到192.168.2.100:

sudo iptables -A FORWARD -s 192.168.1.100 -d 192.168.2.100 -j ACCEPT

拒绝将来自192.168.1.200的数据包转发到192.168.2.200:

sudo iptables -A FORWARD -s 192.168.1.200 -d 192.168.2.200 -j DROP

4. PREROUTING链

PREROUTING链用于处理经过路由器的数据包,在数据包被路由之前进行处理。该链通常用于设置网络地址转换(NAT)规则,将数据包的源地址或目标地址进行转换。例如,可以在PREROUTING链中添加规则,将目标地址为某个IP地址的数据包转发到另一个IP地址,实现端口映射或负载均衡。

示例:

将来自10.0.0.1的数据包转发到192.168.1.1,并将目标端口从80转换为8080:

sudo iptables -t nat -A PREROUTING -s 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:8080

5. POSTROUTING链

POSTROUTING链用于处理经过路由器的数据包,在数据包被路由之后进行处理。该链通常用于设置网络地址转换(NAT)规则,将数据包的源地址进行转换,实现出口网关的功能。例如,可以在POSTROUTING链中添加规则,将所有经过本机发出的数据包的源地址转换为本机的公网IP地址。

示例:

将所有从本机发出的数据包的源地址转换为公网IP地址:

sudo iptables -t nat -A POSTROUTING -j MASQUERADE

以上就是iptables中五种规则链的区别和使用场景,通过合理设置规则链和相应的规则,可以实现对网络数据包的精细化管理和过滤。

除了五种规则链,iptables还包括五个表(Table),它们分别是Filter表、NAT表、Mangle表、Raw表和Security表。下面我们将分别介绍它们的作用和使用场景,并给出相应的示例。

四表

1. Filter表

Filter表是iptables默认的表,它用于实现数据包过滤和防火墙功能。该表包括三个默认的规则链:INPUT、OUTPUT和FORWARD。通常情况下,我们使用Filter表来设置数据包的过滤规则和防火墙策略。

示例:

允许来自192.168.1.100的SSH连接:

sudo iptables -A INPUT -s 192.168.1.100 -p tcp --dport 22 -j ACCEPT

拒绝来自192.168.1.200的Ping请求:

sudo iptables -A INPUT -s 192.168.1.200 -p icmp --icmp-type echo-request -j DROP

2. NAT表

NAT表用于实现网络地址转换(NAT)功能,包括端口映射、IP地址转换、负载均衡等功能。该表包括三个默认的规则链:PREROUTING、POSTROUTING和OUTPUT。通常情况下,我们使用NAT表来设置网络地址转换规则和实现端口映射等功能。

示例:

将来自10.0.0.1的数据包转发到192.168.1.1,并将目标端口从80转换为8080:

sudo iptables -t nat -A PREROUTING -s 10.0.0.1 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:8080

3. Mangle表

Mangle表用于修改网络数据包的头部信息,包括TTL值、IP地址、端口号等。该表包括五个默认的规则链:PREROUTING、OUTPUT、INPUT、FORWARD和POSTROUTING。通常情况下,我们使用Mangle表来实现特定的网络功能或优化网络性能。

示例:

将TTL值减1:

sudo iptables -t mangle -A PREROUTING -p icmp -j TTL --ttl-inc -1

4. Raw表

Raw表用于设置网络数据包的原始策略,包括禁止数据包进行连接跟踪、禁止数据包进行源地址验证等。该表包括两个默认的规则链:PREROUTING和OUTPUT。通常情况下,我们使用Raw表来设置网络数据包的原始策略。

示例:

禁止数据包进行连接跟踪:

sudo iptables -t raw -A PREROUTING -j NOTRACK
【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月13日 0

暂无评论

推荐阅读
  Yoru5qB4TSKM   2023年12月10日   37   0   0 服务器重启IP
  ozzp9aSSE46S   2023年11月30日   26   0   0 DNSIPPod
  48fXx4UfWSFg   2023年12月06日   54   0   0 bcIPbundle
  it2nV7RK7uw1   2023年11月28日   75   0   0 DockerServerIP
  aYmIB3fiUdn9   2023年12月08日   49   0   0 客户端IPNATlvs