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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM