Strongswan によるサイト間 VPN とリモート アクセス VPN

Strongswan によるサイト間 VPN とリモート アクセス VPN

最近、2 つの異なる Ubuntu サーバーがある 2 つの異なるサイトに Strongswan IKEv2 リモート アクセス VPN を導入しました。すべてうまく機能していますが、サイト間 VPN を使用して 2 つのサイトを「統合」し、リモート アクセス VPN を 1 つだけ残して両方のサブネットにアクセスできるようにしたいと考えています。問題は、それをどのように行うかです。私のアイデアは、2 つのサイト間で Strongswan を使用する IPSec トンネルと、トラフィックを管理するために両方のサイトのルーターで静的ルーティングを使用することでした。

サイトは次のように構成されています。

A) 
Only One Public IP : x.x.x.x
Subnet : 10.5.5.0/24

B)
One Usable Public IP : x.x.x.x
Subnet : 192.168.5.0/24

質問は次のとおりです:

  1. 同じ strongswan インスタンスで 2 つのサービス (IKEv2 リモート アクセスと IPSec トンネル) を実行できますか? これに対する私の答えは「いいえ」です。その場合、別の 2 つの Ubuntu サーバーをゲートウェイとして使用して、strongswan の新しいインスタンスを追加する準備ができています。
  2. しかし、サイト内で 2 つの異なるサーバーを使用している場合は、別の問題が発生します。サイトにはそれぞれ 1 つのパブリック IP しかありません。両方で同じポートを使用する必要があるため、IPSec と IKEv2 の競合を解消するにはどうすればよいでしょうか。IPSec トンネルで使用されるポートを変更できますか。または、IPSec トンネルにポート転送は必要ないのでしょうか。

これは IPSec トンネルに関する参考資料です。 https://www.tecmint.com/setup-ipsec-vpn-with-strongswan-on-debian-ubuntu/

この混乱を解決する方法について何かアイデアはありますか? 2 つの VPN サーバーを実行するには、常に 2 つの異なる IP アドレスが必要ですか? OpenSource DMVPN が役立ちますか?

前もって感謝します。

答え1

あなたの質問に答えるために

  1. はい、同じ StrongSwan インスタンスでリモート アクセス (別名 Roadwarrior) とサイト間トンネルを実行できます。
  2. 認証方法によって、サイト間接続とリモート アクセス接続を区別できます。

実際に動作するセットアップはこちら

connections {
  site {
    pools = ipv4, ipv6

    local {
      auth = pubkey
      certs = site1.example.com.pem
      id = site1.example.com
    }

    remote {
      auth = pubkey
      cacerts =  MyCA.cer
      id = "CN=site2.example.com"
    }

    children {
        site {
            local_ts  = 10.218.2.0/24, ::/0
            remote_ts = 10.218.1.0/24, 2001:470:ffff::/64
        }
    }
  }

  win {
    pools = ipv4, ipv6

    local {
      auth = pubkey
      certs = site1.example.com.pem
      id = site1.example.com
    }
    remote {
      auth = pubkey
      cacerts =  LloydsCertificateAuthorityG2.cer
    }
    children {
      win {
        local_ts = 0.0.0.0/0, ::/0, 10.218.1.0/24, 2001:470:ffff::/64
      }
    }
  }
}

pools {
  ipv4 {
    addrs = 10.218.2.3-10.218.2.254
    dns = 10.218.1.99
    netmask = 255.255.255.0
    subnet = 10.218.2.0/24,10.218.1.0/24
  }

  ipv6 {
    addrs = 2001:470:ffff:2::3-2001:470:ffff:2::ffff
    dns = 2001:470:ffff::99/64
    subnet = 2001:470:ffff:2::/64,2001:470:ffff::/64
  }
}

サイト 2 は IKEv2 プロトコルとマシン証明書 CN=site2.example.com を使用して接続します。

証明書はサイト1に保管されます。

/etc/swanctl/rsa/site1.example.com.pem (private key)
/etc/swanctl/x509/site1.example.com.pem (public key)
/etc/swanctl/x509ca/MyCa.cer (Root CA)

設定を再読み込みswanctl --load-all

リモートアクセスクライアントのNATを有効にするには

iptables -t nat -A POSTROUTING -s 10.218.2.0/24,10.218.1.0/24 -o eth0 -m policy --dir out --pol ipsec -j ACCEPT
iptables -t nat -A POSTROUTING -s 10.218.2.0/24,10.218.1.0/24 -o eth0 -j MASQUERADE

関連情報