2012年11月7日 星期三

Windows XP Firewall 如何一次開多個 Ports

微軟的 Windows 作業系統現在都內建 Windows Firewall,會幫電腦阻擋惡意軟體的網路攻擊。如下圖,Windows Firewall 的介面是視覺化的,它可以讓你開啟 Port,可是一次只能設定一個 Port (如下圖二)。如果你需要開很多個 Ports,可以在命令列下 (Command Prompt) 以指令的方式操作,底下說明怎麼做。

2012-11-07_14h32_46

2012-11-07_14h33_19

一次開多個 Ports

假設我們要開 UDP 1234 到 1238 這 5 個 ports,操作步驟如下:

Step 1: 點選 "開始 > 執行",輸入 cmd,然後按下確定打開命令列視窗:

2012-11-07_14h47_40

Step 2: 在命令列視窗輸入底下指令:

FOR /L %I IN (1234,1,1238) DO netsh firewall add portopening UDP %I "UDP "%I

輸入指令,按下 Enter 後,Windows Firewall 就會開啟 1234 到 1238 這 5 個 ports。如下圖,Windows 會顯示指令執行後的結果,回應 "確定" 表示 Port 有開啟成功:

image

Step 3: 打開 Windows Firewall,切到 "例外" 頁面,檢查例外清單,確認 1234 到 1238 這 5 個 ports 有沒有成功開啟:

image

如果要一次關掉多個 Port,例如把前面打開的 5 個 ports 全部關掉,則指令為:

FOR /L %I IN (1234,1,1238) DO netsh firewall del portopening UDP %I

執行畫面如下:

image

不只 UDP Ports,TCP Ports 也可以,只要把 Protocol 參數改為 TCP 即可:

一次開多個 TCP Ports:

FOR /L %I IN (1234,1,1238) DO netsh firewall add portopening TCP %I "TCP "%I

一次關閉多個 TCP Ports:

FOR /L %I IN (1234,1,1238) DO netsh firewall del portopening TCP %I

如果要開的 Ports 號碼是不連續的呢?也可以,把指令稍微調整一下就好:

一次開多個 UDP Ports,Port 號碼不連續:

FOR %I IN (1234, 5678, 8765, 4321) DO netsh firewall add portopening UDP %I "UDP "%I

一次關閉多個 UDP Ports,Port 號碼不連續:

FOR %I IN (1234, 5678, 8765, 4321) DO netsh firewall del portopening UDP %I

如果怕記不住,可以把指令儲存成 .bat 批次檔,下回你只要跑一下批次檔就行了。不過,要特別注意一件事!在批次檔中,變數的指定必須使用 %%variable,而不是用 %variable,像這樣:

FOR /L %%I IN (1234,1,1238) DO netsh firewall add portopening UDP %%I "UDP "%%I

Well, 同樣是變數的指定,在命令列下跟批次檔裏,寫法居然不一致,我知道,這很怪,但微軟 DOS 指令就是這麼設計的,儘管納悶也拿他沒法子!:-)

參考資料

0 意見: