web-dev-qa-db-ja.com

Amazon VPCとLinuxサーバー間のIPSec VPN

VPNシステムとLinuxサーバーを使用して、企業ネットワークとAmazonのVirtual Private Cloudの間にIPSec VPN接続をセットアップしようとしています。残念ながら、私が見つけた唯一のガイドでは、ホストLinuxマシンを使用してトンネルを設定し、そのLinuxマシンにVPCインスタンスにアクセスさせる方法について説明していますが、インスタンスを企業ネットワークにアクセスさせる方法についてはオンラインで見つけることができません。 (またはそのネットワークを介したインターネットの残りの部分)。

ネットワーク情報

Local subnet: 10.3.0.0/25
Remote subnet: 10.4.0.0/16

Tunnel 1:
  Outside IP Addresses:
    - Customer Gateway:        : 199.167.xxx.xxx
    - VPN Gateway              : 205.251.233.121

  Inside IP Addresses
    - Customer Gateway         : 169.254.249.2/30
    - VPN Gateway              : 169.254.249.1/30

Tunnel 2:
  Outside IP Addresses:
    - Customer Gateway:        : 199.167.xxx.xxx
    - VPN Gateway              : 205.251.233.122

  Inside IP Addresses
    - Customer Gateway         : 169.254.249.6/30
    - VPN Gateway              : 169.254.249.5/30

ここに私の/etc/ipsec-tools.confがあります:

flush;
spdflush;

spdadd 169.254.249.2/30 169.254.249.1/30 any -P out ipsec
   esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;

spdadd 169.254.249.1/30 169.254.249.2/30 any -P in ipsec
   esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;

spdadd 169.254.249.6/30 169.254.249.5/30 any -P out ipsec
   esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;

spdadd 169.254.249.5/30 169.254.249.6/30 any -P in ipsec
   esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;



spdadd 169.254.249.2/30 10.4.0.0/16 any -P out ipsec
   esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;

spdadd 10.4.0.0/16 169.254.249.2/30 any -P in ipsec
   esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;

spdadd 169.254.249.6/30 10.4.0.0/16 any -P out ipsec
   esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;

spdadd 10.4.0.0/16 169.254.249.6/30 any -P in ipsec
   esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;

これが私の/etc/racoon/racoon.confです:

