iptables为什么需要增加loopback回环的规则

先说loopback回环的大致个人理解:

1、lo的主要作用是基于本地访问本地的数据包会经过lo这张网卡。

2、比如ping 127.0.0.1时,你在eth0抓不到,只能在lo这张网卡捕获。

再来看下简单的iptables的几个链的规则:

  • PREROUTING:在做出路由决策之前,数据包将进入此链。
  • INPUT:数据包将在本地交付。它与打开套接字的进程没有任何关系; 本地交付由“本地交付”路由表控制:  ip route show table local
  • FORWARD:所有已路由但不用于本地传递的数据包将遍历此链。
  • OUTPUT:从机器本身发送的数据包将访问此链。
  • POSTROUTING:路由决定已经做出。数据包在将它们交给硬件之前进入该链。

那么下面来看下为什么需要再iptables增加lo的访问:

1、如果我们在iptables设置了防火墙,一般防火墙会放在默认规则里面:iptables -P INPUT DROP,注意这里的-P是默认规则的意思,顺序在最后,且链表为filter。

2、那么如果要能在本机可以ping通本机,那么需要将lo的访问规则打开:iptables -A INPUT -i lo -j ACCEPT

3、通过上面可以看出,iptables做防火墙的特性,不需要指定非默认规则,默认规则对于iptables来说是最后才执行,但凡有一个匹配到就不往下执行,所以此时ping本机可以通。

4、在网上很多只是增加了这两条规则:

iptables -A INPUT -i lo -j ACCEPT

iptables -A OUTPUT -o lo -j ACCEPT

而没有真正说明为什么要这样加,其实这样加主要还是因为限制的防火墙规则后这两台才生效。

5、很多情况是在转发上会用到,其实如果不增加防火墙规则时,这一点的意义不太大。

6、所以,只要是本机进程内相互访问的,都会去到lo这张网卡上,所以在外部IP时对于iptables选择的是eth0这样的网卡,要捕获本机时是lo这个网卡。

参考:

https://unix.stackexchange.com/questions/81107/why-must-loopback-traffic-be-authorized-using-iptables-to-get-web-access

https://crm.vpscheap.net/knowledgebase.php?action=displayarticle&id=29(这个文章介绍了开头会增加默认规则限制全部请求,也验证了后续为什么需要增加lo的放行)

https://unix.stackexchange.com/questions/395328/iptables-rule-for-loopback?answertab=votes#tab-top

原文地址:https://www.cnblogs.com/EasonJim/p/9995639.html