Windows7防火墙与TeamViewer的VPN

从Win7开始,桌面版Windows的防火墙不再是鸡肋,许许多多详细的规则配置,
表明了它其实是一个很有“妨害”作用的软件,经常可以干扰“用户”各种各样的连接活动。
比如在使用TeamViewer的VPN时,开着防火墙的两台机怎么都无法互相ping通。

先说说ping通有什么好处,鉴于本人不是学网络的,就直观点儿的讲,
从A机器ping通B机器,意味着A可以使用B的远程服务,再具体一点儿说,
可以调用FTP服务器、HTTP服务器、telnet服务器等。

然而ping不通的时候,你除了得到一堆超时以外什么也访问不了。
以前每次遇到这么个情况,我都只有从A机器打开B机器的远程控制,关闭B机器的防火墙,
在机器A上测试ping通过,拷贝B机器在VPN上的IP去FTP客户端,然后重新从A登录B的FTP服务器。

我一直想找个不关闭防火墙只使用例外规则来达成这件事的办法,不过真心搜索不到……
于是就有了这篇文章,一切方法都是我试出来的,目前使用正常。

想要在VPN下ping通,必须开启ipv4的回显

入站规则是这两条:

文件和打印机共享(回显请求 - ICMPv4-In)
文件和打印机共享(回显请求 - ICMPv6-In)

我是只使用IPv4的,IPv6一直是禁用状态,所以只用第一条就够了。

开启回显请求的规则后,已经可以ping通VPN上对应的IP地址了,但是这个还不够方便,
因为VPN的地址是自动分配的,每次都不一样,每次都必须拷贝一遍地址,粘贴到FTP客户端里,
很麻烦。如果可以直接用计算机名访问就好了,下面是解决方案:

入站规则里有这样一条:

网络发现(LLMNR-UDP-In)

只要开启这一条就行了,和其它规则无关,实测证明如此,虽然理论上解析应该是NetBIOS的活儿。

这些规则开启到以下程度即可,也是默认配置
作用域“本地子网”——配置文件“公共,域”
作用域“任意”——配置文件“专用”

附个禁用IPv6的方法,禁用之可以防止计算机名解析成IPv6格式:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\TCPIP6\Parameters]
"DisabledComponents"=dword:ffffffff