![了解 NAT 和动态 IP 的 ipsec](https://linux22.com/image/589858/%E4%BA%86%E8%A7%A3%20NAT%20%E5%92%8C%E5%8A%A8%E6%80%81%20IP%20%E7%9A%84%20ipsec.png)
我正在使用 OpenSWAN 设置网络到网络 VPN 隧道。我已成功配置了以下测试场景:
关于test
和test2
:
- 它们是使用 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。