解決防火牆封鎖問題的最好方法就是修改程式,使程式可以與狀態篩選防火牆一起運作。如果無法修改程式,您可以設定「Windows
防火牆」,以新增特定連接埠及程式的例外。本文將告訴您與 Windows XP Service Pack 2
防火牆預設設定相關的失敗徵狀,並說明如何設定連接埠和程式的例外,以及如何疑難排解防火牆設定。
辨識失敗徵狀
與預設防火牆設定相關的失敗徵狀會在下列兩種情況中出現:
- 用戶端程式未收到伺服器所傳來的資料。例如,下列用戶端程式可能沒有接收到資料:
- FTP 用戶端
- 多媒體資料流軟體
- 某些電子郵件程式中的新郵件通知
- 在 Windows XP 電腦上執行的伺服器程式可能沒有回應用戶端的要求。例如,下列伺服器程式可能沒有回應:
- 網頁伺服器,例如,Internet Information Services (IIS)
- 遠端桌面
- 檔案共用
注意- 網路程式的失敗不只限於防火牆問題。RPC 或 DCOM
安全性變更也可能造成這些失敗。因此,您必須判斷失敗是否與指出程式正被封鎖的「Windows 防火牆安全性警示」一起出現。
- 由於服務通常與使用者登入工作階段無關,因此,服務失敗不會與「Windows
防火牆安全性警示」一起出現。如果失敗與服務有關,請依照<使用 Windows 資訊安全中心設定 Windows
防火牆>一節所述的方法設定防火牆。
如果程式將遭到封鎖,您可能會收到下列「Windows 防火牆安全性警示」:
為了協助保護您的電腦,Windows 防火牆已封鎖這個程式接收來自網際網路或網路的來路不明資訊。
名稱:
Program_Name發行者:
Publisher_Name解除封鎖
保持封鎖
稍後詢問我
請進一步瞭解「Windows 防火牆」。
使用 Windows 防火牆安全性警示設定 Windows 防火牆
「Windows 防火牆安全性警示」提供下列三個選項:
如果要解除封鎖程式,請按一下
[Windows 安全性警示] 對話方塊中的
[解除封鎖],然後按一下
[確定]。
使用 Windows 資訊安全中心設定 Windows 防火牆
新增程式例外
在您新增程式到例外清單之後,就會使防火牆可以開啟程式每次執行時,都可以變更的連接埠範圍。如果要新增程式例外,請依照下列步驟執行:
- 使用系統管理員的帳戶登入電腦。
如需有關如何判斷您目前所登入的帳戶是否為系統管理員帳戶的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:871211?
(http://support.microsoft.com/kb/871211/
)
How to check if you are logged in as an administrator and if a group policy is in place for your computer
- 按一下 [開始],再按一下 [執行],輸入
Wscui.cpl,然後按一下 [確定]。
- 在 [資訊安全中心] 視窗中,按一下 [Windows
防火牆]。
- 在 [例外] 索引標籤上,按一下
[新增程式]。
- 在程式清單中,按一下您想要新增的程式名稱,然後按一下
[確定]。如果在程式清單中找不到您的程式名稱,請按一下 [瀏覽],以找出程式,然後按一下
[確定]。
注意 如果您不知道程式的位置,請與程式廠商聯絡,以找出程式位置。
如需有關如何聯絡程式廠商的詳細資訊,請按一下下面清單中相關的文件編號,檢視「Microsoft 知識庫」中的文件:65416?
(http://support.microsoft.com/kb/65416/
)
Hardware and software vendor contact information, A-K
60781?
(http://support.microsoft.com/kb/60781/
)
Hardware and software vendor contact information, L-P
60782?
(http://support.microsoft.com/kb/60782/
)
Hardware and software vendor contact information, Q-Z
- 按一下 [確定],以關閉 [Windows 防火牆]。
- 測試程式,以檢查防火牆設定值是正確的。
新增連接埠例外
如果在例外清單中新增程式無法解決這個問題,您可以手動新增連接埠。如果要執行這項操作,首先,您必須識別出程式所使用的連接埠。識別程式所使用連接埠的可靠方法就是聯絡程式廠商。如果您無法聯絡廠商,或是無法取得連接埠清單,您可以使用
Netstat.exe 工具來識別使用中的連接埠。
識別連接埠
- 啟動程式,並嘗試使用程式的網路功能。例如,使用多媒體程式,請嘗試開啟音效資料流。如果是網頁伺服器,請開啟服務。
- 在命令提示字元中輸入 Netstat –ano >
netstat.txt,然後按 ENTER。這個命令會建立 Netstat.txt
檔案。這個檔案會列出所有聽候的連接埠。
- 在命令提示字元中輸入 Tasklist >
tasklist.txt,再按 ENTER。如果有問題的程式是以服務的方式執行,請輸入 Tasklist
/svc > tasklist.txt,而不要輸入 Tasklist >
tasklist.txt,如此,就會列出每個處理程序所載入的服務。
- 開啟 Tasklist.txt 檔案,然後找出您正在疑難排解的程式。記下處理程序的「處理程序識別元」,然後開啟
Netstat.txt 檔案。記下與「處理程序識別元」相關的任何項目,以及所使用的通訊協定。
如果處理程序的連接埠號碼小於 1024,連接埠號碼可能不會改變。如果所使用的連接埠號碼大於或等於
1024,程式可能會使用某個範圍的連接埠。因此,開啟個別連接埠可能無法解決問題。
新增連接埠例外
- 按一下 [開始],再按一下 [執行],輸入
Wscui.cpl,然後按一下 [確定],以開啟「Windows
防火牆」。
- 按一下 [例外]
索引標籤,再按一下[新增連接埠],以顯示 [新增連接埠] 對話方塊。
- 輸入程式所使用的連接埠號碼。
- 根據程式所使用的通訊協定,選取 TCP 或 UDP 通訊協定。
- 在 [名稱] 欄位中,輸入連接埠的描述性名稱。
- 按一下 [變更領域],以檢視或設定連接埠例外的領域,然後按一下
[確定]。
- 按一下 [確定],以關閉 [新增連接埠]
對話方塊。
- 為了確認程式的連接埠設定是正確的,請測試程式。
使用記錄
您可以啟用記錄,以協助識別輸入傳輸的來源,並提供有關將要封鎖哪些傳輸的詳細資料。%Windir%\pfirewall.log
是預設的記錄檔。如果要啟用記錄,請執行下列步驟:
- 按一下 [開始],再按一下 [執行],輸入
Firewall.cpl,然後按一下 [確定]。
- 按一下 [進階] 索引標籤。
- 在 [安全性記錄] 中,按一下
[設定值]。
- 在 [記錄選項] 中,按一下以選取
[記錄丟棄的封包] 核取方塊,然後按一下 [確定]。
- 按一下 [確定],以關閉 [Windows 防火牆]。
注意 並未記錄輸出成功,也不會記錄未被封鎖的輸出傳輸。
解譯記錄檔
下列記錄檔資訊是為每個已記錄的封包而收集的:
摺疊此表格展開此表格
| 欄位 | 說明 | 範例 |
| Date | 顯示已記錄交易發生的年、月、日。日期的記錄格式為 YYYY-MM-DD,其中 YYYY
是年份,MM 是月份,DD 是日期。 | 2001-01-27 |
| Time | 顯示已記錄交易發生的時、分、秒。時間的記錄格式為:HH:MM:SS,其中 HH 是 24
小時制的小時,MM 是分鐘數,SS 是秒數。 | 21:36:59 |
| Action | 指出防火牆所監視的操作。防火牆的可用選項為 OPEN、CLOSE、DROP,以及
INFO-EVENTS-LOST。INFO-EVENTS-LOST 動作指出,發生過但未記錄在記錄檔的事件數目。 | OPEN |
| Protocol | 顯示通訊時所使用的通訊協定。此外,通訊協定項目可以是未使用 TCP、UDP 或 ICMP
的封包數目。 | TCP |
| src-ip | 顯示嘗試建立通訊的來源 IP 位址或電腦的 IP
位址。 | 192.168.0.1 |
| dst-ip | 顯示通訊嘗試的目的 IP 位址。 | 192.168.0.1 |
| src-port | 顯示傳送電腦的來源連接埠號碼。src-port 項目是以介於 1 到 65,535
之間的整數格式來記錄。只有 TCP 和 UDP 會顯示有效的 src-port 項目。所有其他通訊協定會顯示 src-port 項目
-。 | 4039 |
| dst-port | 顯示目的電腦的連接埠號碼。dst-port 項目是以介於 1 到 65,535
之間的整數格式來記錄。只有 TCP 和 UDP 會顯示有效的 dst-port 項目。所有其他通訊協定會顯示 dst-port 項目
-。 | 53 |
| size | 以位元組顯示封包大小。 | 60 |
| tcpflags | 顯示在 IP 封包的 TCP 標頭中所找到的 TCP 控制旗標:
- Ack 應答欄位顯著性
- Fin 傳送者不再傳送資料
- Psh 發送功能
- Rst 重設連線
- Syn 同步順序號碼
- Urg 緊急指標欄位顯著性
旗標被寫為大寫字母。 | AFP |
| tcpsyn | 顯示封包中的 TCP 序號。 | 1315819770 |
| tcpack | 顯示封包中的 TCP 應答號碼。 | 0 |
| tcpwin | 以位元組顯示封包中的 TCP 視窗大小。 | 64240 |
| icmptype | 顯示代表 ICMP 訊息中 Type 欄位的號碼。 | 8 |
| icmpcode | 顯示代表 ICMP 訊息中 Code 欄位的號碼。 | 0 |
| info | 依照所發生的動作類型而定,顯示資訊項目。例如,INFO-EVENTS-LOST
動作會在記錄檔中,從這個事件類型最後一次出現的時間開始,為已發生但未記錄在記錄檔的事件數目建立項目。 | 23 |
注意 連字號 (-) 是用在項目沒有可用資訊的欄位中。
使用命令列支援
「Windows 防火牆 Netsh 協助程式」已由 Microsoft Advanced Networking Pack 新增至
Windows XP 中。這個命令列協助程式先前已套用至 IPv6 Windows 防火牆。由於 Windows XP Service Pack
2,現在,協助程式包含了設定 IPv4 的支援。
有了 Netsh 協助程式,您現在可以:
- 設定「Windows 防火牆」的預設狀態。(選項包括了
[關閉]、[開啟] 和
[開啟且無例外狀況])。
- 設定必須開啟的連接埠。
- 設定連接埠,以啟用本機子網路的全域存取或限制存取。
- 設定在所有介面上,或只在特定介面開啟連接埠。
- 設定記錄選項。
- 設定「網際網路控制訊息通訊協定」(ICMP) 處理選項。
- 從例外清單新增或移除程式。
除了「Windows 防火牆」版本沒有特定的功能以外,這些設定選項會套用到 IPv4 Windows 防火牆和 IPv6
Windows 防火牆。
收集診斷資料
您可以使用 Netsh.exe 工具,在命令列中擷取「Windows 防火牆」設定和狀態資訊。工具新增 IPv4 防火牆支援至下列
Netsh 內容:
netsh firewall
如果要使用這個內容,請在命令提示字元中輸入
netsh
firewall,然後視情況使用其他的
Netsh 命令。下列命令對於收集防火牆狀態和設定資訊,非常有用:
- Netsh firewall show state
- Netsh firewall show config
將這些命令的輸出,與
netstat –ano
命令的輸出做比較,以識別可能已經開啟聽候連接埠,並且防火牆設定中沒有對應例外的程式。下列表格列出支援的資料收集和設定命令。
注意 只有系統管理員才可以修改設定值。
資料收集摺疊此表格展開此表格
| 命令 | 說明 |
| show allowedprogram | 顯示防火牆所允許的程式設定。 |
| show config | 顯示詳細的本機設定資訊。 |
| show currentprofile | 顯示目前防火牆的設定檔。 |
| show icmpsetting | 顯示防火牆 ICMP 設定。 |
| show logging | 顯示防火牆記錄設定。 |
| show opmode | 顯示防火牆操作設定。 |
| show portopening | 顯示防火牆連接埠設定。 |
| show service | 顯示防火牆服務設定。 |
| show state | 顯示目前的防火牆狀態。 |
| show notifications | 顯示防火牆通知設定。 |
設定摺疊此表格展開此表格
| 命令 | 說明 |
| add allowedprogram | 新增防火牆所允許的程式設定。 |
| set allowedprogram | 設定防火牆所允許的程式設定。 |
| delete allowedprogram | 刪除防火牆所允許的程式設定。 |
| set icmpsetting | 設定防火牆 ICMP 設定。 |
| set logging | 設定防火牆記錄設定。 |
| set opmode | 設定防火牆操作設定。 |
| add portopening | 新增防火牆連接埠設定。 |
| set portopening | 設定防火牆連接埠設定。 |
| delete portopening | 刪除防火牆連接埠設定。 |
| set service | 設定防火牆服務設定。 |
| set notifications | 設定防火牆通知設定。 |
| reset | 重設防火牆設定至預設值。這個命令提供與「Windows 防火牆」介面上的 [還原成設定值]
按鈕一樣的功能。 |
疑難排解防火牆
除了程式相容性問題以外,「Windows 防火牆」可能會遭遇其他問題。請依照下列步驟診斷問題:
- 如果要檢查 TCP/IP 是否正確地運作,請使用 ping 命令,以測試回送位址 (127.0.0.1) 及指派的 IP 位址。
- 檢查使用者介面中的設定,以判斷防火牆是否不小心地設定為 [關閉] 或
[開啟且無例外狀況]。
- 使用 netsh 命令,取得狀態和設定資訊,以便尋找可能被預期行為干擾的意外設定。
- 在命令提示字元中輸入下列命令,以判斷 [Windows 防火牆/網際網路連線共用]
服務的狀態:
sc query sharedaccess
(這個服務的簡短名稱為 SharedAccess)。如果這個服務沒有啟動,請根據 Win32
結束碼,疑難排解服務啟動。 - 在命令提示字元中輸入:
sc query ipnat
,以判斷 Ipnat.sys 防火牆驅動程式的狀態。此外,這個命令也會從最後一個啟動嘗試返回 Win32
結束碼。如果驅動程式未啟動,請使用能夠套用至任何其他驅動程式的疑難排解步驟。 - 如果驅動程式和服務都在執行,並且事件日誌中沒有相關錯誤,請使用 [Windows
防火牆] 內容中 [進階] 索引標籤上的 [還原成預設值]
選項,消除任何潛在的問題設定。
- 如果仍然無法解決問題,請尋找可能產生非預期行為的群組設定。如果要執行這項操作,請在命令提示字元中輸入
GPResult /v >
gpresult.txt,然後檢查與防火牆相關的設定原則的結果文字檔。
設定 Windows 防火牆群組原則
請與您的網路系統管理員聯絡,以判斷「群組原則」設定是否會阻止程式及方案在企業環境中執行。
「Windows
防火牆群組原則」設定位於下列「群組原則物件編輯器」嵌入式管理單元路徑:
- 電腦設定/系統管理範本/網路/網路連線/Winndows 防火牆
- 電腦設定/系統管理範本/網路/網路連線/Windows 防火牆/網域設定檔
- 電腦設定/系統管理範本/網路/網路連線/Windows 防火牆/標準設定檔
您可以由這些位置,設定下列「群組原則」設定:
- Windows 防火牆:允許略過已驗證的網際網路通訊協定安全性 (IPSec)
- Windows 防火牆:保護所有網路連線
- Windows 防火牆:不允許例外
- Windows 防火牆:定義程式例外
- Windows 防火牆:允許本機程式例外
- Windows 防火牆:允許遠端系統管理例外
- Windows 防火牆:允許檔案和印表機共用例外
- Windows 防火牆:允許 ICMP 例外
- Windows 防火牆:允許遠端桌面例外
- Windows 防火牆:允許 UPnP 架構例外
- Windows 防火牆:禁止通知
- Windows 防火牆:允許記錄
- Windows 防火牆:禁止單點傳送回應到多點傳送或廣播要求
- Windows 防火牆:定義連接埠例外
- Windows 防火牆:允許本機連接埠例外
如需有關 Windows 防火牆群組原則設定的詳細資訊,請下載下列白皮書: