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


9

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にある場合でも)。

Googleはほとんど助けになりませんでした。OpenSwanを使用しようとしている人、または同様の問題を抱えているがハードウェアルーターを使用している人、または古いツールを使用している人のみが表示されます。


私は専門家だが、ここからと思われwiki.debian.org/IPsec手動でIPSecを使用しているとき、私は..かかわらず、間違っているかもしれないリモート、ローカルネットワークへのルートを追加することが必要であること
user993553

回答:


3

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


1
ソリューションについて詳しく説明していただけますか?「自分のモデル」とはどういう意味ですか?私は同じ問題に悩まされており、あなたがそれをどのように解決したかに興味があります、ありがとう!
最大

3

理解した。私の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;
}

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


私もしばらくの間この問題に悩まされており、あなたの答えは本当に役に立ちました。両方のトンネルを介してルーティングを行うためのソリューションを思い付きましたか?他のトンネルIPに「汎用ルーティング」パーツを追加しましたが、テストしていません。
ウィル

両方のトンネルでルーティングするための良い解決策は見つかりませんでしたが、それは1つのコンテキストで意味があると思います。ここでの考え方は冗長性を提供することであり、理想的には両端に冗長性を含めることです。別のサーバーを2番目のトンネルにセットアップし、VPNへの2つのルートを提供することができます(たとえば、標準サーバーに2つのルート(各ボックスに1つ)を提供することにより)。または、何らかの監視システムで手動フェイルオーバーをトリガーします。どちらのソリューションも実際には「最適」ではありませんが、最初のソリューションはあなたの側にも冗長性を提供します。
Dan Udey 2014

0

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
}

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

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


Serverfaultへようこそ。別の投稿者の質問の回答セクションで質問しようとしているようです。あなたは新しい質問がある場合は、に行くことによって、新たな質問として、それを投稿してくださいserverfault.comと大きな赤い「質問する」ボタンをクリックします。
vjones

フォローアップありがとうございます。
DPfiler
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.