擁有任意公用IP位址,有沒有辦法在不知道網路遮罩的情況下確定它所屬的子網路?
答案1
簡短的回答是否定的。
你能做的最好的事情就是做出有依據的猜測——有依據的程度取決於你的絕望程度以及你擁有的資源。
猜測的來源包括(但可能不限於)
- 來自 IP 位址的提示 - 至少在新西蘭,歷史上位址被分成大小範圍(最小的是 256 個「C 類」)。
- BGP 路由表告訴您什麼。
- 根據 @Zina 帖子 - 網關和主機如何回應。這裡有一些陷阱,充其量也是不可靠的。關於下一跳的假設並不總是有效 - 儘管您可以對此進行改進,如果您可以對設備進行指紋識別並查看同一路由器是否在多個地址上響應並從中推斷子網劃分。
- 透過從同一子網路中路由器後面的裝置提供的服務中取得提示 - 同樣,高度不可靠,但是,例如,雲端服務可能具有以相同方式設定的相同 Web 伺服器的多個實例及其鄰居 -可能屬於其他租戶的租戶會有不同的配置。
- 最後一個八位元組還告訴你一些事情。某些值更有可能與常規地址(廣播和網路)表現“不同”,這也可能有助於推斷它。
答案2
您也許可以使用traceroute 來找到它。使用 尋找您的公共網關traceroute www.google.com
。現在只需從公共 DG 開始追蹤上一個/下一個 IP。當您開始看到額外的跳躍時,它將向您顯示邊界。例如。我的IP是xy96.112,我的路由器顯示DG是96.1。我看到與traceroute google check相同,第一跳本機路由器IP,下一跳公共網關IP。所以我知道它至少是一個 /25 網路(第一個 IP -> 1 - 我的公共 IP -> 112 - 意味著至少有 126 個主機的網路)。透過追蹤路由,我看到xy95.254 上有一個額外的躍點(因此96.1 上的DG 是網路中的第一個IP),並且在xy98.1 上有一個額外的躍點- 所以我假設它是/22 網路。當然,只有當您從躍點獲得帶有 IP 位址的回應時,這才有效。