簡體   English   中英

如何知道IP地址在Linux服務器上是否為本地

[英]How to Know an IP Address is Local or not on Linux Server

我們正在使用C / C ++在Linux上開發服務器軟件,該軟件將限制來自Internet的請求的下載速率,但是對於來自本地計算機(內部網)的請求,則不會設置任何限制。

問題是如何判斷IP地址是否為本地,是否可以通過c / c ++通過讀取某些網絡號設置(也許是從路由器?)來實現?

更新
當我說本地IP時,我的意思是它來自公司內部。 例如,假設公司有三個子網(該公司只有到互聯網的DSL鏈接),它們分別是10.123.1.xxx,172.16.1.6.xxx和192.168.1.xxx,那么這三個子網中的所有IP地址應該被視為本地地址。

專用地址范圍是:

10.0.0.0 - 10.255.255.255 (10/8 prefix)

172.16.0.0 - 172.31.255.255 (172.16/12 prefix)

192.168.0.0 - 192.168.255.255 (192.168/16 prefix)

您可能還想過濾掉本地鏈接地址(169.254 / 16)

然后,您可以解析代碼中的ip地址(以獲取可以使用avahi或類似名稱的地址,並將所有地址保存到文件中,然后分別解析每個地址),並檢查其是否與這些地址匹配。 如果不限制連接

編輯

您也可以考慮使用getifaddrs函數來列出本地地址

如果在請求連接的計算機的IP地址上運行traceroute ,則應該能夠查看該路由是否將您帶入“公司外部的網關”(通常是ISP)。 我家中的一個簡單示例是內部路由器連接到的Time Warner網關。 如果到客戶端的路由沒有通過ISP(如您所提到的,您具有DSL鏈接;因此應該知道DSL端點的IP地址),則它是一個內部請求。 這並不需要您了解公司內部IP地址的完整地圖-您可以假設路由器知道了該地址。

要獲取此信息,您可以在程序內部運行系統命令並解析響應。

首先,從命令行(使用已知的“內部”和“外部” IP地址)運行它,然后看一下區別。 如果您在那之后需要進一步的幫助,請使用您收集的信息來更新您的問題。

暫無
暫無

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

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