查看單個文章
舊 2004-07-17, 05:09 AM   #1
psac
榮譽會員
 
psac 的頭像
榮譽勳章
UID - 3662
在線等級: 級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時級別:30 | 在線時長:1048小時 | 升級還需:37小時
註冊日期: 2002-12-07
住址: 木柵市立動物園
文章: 17381
現金: 5253 金幣
資產: 33853 金幣
預設 如何禁止Socket Pooling

(譯自Microsoft Knowledge Base Article KB238131,KB813368,加以編輯修改)



Socket pooling是微軟IIS服務的一個偵聽IP的問題,當你在IIS管理器裡面選項Web伺服器偵聽的IP時,就算你選項了單個IP,但是IIS的這個Web站點還是會偵聽在所有的IP上。例如,我的網路閘道電腦上面有IIS服務,然後有2個IP(192.168.0.1,61.139.x.x),那麼IIS的預設站點是會綁定在這兩個IP上,就算你在只是選項偵聽他們中的一個,如192.168.0.1,但是IIS還是佔用了另外一個61.139.x.x的對應連接阜。這對於接在多個網路的電腦是一種潛在的安全風險,而且也導致一些位於網路閘道電腦上的web站點不能正常的發佈,如位於ISA 2004或者ISA 2000上的web站點,因為ISA需要佔用外部IP的80連接阜來偵聽進入的http請求,但是web站點已經佔用了此連接阜,所以,必須禁用IIS的Socket pooling,以便讓IIS只是在某個IP上進行偵聽。
對於IIS 5.0和IIS 6.0,解決的辦法是不一樣的,以下我先介紹在IIS 5.0中的處理辦法,執行以下步驟:

1. 開啟命令提示字元,進入 X:\Inetpub\Adminscripts 目錄(X 是IIS安裝驅動器)。

2.執行此指令:

cscript adsutil.vbs set w3svc/disablesocketpooling true

指令返回結果如下:

disablesocketpooling : (BOOLEAN) True

3. 停止並執行IIS Admin服務。

4.重啟 WWW服務。

 

在IIS 6.0中,想解決這個問題,需要使用httpcfg.exe,它是Windows server 2003的support tools,存放在安裝CD的Support\Tools\Support.cab文件中。

執行以下步驟以解決此問題:

安裝Windows server 2003安裝CD的\Support\Tools\Support.msi,然後開啟命令提示字元,執行httpcfg set iplisten -i xxx.xxx.x.x(xxx.xxx.x.x為你想要IIS偵聽的IP位址),如果成功修改,Httpcfg 返回下列提示:
HttpSetServiceConfiguration completed with 0

 

你可以執行httpcfg query iplisten指令來察看當前IIS偵聽的IP位址
psac 目前離線  
送花文章: 3, 收花文章: 1631 篇, 收花: 3205 次