2012-04-19 74 views
2

我希望這不是太奇怪的問題。 我在IIS服務器上運行Web服務,可以通過端口轉發從內部網絡或外部(即Internet)訪問IIS服務器。查找請求是否從防火牆轉發到IIS

外部: 例如,如果我有http://my_public_domain_name連接到我的服務器從互聯網比防火牆將轉發端口80到我的服務器。

內部: 假設我的服務器具有本地網絡中的IP 10.50.1.1,我的電腦是10.60.1.1(相同itranet,不同的子網)不是我可以http://10.50.1.1訪問它。

當我在IIS(ASP.NET)中獲取請求時,我需要知道請求是由防火牆轉發還是內部到達。

謝謝。

+0

您是否考慮過「X-Forwarded-For」HTTP標頭?我認爲如果它是空的,或者它等於客戶端IP,請求應該是內部的 – jbl 2012-04-19 09:27:17

+0

X-Forwarded-For的問題在於並不是所有的路由器/防火牆都實現它。 – 2012-04-20 05:35:39

回答

4

在一次Servlet中,我希望只有局域網的管理員權限,所以我使用了我使用的內部IP範圍,並創建了一個簡單的規則,以管理員身份登錄,查看我的IP是在那個範圍。

在Java中,我使用了HttpServletRequest.getRemoteAddr()和getRemoteHost()。

展望http://www.geekpedia.com/tutorial45_How-to-get-IP-address-of-client.html此頁,它看起來像ASP相當於是:

Request.ServerVariables(「REMOTE_ADDR」)

而且這樣的頁面會幫助你確定它是否是一個私有的(內部)IP範圍與否:https://en.wikipedia.org/wiki/Private_network(不知道它是否對IPv6 IP有幫助)

+0

謝謝。我已經看過請求變量,但問題是我不知道內部網絡範圍。 例如,如果通過VPN連接到內部網絡,內部客戶端可以是10.60.1.1或10.60.1.2,甚至可以是類似172.25.4.1的東西。 – 2012-04-19 09:05:57

+1

對,這就是爲什麼我鏈接了該wikipedia頁面。它具有列出的私有IP範圍。如果你檢查遠程IP對所有的範圍,那麼外界沒有人會匹配其中的一個(除了欺騙,但這是一個不同的話題)。 10.0.0.0 - 10.255.255.255 172.16.0.0 - 172.31.255.255 192.168.0.0 - 192.168.255.255 – Peter 2012-04-19 10:03:47

+0

您是否還希望將VPN視​​爲外部?除非知道他們的範圍,否則你無法知道他們通過網關。 – Peter 2012-04-19 10:06:52