微軟的 Windows 作業系統現在都內建 Windows Firewall,會幫電腦阻擋惡意軟體的網路攻擊。如下圖,Windows Firewall 的介面是視覺化的,它可以讓你開啟 Port,可是一次只能設定一個 Port (如下圖二)。如果你需要開很多個 Ports,可以在命令列下 (Command Prompt) 以指令的方式操作,底下說明怎麼做。
一次開多個 Ports
假設我們要開 UDP 1234 到 1238 這 5 個 ports,操作步驟如下:
Step 1: 點選 "開始 > 執行",輸入 cmd,然後按下確定打開命令列視窗:
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 有開啟成功:
Step 3: 打開 Windows Firewall,切到 "例外" 頁面,檢查例外清單,確認 1234 到 1238 這 5 個 ports 有沒有成功開啟:
如果要一次關掉多個 Port,例如把前面打開的 5 個 ports 全部關掉,則指令為:
FOR /L %I IN (1234,1,1238) DO netsh firewall del portopening UDP %I
執行畫面如下:
不只 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 指令就是這麼設計的,儘管納悶也拿他沒法子!:-)
沒有留言:
張貼留言
注意:只有此網誌的成員可以留言。