VPN中关于IPSec连接穿透NAT的问题
工具/原料
电脑两台、带宽带网络
VPN功能路由器一台
方法/步骤
1、IPSec数据包在穿越NAT时会遇到一个很严重的问题,因为NAT机制会修改数据包的IP及TCP或UDP包头内容,而IPSec为了确保数据包的安全性,也会逐一检查每个IPSec的数据包,一旦数据包内容(包含包头)有任何变动,这些数据包就会被IPSec机制丢弃,所以IPSec数据包是无法穿越NAT的。但如果真是这样,那IPSec在使用上将受到严重限制,幸运的是在大家的努力下,IPSec协议终于可以穿越NAT了,这项技术规范是在rfc3947中定义的,称为“NAT-Traversal”,简称为NAT-T。那NAT-T到底是如何让IPSec数据包可以穿越NAT的呢
2、从以上两个IPSec数据包的结爿瑰鲚母构图,我们可以很清楚看到图16-77中在ESP及IP包头之间多了一个UDP包栳摩狴矮头,这是IPSec数据包可以穿越NAT的关键之处。当IPSec数据包有了这个UDP包头之后,IPSec数据包再穿越NAT主机时,NAT主机便可以修改IP包头及UDP包头的内容,但IPSec数据包的接收端并不会检查IP包头及UDP包头的内容,因而使得IPSec数据包可以正常穿越NAT主机。那我们要如何在racoon下启用NAT-T的功能呢?以图16-78及配置文件为例,可以看到racoon的配置文件与以前的内容并无太大差异。主要差别在第5行到第16行及第20行,其中第9行及第10行的IP是L2TP服务器在因特网的公网IP,除此之外,其他设置步骤与之前的示例完全相同
3、1.龀音孵茧1pathinclude"/etc/racoon";2.2path惺绅寨瞀pre_shared_key"/etc/racoon/psk.txt";3.3pathcertificate"/etc/racoon/certs";4.4logdebug;5.5timer{6.6natt_keepalive10sec;7.7}8.8listen{9.9isakmp10.10.15.40[500];10.10isakmp_natt10.10.15.40[4500];11.11}12.12padding{13.13maximum_length20;14.14randomizeoff;15.15strict_checkoff;16.16exclusive_tailoff;17.17}18.18remoteanonymous{19.19exchange_modemain,aggressive;20.20nat_traversalon;21.21generate_policyon;22.22certificate_typex509"cert.pem""key.pem";23.23verify_certon;24.24verify_identifieron;25.25my_identifierasn1dn;26.26peers_identifierasn1dn;27.27proposal{28.28encryption_algorithm3des;29.29hash_algorithmsha1;30.30authentication_methodrsasig;31.31dh_groupmodp1024;32.32}33.33}34.34sainfoanonymous{35.35lifetimetime1hour;36.36encryption_algorithm3des;37.37authentication_algorithmhmac_sha1;38.38compression_algorithmdeflate;39.39}