IPTables 和連接埠重新導向 Apache2

IPTables 和連接埠重新導向 Apache2

我使用 Apache 將子網域重新導向到連接埠 ( mod_proxymod_proxy_httpmod_proxy_ajp) 和 IP 表來限制直接連接埠存取權(除了我和本機伺服器)。

我的 IP 表如下所示:

Chain INPUT (policy ACCEPT)
target     prot opt source               destination
DROP       tcp  -- !c-24-7-110-109.hsd1.ca.comcast.net  anywhere             tcp dpt:tproxy
ACCEPT     tcp  --  localhost            anywhere             tcp dpt:tproxy
DROP       tcp  -- !c-24-7-110-109.hsd1.ca.comcast.net  anywhere             tcp dpt:http-alt
DROP       tcp  -- !c-24-7-110-109.hsd1.ca.comcast.net  anywhere             tcp dpt:webmin
ACCEPT     tcp  --  localhost            anywhere             tcp dpt:webmin

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

我將在這篇文章中使用的上下文是:

Sonatype Nexus:nexus.example.com => example.com:8081

詹金斯 CI:jenkins.example.com => example.com:8080

網路分鐘:webmin.example.com => example.com:10000

我現在所做的工作是除了我之外沒有直接的連接埠存取權。我還希望本地系統能夠存取我現在擁有的連接埠。我用於mod_proxy_ajpJenkins CI 和 Webmin 以及mod_proxy_httpSonatype Nexus。

當我訪問直接端口時,這些服務都加載得很好。當我要求其他人加載每個內容時,他們無法加載,所以這是有效的。

然而,現在,當嘗試訪問其中一個子域時,我得到了永無止境的負載(無限循環?)

不過,當我在子網域上運行tracert時,它結束得很好,所以我可以劃掉無限循環。

這是我的 Sonatype Nexus apache 虛擬主機設定:

<VirtualHost *:80>
        ServerName nexus.majornoob.com
        ServerAlias www.nexus.majornoob.com
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyPass / http://localhost:8081/
        ProxyPassReverse / http://localhost:8081/
        ProxyPassReverseCookiePath / /
        ErrorLog /var/www/majornoob/error-nexus.log
        LogLevel warn
        CustomLog /var/www/majornoob/access-nexus.log combined
</VirtualHost>

這是我的詹金斯:

<VirtualHost *:80>
        ServerName jenkins.majornoob.com
        ServerAlias www.jenkins.majornoob.com
        ProxyRequests Off
        ProxyPreserveHost On
        ProxyPass / ajp://127.0.0.1:8080/
        ProxyPassReverse / ajp://127.0.0.1:8080/
        ProxyPassReverseCookiePath / /

        ErrorLog /var/www/majornoob/error-jenkins.log

        LogLevel warn

        CustomLog /var/www/majornoob/access-jenkins.log combined
</VirtualHost>

這兩個虛擬主機的例子分別使用mod_proxy_ajpmod_proxy_http

誰能幫我弄清楚為什麼我會得到無限的負荷?

謝謝。

編輯:沒關係無限循環。一段時間後,我收到 503 服務不可用錯誤。

答案1

iptables 規則按列印順序從上到下進行評估。您遇到的問題是代理連接來自本機主機,它符合以下規則:

DROP       tcp  -- !c-24-7-110-109.hsd1.ca.comcast.net  anywhere             tcp dpt:tproxy

localhost不是c-24-7-...,因此連接被斷開。代理模組最終超時;如果規則是 REJECT 而不是 DROP,您會更快收到錯誤(因為您會被明確拒絕,而不是連線嘗試消失)。

解決方案非常簡單:重新排序規則,將「從本機接受」放在「從其他任何地方拒絕」之前。 (IP 路由以最具體的方式匹配,但由於 iptables 是多因素的,因此不一定定義)。

我通常建議有一個允許所有本地主機通信的第一條規則(通過環回接口,以防萬一有人通過以太網嘗試一些奇怪的事情);嘗試新增

iptables -I INPUT -i lo -s localhost -d localhost -j ACCEPT

將 ( -I) 插入到清單頂部。

相關內容