了解 NAT 和动态 IP 的 ipsec

了解 NAT 和动态 IP 的 ipsec

我正在使用 OpenSWAN 设置网络到网络 VPN 隧道。我已成功配置了以下测试场景:

测试网络到网络场景

关于testtest2

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

这是我配置隧道的方式:

/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

现在,我想设定以下场景:

所需的网络到网络配置

我需要了解的问题:

  • IPSec 能否通过通过 NAT(入站 NAT 遍历)共享公共 IP 的 VPN 网关进行连接?NAT-T 和 IPSec 直通是否与此相关,还是它们仅适用于出站 NAT(即处理位于 NAT 后面但网关具有公共 IP 的客户端)?将某些端口从路由器 1 转发到测试是否足够,或者这是否与 IPSec 不兼容?
  • 只要一方有域名和动态 DNS,IPSec 隧道的两端是否可以都有动态 IP?

答案1

IPSec 能否通过通过 NAT(入站 NAT 遍历)共享公共 IP 的 VPN 网关进行连接?NAT-T 和 IPSec 直通是否与此相关,还是它们仅适用于出站 NAT(即处理位于 NAT 后面但网关具有公共 IP 的客户端)?将某些端口从路由器 1 转发到测试是否足够,或者这是否与 IPSec 不兼容?

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

连接建立的方向确实很重要,因为 NAT 路由器是有状态的,并且维护 UDP“连接”信息,仅允许从 NATed 网络内部发起的 UDP“连接”。为 IKE 使用的 UDP 端口和 ESP 的 UDP 封装(4500/udp)创建端口转发规则将克服这一限制,但显然只允许在 NAT 设备后面以这种方式配置单个 IPSec 主机。

只要一方有域名和动态 DNS,IPSec 隧道的两端是否可以都有动态 IP?

是的,你不需要需要静态 IP 地址,尽管它可能使您的生活更轻松,因为它从您的配置中消除了两个单点故障(DDNS 提供商/更新过程)。请注意,在两端使用动态 IP 地址并进行 PSK 身份验证需要 IKE 第 1 阶段的激进模式。

答案2

我通常不是那种会用“去用别的”来回答深思熟虑的问题的人,但是……IPSec VPN 的设置总是有问题。添加 NAT 和动态 IP 只会让人沮丧。

您是否看过 OpenVPN?它是一种基于 SSL 的 VPN,通过 UDP 端口 1194 传输所有内容,因此您无需处理 ESP。您可能可以在不到一小时内启动并运行 WAN。

相关内容