iptables 重定向范圍
我們通過非特權使用者在非特權埠上執行 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
.不開玩笑…