Menu Close

Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

4.6.3. Libreswan を使用したホスト間 VPN の作成

Libreswanを設定して、と呼ばれる2つのホスト間にホスト間IPsecVPNを構築するには、の両方のホスト上でrootとして以下のコマンドを入力し、新しい生のRSA鍵ペアを作成します。
~]# ipsec newhostkey --output /etc/ipsec.d/hostkey.secrets
Generated RSA key pair with CKAID 14936e48e756eb107fa1438e25a345b46d80433f was stored in the NSS database
これでホストの RSA 鍵のペアが生成されます。RSA キーを生成するプロセスは、特にエントロピーの低い仮想マシンでは、数分かかる場合があります。
ホストの公開鍵を表示するには、 サイドの設定に指定できるため、newhostkey コマンドが返した CKAID を使用して、新しいホストキーが追加されるホストに root で以下のコマンドを実行します。
~]# ipsec showhostkey --left --ckaid 14936e48e756eb107fa1438e25a345b46d80433f
	# rsakey AQPFKElpV
	leftrsasigkey=0sAQPFKElpV2GdCF0Ux9Kqhcap53Kaa+uCgduoT2I3x6LkRK8N+GiVGkRH4Xg+WMrzRb94kDDD8m/BO/Md+A30u0NjDk724jWuUU215rnpwvbdAob8pxYc4ReSgjQ/DkqQvsemoeF4kimMU1OBPNU7lBw4hTBFzu+iVUYMELwQSXpremLXHBNIamUbe5R1+ibgxO19l/PAbZwxyGX/ueBMBvSQ+H0UqdGKbq7UgSEQTFa4/gqdYZDDzx55tpZk2Z3es+EWdURwJOgGiiiIFuBagasHFpeu9Teb1VzRyytnyNiJCBVhWVqsB4h6eaQ9RpAMmqBdBeNHfXwb6/hg+JIKJgjidXvGtgWBYNDpG40fEFh9USaFlSdiHO+dmGyZQ74Rg9sWLtiVdlH1YEBUtQb8f8FVry9wSn6AZqPlpGgUdtkTYUCaaifsYH4hoIA0nku4Fy/Ugej89ZdrSN7Lt+igns4FysMmBOl9Wi9+LWnfl+dm4Nc6UNgLE8kZc+8vMJGkLi4SYjk2/MFYgqGX/COxSCPBFUZFiNK7Wda0kWea/FqE1heem7rvKAPIiqMymjSmytZI9hhkCD16pCdgrO3fJXsfAUChYYSPyPQClkavvBL/wNK9zlaOwssTaKTj4Xn90SrZaxTEjpqUeQ==
