业务上云之后,经常也有需求将多云、数据中心或办公室的私有网络同云端的私有网络建立连接。AWS Site-to-Site VPN正是AWS提供的托管VPN服务,我们可以在另一端的私有网络通过Openswan同AWS VPC网络建立基于IPSec协议的安全连接。

下面是配置的详细步骤,

  1. 如果是创建数据中心或办公室的连接,数据中心或办公室需要有公网IP。如果是在其他公有云上,需要创建带公网IP的EC2,或使用EIP。
    1. 如果使用AWS EC2配置Openswan,需要禁用 EC2 的 Source/Destination Check。
  2. 在AWS上创建Virtual Private Gateway 和 Customer Gateway(指定对端的公网IP作为静态路由)。
  3. 在AWS上创建Site-to-Site VPN连接,使用第一步和第二步创建的Virtual Private Gateway和Customer Gateway。
  4. 在对端机器上安装openswan
    sudo yum install openswan
  5. 编辑/etc/sysctl.conf文件,确保有以下配置,
    net.ipv4.ip_forward = 1
    net.ipv4.conf.default.rp_filter = 0
    net.ipv4.conf.default.accept_source_route = 0
  6. 重新加载sysctl配置并重启network服务。
    sudo sysctl -p
    sudo service network restart
  7. 编辑/etc/ipsec.conf确保include /etc/ipsec.d/*.conf没有被注释。
  8. 创建/etc/ipsec.d/aws.conf文件,内容拷贝来自第三步创建的连接Openswan建议配置。
  9. 创建/etc/ipsec.d/aws.secrets文件,内容拷贝来自第三步创建的连接Openswan配置。
  10. 启动ipsec服务。
    # Start the ipsec service.
    sudo service ipsec start
    
    # Check the logs.
    sudo service ipsec status
    sudo ipsec auto --status

以上配置在Amazon Linux, Centos 6.9上验证通过。但是在Amazon Linux 2、Centos 7等较新的Linux发行版本上,启动ipsec服务遇到如下错误,

Starting Internet Key Exchange (IKE) Protocol Daemon for IPsec...
ERROR: /etc/ipsec.d/aws.conf: 12: keyword auth, invalid value: esp
解决方法是,从 AWS Site-to-Site VPN 下载的 Openswan 配置中删掉不支持的配置行auth=esp