我有一个与 Amazon Virtual Private Cloud (Amazon VPC) 管理的 VPC 的 AWS Site-to-Site VPN 连接。在多个互连的站点上存在重复或相同的 IP 地址范围,我想为我的 Site-to-Site VPN 连接配置 NAT。
简短描述
AWS VPN 不提供将 NAT 应用于 VPN 流量的托管选项。
要将 NAT 应用于 VPN 流量,请执行以下操作之一:
- 使用 AWS Marketplace 提供的基于软件的 VPN 解决方案手动配置 NAT。
- 在运行基于软件的 VPN 解决方案和 iptables 的 Amazon Elastic Compute Cloud (Amazon EC2) Linux 实例上手动配置 NAT。
以下解决方法中的示例配置使用两个 VPC。第一个是 AWS 托管的 VPN,第二个是基于软件的 VPN 解决方案,可用作客户网关。
**重要事项:**要解决 IP 地址重叠问题,必须为源 NAT 和目标 NAT 提供解决方案。私有 NAT 网关可以执行源 IP 地址 NAT,但它们不能同时执行源 NAT 和目标 NAT。但是,NAT 实例可以同时处理源 NAT 和目标 NAT。
解决方法
允许 VPN 流量
配置您的 VPC 路由表、安全组和网络访问控制列表(网络 ACL)以允许 VPN 流量。
完成以下步骤:
- 在路由表中,创建路由,将网络流量引导到目标网络。将弹性网络接口设置为基于软件的 EC2 Linux 实例的目标。
- 确认您的路由表中有一条默认路由,以互联网网关为目标。
- 修改实例的安全组规则以允许入站流量。在端口 500 (ISAKMP) 和 4500 (IPsec NAT-Traversal) 上使用 UDP 数据包。
- 关闭源/目标检查,以便实例可以在您的 VPN 子网之间转发 IP 地址数据包。
配置 VPN 连接
- 如果您还没有 Site-to-Site VPN 连接,请为相关解决方案配置 Site-to-Site VPN 连接。您可以下载 Site-to-Site VPN 示例配置文件。
- 使用您的发行版的包管理器在 EC2 Linux 实例上安装您的 VPN 解决方案。
**注意:**要使用 strongSwan 作为 VPN 解决方案,请参阅 GitHub 网站上的 vpn-gateway-strongswan。
配置 iptables
要为源 NAT 配置 iptables,请运行以下 sudo iptables 命令:
sudo iptables -t nat -A POSTROUTING -d your_destination_address_or_CIDR -j SNAT --to-source your_IP_address
**注意:**将 your_destination_address_or_CIDR 替换为您的目标地址或 CIDR,将 your_IP_address 替换为您的 IP 地址。
对于目标 NAT,运行以下 sudo iptables 命令:
sudo iptables -t nat -A PREROUTING -j DNAT --to-destination your_IP_address
**注意:**将 your_IP_address 替换为您的 IP 地址。
要将正在运行的 iptables 配置保存到文件中,请运行以下 sudo iptables-save 命令:
sudo iptables-save > /etc/iptables.conf
要在启动时加载 iptables 配置,请在 exit 0 语句之前在 /etc/rc.local 中输入以下行:
sudo iptables-restore < /etc/iptables.conf
或者,您可以测试 Site-to-Site VPN 连接。