Linux

關於介面、iptables、連接、本地連接的困惑

  • August 30, 2018

我今天配置了我的 iptables,但遇到了一些我還無法解決的問題。因此,如果有人可以驗證或回答以下內容以澄清,那就太好了:

  1. 每個介面都可以分別配置為 ipv4 或/和 ipv6。iptables 規則iptables -A OUTPUT -p tcp --dport 80 -j ACCEPT 適用於所有介面(僅在 ipv4 上)?
  2. 單個連接(如 所示netstat -na)總是只使用一個介面
  3. 介面由 ip 地址自動選擇。例如,當有類似的東西時
***:~$ ip 地址
1: lo: mtu 65536 qdisc noqueue state UNKNOWN group default
連結/環回 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 範圍主機 lo
valid_lft 永遠首選_lft 永遠
2: eth0: mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
連結/乙太 * brd ff:ff:ff:ff:ff:ff
inet 128.176.123.45 brd * 範圍全域 eth0
valid_lft 永遠首選_lft 永遠**

127.0.0.1從to的 所有 IP都127.255.255.255將通過介面lo進行,rest 將通過eth0(如果有可能的路由;可以通過 看到netstat -r)? 4. 情況:伺服器和客戶端(對於某些軟體)在同一台電腦上執行並且它們相互通信。所以機器與自己通信**。伺服器偵聽某個埠。我們可以netstat -na用來查看連接,例如一個連接: Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 128.176.123.45:60471 128.176.123.45:50010 ESTABLISHED

地址之間有什麼區別外部ip(如現在),本地網路ip(如192.168.1.4),127.0.0.1eth0是否用於前兩個而lo僅用於最後一個

  1. 是否只能從該機器本身與 127.0.0.1 通信
  2. 是否只能從機器本身和 LAN與 192.168.1.4 通信
  3. 是否只能從機器本身、LAN 和 internet/GAN與 128.176.123.45 通信
  4. 除了 127.0.0.1 情況外,是否始終使用eth0介面(因此與 128.176.123.45 通信以與機器本身通信也使用eth0)?
  5. 0.0.0.0 是綁定埠時的萬用字元,所有命名選項都可以連接到該埠嗎?它正在接受來自所有介面的連接並為每個建構的連接獲取一個具體的本地地址?
  6. 當我用(沒有其他規則)像這樣阻塞除lo介面之外的每個埠時:
iptables -P 輸入刪除
iptables -P 輸出丟棄
iptables -P FORWARD DROP
iptables -A 輸入 -i lo -j 接受
iptables -A 輸出 -o lo -j 接受

可以ping 到機器本身的 192.168.1.4,但我明確地將其配置為eth0介面

  1. 是的,該規則沒有介面說明符,因此適用於所有介面(除非有類似-i lo -j RETURN上面的其他規則)。
  2. 不,如果您正在執行流量路由,則連接使用的介面可能會動態變化。(嚴格來說,它可能仍會綁定到特定介面,因為那是地址所在的位置,但核心可能會根據路由表將流量發送到不同的介面)。
  3. 源地址是最常見的選擇器,但不是唯一的選擇器。您需要考慮路由策略數據庫 (RPDB) ip rule,因為它可以包含比簡單的源地址更複雜的規則,包括多個路由表。

3.a. 每個現代 linux 系統實際上至少有 3 個路由表,以ip rule;開頭。它通常包含from all lookup $X, 在$X哪裡local, main, default.

3.b。ip route show table local應該向您顯示具有連結或主機範圍的所有路由。您將在此處看到所有本地 IP。

3.c。ip route show table main這是您看到的普通路由表 4. 如果目標地址是機器本地的(參見本地路由表),核心實際上會通過該表實現這一點,並通過環回介面發送它,而不是eth0

4.1。是的

4.2. 取決於網路中的路由,如果有 DNAT 或其他路由,那麼它可以比 LAN 更遠地訪問。

4.3. 你說local+LAN+WAN,除了這個還有什麼? 5. 0.0.0.0 稱為INADDR_ANY,萬用字元將主機上的所有 IP 綁定到該地址。 6. 看看我上面寫的,如果地址是本地的,它會通過路由表的環回,而不是通過 eth0。

引用自:https://unix.stackexchange.com/questions/203619