2009-08-18 123 views
1

我需要能夠阻止任何和所有連接到我的電腦從一個特定的IP地址,我知道這是可能的防火牆,但我需要在c#中做到這一點。任何想法如何(需要代碼)。阻止連接通過IP

更新: 它是一種通用的C#應用​​程序不asp.net,目標平臺是WinXp下,直到Win7的

+0

您是否問如何在C#中編寫通用防火牆應用程序?或者你是否在IIS下運行ASP.Net應用程序的情況下提出這個問題?或者是什麼? – jsight 2009-08-18 15:00:07

+1

您是否想要從代碼更新防火牆,或只是忽略來自特定IP地址的代碼請求?如果是後者,那麼它不是一個很好的做事方式,你的系統將主動接收來自IP的數據並忽略它,而不是讓防火牆在第一時間阻止它。另外,目標平臺是什麼?最後,你有沒有提供你想要的任何代碼?如果是這樣,那麼請張貼它並告訴我們它是如何工作的。 – Lazarus 2009-08-18 15:01:24

回答

4

需要了解更多信息......如果你說的socket通信,你可以簡單地關閉與客戶端的連接如果IP地址被阻止,則一旦它連接,或處理連接請求並在那裏評估。

編輯:最簡單的方法可以讓你很可能只是Windows防火牆的API互動......這裏是如何:

http://www.shafqatahmed.com/2008/01/controlling-win.html

+0

這聽起來不錯,如果不完全是我需要的,只是不知道如何去做,文章/代碼將有所幫助 – RC1140 2009-08-18 15:06:05

0

你的問題還不清楚,但我會盡量回答最好我可以,在我的理解。

  1. 是否要控制機器連接到機器上的任何端口?如果是這樣,您需要控制內置的Windows防火牆或找到自己可以控制的過濾驅動程序。爲了編寫你自己的過濾器驅動程序,你必須離開託管代碼的土地,所以我猜這不是一個選項。

要了解如何控制防火牆,這裏有一個鏈接:

http://www.shafqatahmed.com/2008/01/controlling-win.html

更多的谷歌。

  1. 是否要控制遠程計算機與應用程序擁有的計算機上的端口的連接?你也不能這樣做(參見上面的#1)。但是,您可以在連接後採取措施,並在不喜歡遠程IP的情況下關閉連接(檢查遠程端點的IP)。

兩個警告這種方法:

它不會從DoS攻擊拯救你。 您將需要小心,如果你需要IPv6的支持(你不能只檢查在這種情況下,IPV4地址)

HTH

+0

我不介意進入unmanged代碼,只是更喜歡使用託管代碼 – RC1140 2009-08-19 06:41:17

0

「防火牆」在C#中?

首先你必須訪問一個低層的網絡接口,例如:http://msdn.microsoft.com/en-us/library/ms817945.aspx

然後,你必須分析所有傳入數據包,也許丟棄。

這不是一件容易的事情,我不建議您在C#中編寫驅動程序和防火牆,因爲每次啓動計算機時都會加載.NET Framework。 此外,流量解析可能會非常棘手......前段時間,我在C#中實現了一個路由器/流量分析器,並花了我大約一年的時間來獲得網絡編程的經驗,以獲取相關知識。