[技术分享]小谈 TMG 建立 IPsec Site-to-Site VPN

TMG作为微软的网关产品可以和其他产品建立Site-to-Site VPN,这样可以让两端防火墙后面的指定资源实现互访。而IPsec VPN是当前比较流行的VPN,又可以和其他设备兼容。在配置过程中,不少客户遇到了不同的问题,那么让我们来谈论下如何解决这些常见问题。

1. 问题:为什么我的客户端从 TMG 侧访问对端的 Web 服务器被 TMG 阻止?

根据KB(https://support.microsoft.com/kb/885351),ISA/TMG都有这样一个问题。解决这个问题,我们需要创建一个自定义的HTTP(TCP 80 出向)协议。先配置一条规则来允许本site的内部资源访问对端的web 服务器;更重要的是请创建另一条规则,阻止内部资源从标准的HTTP协议访问web服务器,这样TMG就不会再为这些资源匹配HTTP过滤器(filter)了。

关于创建自定义的HTTP协议的更多信息,请参考:
Why do I need a deny rule to make an allow rule for a custom protocol work correctly?
https://blogs.technet.com/b/isablog/archive/2006/09/25/why-do-i-need-a-deny-rule-to-make-an-allow-rule-for-a-custom-protocol-work-correctly.aspx

2. 问题:为什么我的 VPN 只能单向通?

曾经遇到不少客户用Cisco的ASA和TMG做VPN,但是只能从Cisco端触发流量访问到TMG端,一旦通道建立,两端就可以正常通讯了。客户只能长ping TMG端的资源保持通道建立,这带来了不少麻烦。

其实问题的根源是由于两边VPN隧道的感兴趣流不匹配造成的。在ASA端我们一般使用ACL来抓取感兴趣流:

access-list 10 extended permit IP 192.168.107.0 255.255.255.0 172.21.254.250 255.255.255.255

意思是本地流量192.168.107.0/24 如果去往172.21.254.250/32根据后面的配置将不走NAT,而走VPN的隧道。

那么在TMG端,如何定义感兴趣流呢。有些客户认为是在VPN的建立过程中选择源地址的时候定义的,其实并不是这样,其实这段源地址的定义是在Internal 网卡上,然后会用IP子网的方式写到VPN的配置总结上,比如:

clip_image001

clip_image002

clip_image003

在这里,由于这段地址段(172.18.0.0-172.18.253.255)并不能用的一个网段表示,所以TMG将其拆分,让每段都能被表示出来,组合起来就是整个网段了。

如果对端ASA需要写感兴趣流的目的,应当选取上图中的一个或多个来表示,来匹配两端的感兴趣流。

请注意,我们在TMG上所做的所有有关VPN的配置总结下来会影响到以下3个表:

1. 网络规则(NAT,route关系)

2. Firewall 规则

3. 隐藏在Site-to-Site Settings Summary中的感兴趣流表

遇到VPN的网络问题,请查看配置后的这三个表来确定自己的配置是否正确。

3. 问题:为什么我的 VPN 有些流量通有些流量不通

我们观察到这类问题可能是两端的MTU不匹配而造成的,我们可以测一测两端所能容纳的最大MTU,比如:

Ping 192.168.100.100 –f –l 1300

意思是ping对端的一个服务器,该ping不能被拆包,大小是1300个字节。然后,我们可以通过抓包工具,看看那些平时不通的流量一般它发出的包有多大,是否超过了这个我们通过ping测出的阈值。

根据结果,我们可以适当调整两边的MTU,在Windows 2008上面我们可以使用以下命令:

netsh interface ipv4 set subinterface "Local Area Connection" mtu=nnnn store=persistent

详细资料:

Diagnoses and treatment of black hole routers
https://support.microsoft.com/kb/159211

希望对您有帮助。

微软安全专家

薛玮(Iverson Xue)