网络通信 频道

高招:IPsec VPN、NAT冲突轻松解决

    共存方案3:使用UDP封装ESP载荷

     这种方法的核心思想是使用UDP封装ESP,报文格式如图1所示,当报文交
给网关后,网关照旧做NAT、NAPT转换,它不会破坏ESP的加密或验证.之所以使用UDP是因为UDP提供了最小标准的封装,8比特就够了,如果换做TCP封装则需要20比特而且UDP是面向无连接协议,TCP的建链和拆链过程会引入诸如RESET攻击这类影响IPsec性能的负效果.
          
                           

图1 ESP封装格式
  这种方法只适用ESP协议,既然ESP被UDP封装了,就要求网关到网关、客户到客户、网关到客户都能相互识别并将UDP头脱去,对于同一厂家的产品可能还能实现,但是对不同厂家在实现上会有些困难.解决的方法是IKE对等体将交换一个定义好的值,来确定对方是否支持UDP ESP封装,如果发现双方都支持,对等体就会探测负荷中是否运用了这种封装.由于IKE对等体已经使用了UDP的500号端口,所以这里也沿用这一端口,可以避免在防火墙的过滤规则中再多开一个漏洞.发送者会将UDP后第一个8比特设置为0,该位置在IKE中是初始cookie的位置,如图2所示.接收者就可以在都使用500号端口的情况下区分是IKE还是UDP封装下的ESP 。
  
  
  
                  
图2 ESP和IKE封装格式比较

 

    总结

   综上所述,为了解决IPsec和NAT 的共存问题,主要有三种解决方法,一种是对IPsec协议或NAT做一定修改,但实现需要很小心,因为很容易引入实现带来的错误;第二种是使用NAT的替代协议RSIP,这种方法较为全面地解决了IPsec和NAT的兼容问题,但是,它的实现相对复杂,而且需要对原有设备做较大改动;第三种是使用UDP封装ESP载荷,这种方法不需要对IPsec或IKE做修改,实现最为简单。

0
相关文章