在 NATed 環境中通過 xinetd 進行埠轉發
我正在研究一種設置,該設置需要將來自伺服器埠之一的請求重定向到 NATed 環境中的其他伺服器埠(例如:來自 192.168.1.100:843 的所有請求都應重定向到 192.168.1.200:8443 - 兩台伺服器位於專用防火牆後面並在所有埠之間相互通信。)
服務正在伺服器 192.168.1.200 的 8443 埠上執行。我通過 xinetd 在伺服器 192.168.1.100 上配置了埠轉發,如下所示。
service serv1 { bind = 192.168.1.100 protocol = tcp flags = REUSE socket_type = stream port = 843 wait = no user = root redirect = 192.168.1.200 8443 }
現在,當我在 LAN 內遠端登錄到 192.168.1.100 843 時,我可以在 192.168.1.200:8443 上連接服務
-> telnet 192.168.1.100 843 Trying 192.168.1.100... Connected to 192.168.1.100. Escape character is '^]'.
但是當我試圖通過 192.168.1.100 的公共 IP 連接時,我得到“連接關閉”
-> telnet 1.2.3.4 843 Trying 1.2.3.4... Connected to 1.2.3.4. Escape character is '^]'. Connection closed by foreign host.
在執行 tcpdump 時,我發現在後面的情況下請求不會到達伺服器 192.168.1.200 本身。
我在我們的一個 DC 中進行了類似的設置,並且工作正常。任何想法,如果這裡有什麼問題。
謝謝,梅加南德
好吧,經過進一步調查,我發現它由於 TCPWrappers 而被阻止 添加適當的規則後它的工作正常。
以下添加到 /etc/hosts.allow
serv1: ALL
謝謝
bind
如果您希望它監聽分配給主機的所有 IP,則需要刪除該行。但是,這不能完全解釋您的問題。如果這是您犯的唯一錯誤,則與其他 IP 的連接將被拒絕連接,而不是在建立連接後斷開連接。
其他東西可能正在偵聽另一個 IP 地址上的相同埠號。這甚至可能是一項不同的
xinetd
服務。如果您有其他xinetd
服務,看起來與此類似,它可以解釋問題:service serv2 { bind = 192.0.2.42 protocol = tcp flags = REUSE socket_type = stream port = 843 wait = no user = root redirect = 192.168.1.200 61868 }
這裡的區別在於另一個正在偵聽不同的 IP(但埠號相同),並連接到另一個埠號,該埠號已關閉。如果這是您所做的,那麼與另一個 IP 地址的連接將建立一個已建立的連接,
xinetd
一旦意識到目標埠redirect
已關閉,該連接就必須關閉。最後一部分只是猜測。如果你執行
netstat -ntlpW
,你應該能夠看到,在那個其他 IP 上真正監聽的是什麼。