我们使用 openvpn 提供从 XP 到工作的访问权限。我们使用 AD 策略来确保 XP 防火墙在域外时处于开启状态,在域内时处于关闭状态。使用 openvpn,您将获得一个新的网络接口,当您离开域并使用 vpn 重新工作时,XP 会显示“已找到域,但我也在非域网络上,因此防火墙已开启”。
但是,我发现我们可以使用 netsh 在 openvpn 接口上完全禁用防火墙:
echo firewall set opmode mode = DISABLE interface = "name of openvpn interface" | netsh
这很棒:这意味着当我们的用户在家/酒店时,他们的防火墙是启动的 - 但通过 vpn 进行的远程访问是双向的。
然后 Win7 出现了(我们假装 Vista 不存在 - 这并不难!)。“域”和“其他”的概念已经不复存在,现在变成了“域”、“家庭/工作”和“公共” - 而且您无法按接口禁用防火墙。它比 XP 复杂得多,顺便说一句,我看到很多家庭用户因此完全禁用了 Win7 防火墙 - 哎呀!
无论如何,我的问题是,我如何才能复制我们在 XP 下拥有的功能?我如何编写 Win7 脚本以完全禁用 openvpn 接口上的防火墙,但在其他接口上照常运行?我想要的最终结果是,我们(IS 组、AV 服务器、漏洞扫描器)可以在他们在酒店/家里/等地方时远程访问该盒子 - 就像他们在公司局域网上一样。我需要一个脚本,因为我对 GUI 的经验意味着,否则我们将需要一份 10 页的屏幕截图文档供我们的帮助台人员使用!
答案1
您可以根据每个 NIC(包括虚拟 NIC)控制防火墙,并通过配置文件进行不同的设置。
在控制面板的“Windows 防火墙”中,选择树根节点上的属性。在每个配置文件选项卡中,“受保护的网络连接”按钮允许您选择受保护的 NIC。
因此,仅在私有配置文件中禁用 NIC,并验证网络检测在 LAN 之外时是否选择公共网络。
答案2
我知道这是一个老问题,但我还是会发布此内容以供参考。您可以使用 Powershell:
Set-NetFirewallProfile -Name Private -DisabledInterfaceAliases 'Connection Name'
答案3
有一个 GUI 选项可以禁用具有高级安全性的特定 NIC 上的防火墙,操作方法如下:转到 CP --> 系统和安全 ---> Windows 防火墙 --> 高级设置(左侧面板) --> 选择属性(操作 TAB(右侧)) --> 单击自定义 --> 然后取消选中要禁用防火墙的接口(NIC),谢谢
答案4
正如“理查德”所说,您可以通过 GUI 禁用 Windows 7 中每个接口的防火墙,只是它比较隐蔽。
不幸的是,在 Windows 7 上自动执行该设置相当困难。Netsh 不提供对该功能的访问(根据微软的说法),并且 ProGTX 建议的 powershell 命令似乎仅适用于 Windows 8。我发现在 Windows 7 上自动执行该设置的唯一方法是使用 COM APIhttp://msdn.microsoft.com/en-us/library/windows/desktop/aa366418%28v=vs.85%29.aspx