Firewall

iptables 重定向范圍

  • December 15, 2010

我們通過非特權使用者在非特權埠上執行 webapp。啟動腳本以 root 身份執行,僅用於設置 iptables REDIRECT 規則,然後刪除權限並啟動應用程序。

我正在嘗試使用 NAGIOS 監控這個 webapp,但是 nagios-plugins 中附帶的預設“check_http”外掛無法連接到埠 80 上的 web 伺服器。NAGIOS 與 webapp 在同一主機上執行。

我想監視埠 80,因為這是使用者連接的方式,所以我想確保它被充分轉發,等等。

NAGIOS 配置將主機地址指定為 eth0 私有 IP 地址。針對該 IP 地址執行 check_http 腳本會產生:

# libexec/check_http -H 192.168.20.15

連接被拒絕

HTTP CRITICAL - 無法打開 TCP 套接字

但是,如果我在本地指定環回地址,它就可以工作。

# libexec/check_http -H localhost

HTTP OK: HTTP/1.1 200 OK - 8007 bytes in 0.035 second response time|time=0.034517s;;;0.000000 size=8007B;;;0

從其他主機到此 webapp 伺服器上的埠 80 的連接工作正常。但我想了解為什麼我不能在埠 80 上本地監控它,eth0而不是lo.

我們的 iptables 規則是空的,除了 nat 表:

*nat

:PREROUTING 接受

$$ 2036:252802 $$

:POSTROUTING 接受$$ 478669:34376409 $$

:輸出接受$$ 475605:34192517 $$

-A PREROUTING -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 7999

-A PREROUTING -p tcp -m tcp –dport 443 -j REDIRECT –to-ports 7998

-A OUTPUT -d 127.0 .0.1 -p tcp -m tcp –dport 80 -j REDIRECT –to-ports 7999

-A OUTPUT -d 127.0.0.1 -p tcp -m tcp –dport 443 -j REDIRECT –to-ports 7998

送出

等一下。不開玩笑,因為-A OUTPUT線路將流量發送到目標埠,所以它可以正常工作。我想這意味著這裡的解決方案是將eth0介面的兩個額外 OUTPUT 行添加到-d.

意思是,複製包含 127.0.0.1 的行,並將該地址替換為192.168.20.15.

不開玩笑…

引用自:https://serverfault.com/questions/212682