このキーは、以下に説明するように、両方のホストの設定ファイルに追加するために必要です。CKAID を忘れてしまった場合は、以下を使用してマシン上のすべてのホスト鍵のリストを取得することができます。
~]# ipsec showhostkey --list
< 1 >  RSA keyid: AQPFKElpV ckaid: 14936e48e756eb107fa1438e25a345b46d80433f
鍵ペアの秘密部分は、/etc/ipsec.d/*.db に置かれた NSS データベース に保存されます。
このホスト間トンネルの設定ファイルを作成するには、/etc/ipsec.d/ ディレクトリーに置かれたカスタム設定ファイルに、上記の leftrsasigkey=rightrsasigkey= の行を追加します。
root で実行されているエディターを使用して、次の形式で適切な名前のファイルを作成します。
/etc/ipsec.d/my_host-to-host.conf
以下のようにファイルを編集します。
conn mytunnel
    leftid=@west.example.com
    left=192.1.2.23
    leftrsasigkey=0sAQOrlo+hOafUZDlCQmXFrje/oZm [...] W2n417C/4urYHQkCvuIQ==
    rightid=@east.example.com
    right=192.1.2.45
    rightrsasigkey=0sAQO3fwC6nSSGgt64DWiYZzuHbc4 [...] D/v8t5YTQ==
    authby=rsasig
    # load and initiate automatically
    auto=start
また、公開鍵は RSAID ではなく、CKAID で設定することも可能です。この場合、leftrsasigkey= の代わりに leftckaid= を使用します。
左のホストと右のホストの両方で、同一の設定ファイルを使用することができます。Libreswan は、指定された IP アドレスやホストネームをもとに、自動的に かを検出します。ホストの 1 つがモバイルホストである場合、つまり IP アドレスが事前にわからない場合は、モバイルクライアントで %defaultrouteIP アドレスとして使用します。これにより、動的 IP アドレスが自動的に取得されます。受信するモバイルホストからの接続を受け付ける静的サーバーホストで、IP アドレスに %any を使用してモバイルホストを指定します。
leftrsasigkey 値が のホストから取得され、rightrsasigkey 値が のホストから取得されていることを確認します。leftckaidrightckaid を使用する場合も同じことが当てはまります。
ipsec を再起動して、新しい設定を読み取るようにし、起動時に開始するように設定されている場合は、トンネルが確立することを確認します。
~]# systemctl restart ipsec
auto=start オプションを使用する場合、IPsec トンネルは数秒以内に確立されるはずです。root で次のコマンドを入力することにより、トンネルを手動でロードして開始することができます。
~]# ipsec auto --add mytunnel
~]# ipsec auto --up mytunnel

4.6.3.1. Libreswan を使用したホスト間 VPN の検証

IKE ネゴシエーションは UDP ポート 500 および 4500 で行われます。IPsec パケットは、Encapsulated Security Payload (ESP) パケットとして表示されます。ESP プロトコルにはポートがありません。VPN 接続が NAT ルーターを通過する必要がある場合、ESP パケットはポート 4500 の UDP パケットにカプセル化されます。
パケットが VPN トンネルを介して送信されていることを確認するには、次の形式で root としてコマンドを発行します。
~]# tcpdump -n -i interface esp or udp port 500 or udp port 4500
00:32:32.632165 IP 192.1.2.45 > 192.1.2.23: ESP(spi=0x63ad7e17,seq=0x1a), length 132
00:32:32.632592 IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x4841b647,seq=0x1a), length 132
00:32:32.632592 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489, seq 7, length 64
00:32:33.632221 IP 192.1.2.45 > 192.1.2.23: ESP(spi=0x63ad7e17,seq=0x1b), length 132
00:32:33.632731 IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x4841b647,seq=0x1b), length 132
00:32:33.632731 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489, seq 8, length 64
00:32:34.632183 IP 192.1.2.45 > 192.1.2.23: ESP(spi=0x63ad7e17,seq=0x1c), length 132
00:32:34.632607 IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x4841b647,seq=0x1c), length 132
00:32:34.632607 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489, seq 9, length 64
00:32:35.632233 IP 192.1.2.45 > 192.1.2.23: ESP(spi=0x63ad7e17,seq=0x1d), length 132
00:32:35.632685 IP 192.1.2.23 > 192.1.2.45: ESP(spi=0x4841b647,seq=0x1d), length 132
00:32:35.632685 IP 192.0.2.254 > 192.0.1.254: ICMP echo reply, id 2489, seq 10, length 64
ここで、interface は、トラフィックを伝送することがわかっているインターフェースです。tcpdump での表示を終了するには、Ctrl+C を押します。
注記
tcpdump コマンドは、IPsec と少し予期せず相互作用します。送信される暗号化されたパケットのみが表示され、送信されるプレーンテキストパケットは表示されません。暗号化された着信パケットと、復号化された着信パケットは表示されます。可能であれば、2 つのマシンの間のルーターで tcpdump を実行し、エンドポイント自体では実行しないでください。Virtual Tunnel Interface (VTI) を使用する場合、物理インタフェイスの tcpdump では ESP パケットが表示され、VTI インタフェイスの tcpdump ではクリアテキストトラフィックが表示されます。
トンネルが正常に確立されたことを確認し、さらにトンネルを通過したトラフィックの量を確認するには、 root で次のコマンドを入力します。
~]# ipsec whack --trafficstatus
006 #2: "mytunnel", type=ESP, add_time=1234567890, inBytes=336, outBytes=336, id='@east'