簡體   English   中英

在TCP Python SocketServer中捕獲目標IP

[英]Capture destination IP in TCP Python SocketServer

我有一個在Linux服務器上運行的Python腳本,該服務器具有與之關聯的12個IP地址。 我從Python的socketserver庫中實現了一個TCPSServer,並使其在所有網絡接口上進行偵聽。

多個設備將連接到該服務器,並且我們需要能夠以某種方式捕獲目標的IP地址(不是客戶端的IP地址,而是客戶端認為正在連接的服務器的IP地址)。 現在,我可以接收客戶端連接,可以看到客戶端IP,但是我無法找到獲取目標IP的方法。

有誰知道在socketserver類上捕獲目標IP的方法? 看來,如果我可以收聽多個接口,將有一種方法可以判斷哪個接口被命中。

該服務器最終將安裝在多台服務器上,每台服務器具有未知數量的網絡接口。 但是,我們確實知道這只會在基於Linux的系統上存在。 因此,如果有特定於操作系統的方法可以做到這一點,那么我也很好。

如果有socket對象,則可以使用socket.getsockname()來獲取其綁定的IP地址。 因此,遵循以下原則:

# IPv4
client = listening_socket.accept()
(ipv4,port) = client.getsockname()

# IPv6
client = listening_socket.accept()
(address, port, flow_info, scope_id) = client.getsockname()

雖然從未在多socket服務器上對所有接口都綁定了socket進行過測試,但據我所知,它可能會返回IPv4 0.0.0.0或等效的IPv6,這並不是那么有用。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM