如何通过批处理文件打开 Windows 防火墙上的端口

Posted

技术标签:

【中文标题】如何通过批处理文件打开 Windows 防火墙上的端口【英文标题】:How to open ports on Windows firewall through batch file 【发布时间】:2013-02-16 18:03:28 【问题描述】:

批处理文件中是否有任何方法可以通过批处理文件打开 Windows 上的特定端口?最好让安装程序为我们的服务器应用程序执行此操作,而不是让用户手动执行此操作。

【问题讨论】:

【参考方案1】:

使用netsh.exe。一个非常简单的带有端口参数的批处理文件:

@echo off
rem -- open port (first argument passed to batch script)
netsh advfirewall firewall add rule name="Open Port %1" dir=in action=allow protocol=TCP localport=%1 remoteip=10.15.97.0/24,10.17.0.0/16

【讨论】:

请注意,启动 netsh 的进程(或启动 netsh 的任何程序,例如您的批处理文件)需要管理员权限才能进行端口异常。您的安装程序通常可以在安装时处理此问题,具体取决于安装程序是否以管理员权限运行。【参考方案2】:

这是@Kevin Richardson 提供的解决方案的扩展。 请注意,每次运行相同的命令时,“netsh advfirewall add rule”命令都会创建一个具有相同名称的新规则。下面的脚本有助于防止它

ECHO OFF
set PORT=8081
set RULE_NAME="Open Port %PORT%"

netsh advfirewall firewall show rule name=%RULE_NAME% >nul
if not ERRORLEVEL 1 (
    rem Rule %RULE_NAME% already exists.
    echo Hey, you already got a out rule by that name, you cannot put another one in!
) else (
    echo Rule %RULE_NAME% does not exist. Creating...
    netsh advfirewall firewall add rule name=%RULE_NAME% dir=in action=allow protocol=TCP localport=%PORT%
)

【讨论】:

我已经尝试过您的解决方案(但在回声中将 %RULENAME% 替换为 %RULE_NAME%...),它按预期工作,谢谢! 谢谢,这很有帮助

以上是关于如何通过批处理文件打开 Windows 防火墙上的端口的主要内容,如果未能解决你的问题,请参考以下文章

省公司让给服务器漏洞处理,本人对这种东西不是很了解,如何在防火墙上过滤外来的ICMP timest

lixnu系统防火墙上白名单怎么加

解决docker容器开启端口映射后,会自动在防火墙上打开端口的问题

云服务器以及linux操作系统打开防火墙,在墙上开一个小口

在windows上通过浏览器访问linux上的服务

如何设置防火墙端口