remote 205.251.233.122 {
        exchange_mode main;
        lifetime time 28800 seconds;
        proposal {
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
        generate_policy off;
}

remote 205.251.233.121 {
        exchange_mode main;
        lifetime time 28800 seconds;
        proposal {
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
        generate_policy off;
}

sainfo address 169.254.249.2/30 any address 169.254.249.1/30 any {
    pfs_group 2;
    lifetime time 3600 seconds;
    encryption_algorithm aes128;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

sainfo address 169.254.249.6/30 any address 169.254.249.5/30 any {
    pfs_group 2;
    lifetime time 3600 seconds;
    encryption_algorithm aes128;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

BGPは正常に動作しているので、これらの構成を投稿するつもりはありません。

これが機能します

  • Linuxボックスから、ローカルエンドポイント(169.254.249.2/169.254.249.6)とそれに相当するリモートエンドポイント(169.254.249.1/169.254.249.5)にpingを実行できます。
  • VPCのインスタンスにpingしたり、SSHでインスタンスを作成したりすることもできます。
  • VPCのリモートインスタンスから、ローカルエンドポイントとリモートエンドポイントにもpingを実行できます
  • 10.3.0.0/25サブネット上のローカルサーバーにpingを実行できません

単純なものがないと思いますが、{ローカルサブネット} <-> {リモートエンドポイント}を使用して、{ローカルエンドポイント} <-> {リモートサブネット}をミラーリングするためにipsec-tools.confにエントリを追加しようとしましたが、しかし、それはうまくいかなかったようです。

{リモートインスタンス}から{ローカルサーバー}にpingを実行すると、pingがタイムアウトします。パケットはeth0インターフェイスで表示されます(ローカルネットワークがeth1にある場合でも)。

グーグルはほとんど役に立たなかった。 OpenSwanを使おうとしている、または同様の問題を抱えているがハードウェアルーターを使用している、または古いツールを使用しているユーザーのみが表示されます。

9
Dan Udey

理解した。 ipsec-tools.confを次のように変更する必要がありました。

flush;
spdflush;

# Generic routing
spdadd 10.4.0.0/16 10.3.0.0/25 any -P in  ipsec esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 10.3.0.0/25 10.4.0.0/16 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;

# Tunnel 1
spdadd 169.254.249.1/30 169.254.249.2/30 any -P in  ipsec esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 169.254.249.2/30 169.254.249.1/30 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;

spdadd 10.4.0.0/16 169.254.249.2/30 any -P in  ipsec esp/tunnel/205.251.233.121-199.167.xxx.xxx/require;
spdadd 169.254.249.2/30 10.4.0.0/16 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.121/require;

# Tunnel 2
spdadd 169.254.249.5/30 169.254.249.6/30 any -P in  ipsec esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;
spdadd 169.254.249.6/30 169.254.249.5/30 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;

spdadd 10.4.0.0/16 169.254.249.6/30 any -P in  ipsec esp/tunnel/205.251.233.122-199.167.xxx.xxx/require;
spdadd 169.254.249.6/30 10.4.0.0/16 any -P out ipsec esp/tunnel/199.167.xxx.xxx-205.251.233.122/require;

そして、私のracoon.confを次のように変更します。

path pre_shared_key "/etc/racoon/psk.txt";

remote 205.251.233.122 {
        exchange_mode main;
        lifetime time 28800 seconds;
        proposal {
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
        generate_policy off;
}

remote 205.251.233.121 {
        exchange_mode main;
        lifetime time 28800 seconds;
        proposal {
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
        generate_policy off;
}

sainfo address 169.254.249.2/30 any address 169.254.249.1/30 any {
    pfs_group 2;
    lifetime time 3600 seconds;
    encryption_algorithm aes128;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

sainfo address 169.254.249.6/30 any address 169.254.249.5/30 any {
    pfs_group 2;
    lifetime time 3600 seconds;
    encryption_algorithm aes128;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

sainfo address 10.3.0.0/25 any address 10.4.0.0/16 any {
    pfs_group 2;
    lifetime time 3600 seconds;
    encryption_algorithm aes128;
    authentication_algorithm hmac_sha1;
    compression_algorithm deflate;
}

ただし、私が理解しているように、この構成は10.3.0.0/25と10.4.0.0/16の間のトラフィックを(x.x.x.121を介して)最初のトンネルを介してのみルーティングします。それがわかったら、答えを更新します。

3
Dan Udey

まあ、私はだましました:)私はAmazonによって公式にサポートされているAstaroゲートウェイをインストールし、それを使用して自分のモデルを作成しました。 AstaroユニットにSSH接続して、すべてがどのように設定されているかを確認できます。もちろん、お金を払う気があれば、Astaroユニットを使い続けることもできます。

3
Petter

Setkey構成に「use」ではなく「require」を使用する理由を知っていますか?また、remoteセクションとsainfoセクション内にステートメントを配置する順序が重要で、誤って特定のステートメントを複製することも重要ですか。例えば:

#original
remote 205.251.233.121 {
        exchange_mode main;
        lifetime time 28800 seconds;
        proposal {
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
                dh_group 2;
        }
        generate_policy off;
}

#edited
remote 205.251.233.121 {
        generate_policy off;                           #moved/duplicated
        lifetime time 28800 seconds;
        proposal {
                dh_group 2;                           #moved
                encryption_algorithm aes128;
                hash_algorithm sha1;
                authentication_method pre_shared_key;
        }
         exchange_mode main;                      #moved
        generate_policy off;                   #duplicated/moved
}

また、両方のトンネルでトラフィックを流す方法も理解しましたか?

ご指導ありがとうございました。

0
DPfiler