Windows防火墙屏蔽公网连接|Windows防火墙只允许局域网连接

上回书”说到,我家里接入了两条宽带。

由于我在遥远的东北某地上学,家中网络出现问题,往往不能及时修复,以至于爸妈的网络使用体验极差,常常会给我差评。因此我在局域网搭建了一台家用服务器,用于我远程维修我家的网络。

服务器都搭建了,下一步在上面跑点测试用的脚本和后端,也是很合理的吧?

理想很美好,现实很骨感。由于我一直以来使用防火墙的坏习惯,导致很多服务在申请防火墙权限的时候,我都是直接无脑点允许的,有时候甚至是直接把防火墙给关掉的。

在今天看到某个博主所做的视频之后,尝试通过公网测试了一下家用服务器的端口

看起来好像是没有什么问题的,另一条线是移动的,没有公网IP,这让我松了一口气。但我突然想到,这台家用服务器是有 IPv6 地址的,遂测试了一下 IPv6

Holy shit! 这台服务器 IPv6 的端口竟然是通的!这说明我的服务器已经在公网上裸跑了一段时间了,没被各路大神黑掉也算是一种幸运了。

起初,我想到的是修改监听地址,同时还需要本机和局域网都能够连通,而跑的程序并不支持同时监听 127.0.0.1 和局域网。要想监听多个地址只能监听 * ,同时修改防火墙规则来实现。

Win+R 打开运行,输入 wf.msc 后按回车,打开“高级安全防火墙”

修改防火墙

首先,点击左栏的 入站规则

然后点击右栏的 新建规则

在“新建入站规则向导”中选择 自定义 ,然后点击 下一页

然后选择 此程序路径,并输入一个绝对路径,尽量不要在路径中夹杂变量,有可能出现未知问题,然后点击 下一页

协议类型按照需求选择,例如 TCP ,本地端口选择 特定端口,并输入需要开放的端口或端口范围,例如 1234 或者 1230-1239 ,然后点击 下一页

点击 添加 ,选择 从此 IP 地址范围 ,输入一个 IP 段,例如 192.168.31.1192.168.31.255 ,主要取决于想要开放的局域网 IP 地址范围。然后点击 确定下一页

点击 允许连接下一页

根据需要,选择性的勾选 专用公用 等网络类型,然后点击 下一步

然后输入一个规则名称,描述可以不填写,点击 完成

这样,便创建好了一条新的规则。

禁用自动创建的规则

因为这是一条新建的规则,为了避免此前程序自动创建的规则对这条规则的干扰,需要禁用掉它。

点击 程序 这一列,让入站规则按照程序路径排列。

找到与刚刚创建的规则程序路径一致的规则,在右栏中点击 禁用规则删除 让这条规则失效即可。

最终效果

这时,通过公网再去测试端口,就会发现已经不通了,而局域网测试的时候则正常。

公网测试

内网测试

题外话

关于入站规则和出站规则的区别,可以简单的这么理解

1、出站规则

出则规则使用来限制对外访问的,也就是说从本机发出的请求中,如果请求的对象是被禁止的,该请求会被拦截,表现方式就是断网。

2、入站规则

入站规则是用来限制远程主机访问本机的服务的,就是说,本机接收的请求中如果被请求的程序或具体端口是被限制的,该请求被拦截。

(摘选自“参见4”)

默认情况下,Windows 是不开放入站访问的。但是如果有程序申请防火墙权限的话,就会放开某个端口,以方便来自公网的访问,例如 BT、P2P 类软件。

虽然我用的这个程序不是这类软件,但是当它监听 * 这个地址的时候,也会申请防火墙权限,写入一条入站规则。如果没有一条入站规则允许外部连接的话,监听 * 与监听 127.0.0.1 的效果是差不多的。

但是这条入站规则默认情况下,是允许所有地址访问的,包括 IPv4IPv6 的入站。IPv4 其实还好一些,因为大部分网关设备在没有配置 端口转发DMZ 模式下,都不会允许公网对某个端口的访问请求;但是 IPv6 下,如果网关转发了所有的 IPv6 数据包,那么相当于这条防火墙规则所开放的端口直接暴露在公网下了,属实有些不安全了。

本文完

参见

因为某些原因,一些参考的资料不能列出,敬请谅解!

  1. window10设置防火墙只允许指定 IP 访问指定端口_CodeRain程序雨的博客-CSDN博客

  2. windows 防火墙配置(只允许外网连接,不允许内网连接)-CSDN博客

  3. 淘宝开放平台 - 文档中心

  4. windows中的出站和入站规则 - 抄手砚 - 博客园