【AWS】統合脅威管理「Sophos UTM」を使ってVPC間をIP-VPN接続する

sophos

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

コカコーラが大好きな梶です。

すごく遅くなりましたが明けましておめでとうございます。本年もよろしくお願い致します。

異なるリージョン間のVPCをネットワーク接続するには、MarketplaceのソフトウェアルータでIP-VPNを利用します。
(VPC Peeringは現在のところ、同一リージョン間のみのため)

今回は、弊社でSSL-VPNでよく用いられているSophos UTMでVPC間のIP-VPN接続を実施しましたので解説します。

構成

今回の構成は以下となります。
Public SubnetにSophos UTMをそれぞれのVPCに配置
オンプレミスのネットワーク機器だとNICを2つで構築するのが一般的ですが、今回は1本足(1アーム)構成です。
Site-AとSite-B間の通信をVPN接続を経由して通信します。 kaji-sophos-00-network-layout-diagram

導入方法

Sophos UTMの各VPCでのセットアップは以下のブログを参照し実施ください。
【AWS】統合脅威管理「Sophos UTM」を使ってiPhoneからVPCへIPsec-VPN接続する
「システムDNSホスト名設定」まで実施します。

AWS設定手順

Site-A Security Group

IP-VPN接続するために、UDP 500、UDP4500、ESPを許可します。また、自サイトからの通信も全て許可します。
*TCP 4444はSophos UTMの設定用GUI、TCP 443はSSL-VPN用となります。
kaji-sophos-01-SiteA-SG

Site-A Private Subnet Routing Table

Site-Bへの通信をTargetにてすべてUTM-Aへ向けます。
*10.242.2.0はSSL-VPN用となります。

kaji-sophos-02-SiteA-RT1-PrivateSubnet1

kaji-sophos-03-SiteA-RT1-PrivateSubnet2

Site-A Public Subnet Routing Table

Site-Bへの通信をTargetにてすべてUTM-Aへ向けます。その他はすべてインターネットへ向けます。
*10.242.2.0はSSL-VPN用となります。

kaji-sophos-04-SiteA-RT2-PublicSubnet1

kaji-sophos-05-SiteA-RT2-PublicSubnet2

Site-B Security Group

Site-Aと同様です。

kaji-sophos-06-SiteB-SG

Site-B Private Subnet Routing Table

Site-Aと同様です。Site-Aへの通信をTargetにてすべてUTM-Bへ向けます。

kaji-sophos-07-SiteB-RT1-PrivateSubnet1

kaji-sophos-08-SiteB-RT1-PrivateSubnet2

Site-A Public Subnet Routing Table

Site-Aと同様です。Site-Aへの通信をTargetにてすべてUTM-Bへ向けます。

kaji-sophos-08-SiteB-RT1-PrivateSubnet2

kaji-sophos-09-SiteB-RT2-PublicSubnet1

Sophos UTM設定手順

ネットワーク定義の作成

IP-VPN設定で利用する以下の3つを登録

  • UTM自身のVPCネットワークアドレス
  • 相手UTMのVPCネットワークアドレス
  • 相手UTMのグローバルアドレス

kaji-sophos-11-SiteA-Address

リモートゲートウェイを登録

サイト間VPN>IPsecを選択し、以下のように設定

  • ゲートウェイ:相手先のUTMのグローバルアドレス定義
  • VPN IDタイプ:IPアドレス
  • VPN ID:相手側のUTMのプライベートアドレスを設定(現在のところSophosUTMの仕様のようで、ホスト名などではVPN接続できませんでした。)
  • リモートネットワーク:相手側のVPCネットワークアドレス

kaji-sophos-12-SiteA-IPsecGW

コネクションを登録

サイト間VPN>IPsecを選択し、以下のように設定

  • リモートゲートウェイ:一つ前で設定したリモートゲートウェイを選択
  • ローカルインターフェイス:Internal(デフォルトのまま)
  • ポリシー:現在一般的な「AES-256」を選択
  • ローカルネットワーク:自分側のVPCネットワークアドレス

kaji-sophos-13-SiteA-IPsecConnection

相手側UTMも同様に設定

同様にSite-BのUTMも設定します。

接続確認

Sophos UTMの確認

うまくVPN接続できると以下のようなトンネルステータスになります。
kaji-sophos-14-SiteA-IPsecStatus

サーバ間のPingの通信

Server1での通信結果

[ec2-user@ip-10-1-1-156 ~]$ ping 10.2.3.159
PING 10.2.3.159 (10.2.3.159) 56(84) bytes of data.
64 bytes from 10.2.3.159: icmp_seq=1 ttl=62 time=4.12 ms
64 bytes from 10.2.3.159: icmp_seq=2 ttl=62 time=5.74 ms
64 bytes from 10.2.3.159: icmp_seq=3 ttl=62 time=4.34 ms
64 bytes from 10.2.3.159: icmp_seq=4 ttl=62 time=4.51 ms
64 bytes from 10.2.3.159: icmp_seq=5 ttl=62 time=5.56 ms
64 bytes from 10.2.3.159: icmp_seq=6 ttl=62 time=4.40 ms
^C
--- 10.2.3.159 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5773ms
rtt min/avg/max/mdev = 4.127/4.783/5.747/0.630 ms

Server2での通信結果

[ec2-user@ip-10-2-3-159 ~]$ ping 10.1.1.156
PING 10.1.1.156 (10.1.1.156) 56(84) bytes of data.
64 bytes from 10.1.1.156: icmp_seq=1 ttl=62 time=4.43 ms
64 bytes from 10.1.1.156: icmp_seq=2 ttl=62 time=3.94 ms
64 bytes from 10.1.1.156: icmp_seq=3 ttl=62 time=4.37 ms
64 bytes from 10.1.1.156: icmp_seq=4 ttl=62 time=4.05 ms
64 bytes from 10.1.1.156: icmp_seq=5 ttl=62 time=4.71 ms
64 bytes from 10.1.1.156: icmp_seq=6 ttl=62 time=4.28 ms
^C
--- 10.1.1.156 ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5757ms
rtt min/avg/max/mdev = 3.948/4.303/4.715/0.262 ms

まとめ

意外と簡単にできますね。
ただ、VPN IDにプライベートアドレスを利用しますので、明示的にしたい場合は構築時にプライベートアドレスを指定して構築することをお勧めします。
今後アップデートでホスト名などの値が入力できるようになると推測します。
次回は、Sophos UTMをNATインスタンスの代替えとして動作させてみたいと思います。