通过NAT和dynamicIP了解IPsec

我正在使用OpenSWANbuild立一个networking到networking的VPN隧道。 我成功地configuration了一个testing场景如下:

测试网络到网络的情况

关于testtest

  • 他们是使用ubuntu-vm-builder创build的Ubuntu 12.04虚拟机
  • 他们使用桥接networking到主机的物理以太网(192.168.0.0/24子网)。
  • 我安装了标准的openswan软件包。
  • 每个虚拟接口都可以从VPN隧道的另一端访问。

这是我如何configuration隧道:

/etc/ipsec.conf(左右相同):

 version 2.0 config setup nat_traversal=yes virtual_private=%v4:10.0.0.0/8,%v4:192.168.0.0/16,%v4:172.16.0.0/12 oe=off protostack=netkey conn net-to-net authby=secret left=192.168.0.11 leftsubnet=10.1.0.0/16 leftsourceip=10.1.0.1 right=192.168.0.12 rightsubnet=10.2.0.0/16 rightsourceip=10.2.0.1 auto=start 

/etc/ipsec.secrets(左右相同):

 192.168.0.11 192.168.0.12: PSK "mytestpassword" 

/etc/rc.local(左边):

 modprobe dummy ifconfig dummy0 10.1.0.1 netmask 255.255.0.0 iptables -t nat -A POSTROUTING -o eth0 -s 10.1.0.0/16 ! -d 10.2.0.0/16 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward for each in /proc/sys/net/ipv4/conf/* do echo 0 > $each/accept_redirects echo 0 > $each/send_redirects done /etc/init.d/ipsec restart exit 0 

/etc/rc.local(在右边):

 modprobe dummy ifconfig dummy0 10.2.0.1 netmask 255.255.0.0 iptables -t nat -A POSTROUTING -o eth0 -s 10.2.0.0/16 ! -d 10.1.0.0/16 -j MASQUERADE echo 1 > /proc/sys/net/ipv4/ip_forward for each in /proc/sys/net/ipv4/conf/* do echo 0 > $each/accept_redirects echo 0 > $each/send_redirects done /etc/init.d/ipsec restart exit 0 

现在,我想build立以下场景:

所需的网络到网络配置

我需要了解的问题:

  • IPSec可以通过一个通过NAT(入站NAT穿越)共享一个公共IP的VPN网关连接吗? NAT-T和IPSec传递是否涉及到这个问题,还是仅仅是出站NAT(即处理NAT后面的客户端,但是网关是否具有公有IP的客户端)呢? 从router1转发一些端口来testing,还是会与IPSec不兼容?
  • 只要有一个域名和dynamicDNS,IPSec隧道的两端是否都有dynamicIP?

我通常不是那种用“去用别的东西”回答一个深思熟虑的问题的人,但是…… IPSec VPN始终是一个难题。 添加NAT和dynamicIP只是一个沮丧的邀请。

你有没有看过OpenVPN呢? 这是一个基于SSL的VPN,通过UDP端口1194传输所有内容,所以你不必处理ESP。 您可能可以在不到一个小时的时间内启动WAN。

IPSec可以通过一个通过NAT(入站NAT穿越)共享公共IP的VPN网关连接吗? NAT-T和IPSec传递是否涉及到这个问题,还是仅仅是出站NAT(即处理NAT后面的客户端,但是网关是否具有公有IP的客户端)呢? 从router1转发一些端口来testing,还是会与IPSec不兼容?

RFC 3947/3948中定义的NAT-T是IPSecstream量的UDP封装。 如果没有这种封装,IPSec会在IP的下面使用自己的协议types(传输模式和隧道模式),从而无法通过NAT工作。 通过UDP封装,它可以处理任何能够处理UDP的NAT设备。

连接build立的方向的确很重要,因为NAT路由器是有状态的,并且维持UDP“连接”信息,只允许从NATnetworking内发起的UDP“连接”。 为IKE使用的UDP端口和ESP(4500 / udp)的UDP封装创build一个端口转发规则可以克服这个限制,但显然只允许在NAT设备后面configuration一个这样configuration的IPSec主机。

只要有一个域名和dynamicDNS,IPSec隧道的两端是否都有dynamicIP?

是的,你不需要一个静态的IP地址,虽然它可能会让你的生活更轻松,因为它从你的configuration中删除了两个单点故障(DDNS提供者/更新过程)。 请注意,在PSK身份validation两端使用dynamicIP地址运行IKE第1阶段需要采用积极模式。