strongSwanを使ってVGWとのVPN接続を試す

nishida-blog

こんにちは、CTC の西田です。

弊社のAWS構築サービスであるCUVIC on AWSの担当をしております。
私自身は、インフラよりはアプリのほうがどちらかといえば得意ですが、
今回は、VPNについて記事を書きます。

 

これが初めてのブログですが、よろしくお願いします。

やること

  • オンプレミスからのVPNではなく、AWSだけでVPNを試す
  • VyOSではなく、strongSwanを直接使う
  • VGW(AWSサービス)とCGW(strongSwanインスタンス)間でVPNを構築する
  • CGWにいるインスタンスからVGWにアタッチされたVPCへアクセスする(ping/sshなど)

構成

VPN構成図

  • nishida1サブネット(192.168.1.0/24)
    • VGWをアタッチしたVPCに所属
  • nishida2サブネット(10.1.0.0/24)
    • CGWであるstrongSwanインスタンスを持つ
    • nishida1サブネットへVPNコネクションでアクセス(ping/ssh)

『VGW側』手順

AWS作業

  1. VPC作成
    • 割愛
  2. VGW作成
    • VGWを作成し、VPCにアタッチ
  3. CGW作成
    • 静的ルーティングを選択(=BGPは使わない)
    • IPアドレスは、strongSwanインスタンスのEIPを入力
  4. VPN接続を作成
    • 静的ルーティングを選択(=BGPは使わない)
    • 作成したVGWとCGWを紐付ける
    • CGW用の設定(例えばCiscoルーター用など)をダウンロードできるが、strongSwan用は無いため、Genericを選択。
  5. VPN接続を編集
    • 10.1.0.0/24のルーティングを追加しておく
  6. EC2セキュリティグループ設定
    • 10.1.0.0/24からすべてのアクセスを許可を追加
    • 任意のアドレスからSSHアクセス許可を追加
  7. ルートテーブル設定
    • 10.1.0.0/24へのアクセスをVGWへルーティングさせる
  8. EC2作成
    • 作成したセキュリティグループをアタッチ
    • SSHでのログインができるようにしておく

EC2作業

  • ログイン確認

『CGW側』手順

AWS作業

  1. VPC作成
    • 割愛
  2. EC2セキュリティグループのインバウンド設定
    • 192.168.1.0/24からすべてのアクセスを許可
    • VGWエンドポイントの外部IPから以下のアクセスを許可^1
      • UDP500→IKE
      • カスタムIPプロトコル50(TCP/UDPではないので注意)→ESP
      • UDP4500(NATトラバーサル)^2
    • 任意のIPからSSHのアクセスを許可
  3. ルートテーブル設定
    • 192.168.1.0/24へのアクセスをstrongSwanのENIに向ける
  4. EC2作成
    • strongSwanインスタンス
      • EC2はstrongSwan用にUbuntuのAMIを選択
      • 作成したセキュリティグループをアタッチ
      • ENIにEIPをアタッチする
      • IPsecでパケットカプセリングと転送を行うため、送信元/送信先チェックをオフにしておく
      • ログイン確認
    • VPNクライアントインスタンス
      • 作成したセキュリティグループをアタッチ
      • ログイン確認

EC2作業(strongSwan構築)

  • strongSwanのインストール

  • ipsec.secretsの設定
    • フォーマットは以下の通り
    • VGWゲートウェイの外部IP␣:␣PSK␣”CGW用設定ファイルのPre-Shared Key”

  • ipsec.confの設定
    • IKEv1で鍵交換を行う(IKEv2はAWSのVPN接続では未サポートのため)
    • CGW用の設定ファイルを確認し、以下参考にipsec.confを編集する

  • sysctl.confの設定

  • sysctl.confの反映

  • strongSwanの起動

  • CGW(10.1.0.x)から疎通確認

テスト

ping

  • nishida2(10.1.0.0/24)→nishida1(192.168.1.0/24)

ssh

  • nishida2(10.1.0.0/24)→nishida1(192.168.1.0/24)

 

今後、AWS上でのアプリ構築やインフラ構築など幅広く記事をアップする予定です。

西田 信輝
クラウド技術検証や業務改善アプリ開発を行うソフトウェアエンジニア
2016年より、AWS関連の業務に従事
AWS Certified DevOps Professional取得

お問い合わせ:business-on-it@ctc-g.co.jp

Pocket

コメント