IPsecは、ネットワーク間接続の方法を用いて、リモートネットワークに ネットワーク全体(LANやWAN)を接続するよう設定することもできます。 ネットワーク間接続には、あるネットワーク上の1ノードから リモートネットワーク上の1ノードへ情報をプロセスしてルーティングするために、 接続しているネットワークの両サイドでIPsecルータの設定が必要です。図6-2でネットワーク間IPsecトンネル接続を示します。
この図は、インターネットで区切られた2つのLANを示しています。 この2つのネットワークはIPsecルータを使い、インターネットを通るセキュアトンネルで 接続を認証、開始します。通過中に遮断されたパケットは、 この2つのLANの間のcipher保護パケットをクラックするためにブルートフォース復号化を 要求します。192.168.1.0/24 IPレンジのあるノードから192.168.2.0/24レンジの別ノードへの 通信プロセスは完全に暗号化/復号化の処理としてノードに対して透過的で、 IPsecパケットのルーティングは完全にIPsecルータによって処理されます。
ネットワーク間接続に必要な情報には次のようなものがあります。
専用IPsecルータの外部アクセス可能なIPアドレス
IPsecルータが対応するLAN/WANのネットワークアドレスレンジ (192.168.0.0/24 or 10.0.1.0/24など)
ネットワークノードからインターネットにデータをルーティングする ゲートウェイデバイスのIPアドレス
IPsec接続を識別し、他のデバイスや接続と区別するための独自の名前 (例、ipsec0)
1つの固定暗号化キーかracoonで自動的に生成されるキー
接続を開始しセッション中に暗号化キーを交換するのに使用されるpre-shared認証キー
例えば、LAN A (lana.example.com) と LAN B (lanb.example.com)を IPsecトンネルで接続したいとします。LAN Aのネットワークアドレスは 192.168.1.0/24 レンジ、一方、LAN Bは192.168.2.0/24レンジを使用しています。 ゲートウェイIPアドレスは、LAN Aが192.168.1.254、LAN Bが192.168.2.254です。 IPSECルータは各LANゲートウェイとは別で、2つのネットワークデバイスを使用しています。 eth0は外部アクセス可能な静的IPアドレスに割り当てられインターネットにアクセスします。 eth1はルーティングポイントとして動作しあるネットワークノードからリモートネットワーク ノードにLANパケットを処理、転送します。
各ネットワーク間のIPsec接続は値r3dh4tl1nuxで pre-shared keyを使用し、AとBの管理者は各IPsecルータ間の認証キーが racoonにより自動生成、共有されることに同意しています。 LAN Aの管理者はIPSEC接続の名前をipsec0にし、 LAN Bの管理者はIPSEC接続の名前をipsec1にしました。
以下は、LAN Aのネットワーク間IPsec接続用のifcfgファイルです。 この例の接続を識別する固有名はipsec1ですので、 ファイルは/etc/sysconfig/network-scripts/ifcfg-ipsec1 という名前になります。
TYPE=IPsec ONBOOT=yes IKE_METHOD=PSK SRCGW=192.168.1.254 DSTGW=192.168.2.254 SRCNET=192.168.1.0/24 DSTNET=192.168.2.0/24 DST=X.X.X.X |
起動時に(ONBOOT=yes)接続が開始するよう設定され、 pre-shared key認証方法を使用します(IKE_METHOD=PSK)。 LAN Aの管理者は目的のゲートウェイを入力します。これはLAN Bのゲートウェイ (DSTGW=192.168.2.254)であり、 ソースゲートウェイでもあります。そして、LAN AのゲートウェイIPアドレスです (SRCGW=192.168.1.254)。 目的のネットワークを入力します。これはLAN Bのネットワークレンジ(DSTNET=192.168.2.0/24)であり、ソースネットワーク (SRCNET=192.168.1.0/24)です。 最後に、目的のIPアドレスを入力します。これはLAN Bの外部アクセス可能なIPアドレスです (X.X.X.X)。
次に、両方のネットワークが互いに認証するために使用する、pre-shared keyファイル(/etc/sysconfig/network-scripts/keys-ipsecXと呼ばれる。 Xは、0をLAN Aに、1をLAN Bに入れる)を示します。 このファイルの内容は同一でなければならず、また、このファイルを読み取り/書き込みできる のはrootユーザーだけにする必要があります。
IKE_PSK=r3dh4tl1nux |
![]() | 重要 | |
---|---|---|
rootユーザーだけがファイルを読み取り、編集できるよう、 keys-ipsec0ファイルを変更するには、 ファイルを作成したら次のコマンドを実行します。
|
認証キーを変更するには、両方のIPsecルータでkeys-ipsecXファイルを編集します。 両方のキーが同一でなければ正しい接続は確保できません。
次に、IPsec接続の/etc/racoon/racoon.conf設定ファイルを 示します。 Ipsecトンネルに現在、接続している場合にのみ、 ファイルの下部にinclude行が表示されます。 これは、Ipsec接続の起動の度、自動的に生成されるからです。
# Racoon IKE daemon configuration file. # See 'man racoon.conf' for a description of the format and entries. path include "/etc/racoon"; path pre_shared_key "/etc/racoon/psk.txt"; path certificate "/etc/racoon/certs"; sainfo anonymous { pfs_group 2; lifetime time 1 hour ; encryption_algorithm 3des, blowfish 448, rijndael ; authentication_algorithm hmac_sha1, hmac_md5 ; compression_algorithm deflate ; } include "/etc/racoon/X.X.X.X.conf" |
以下は、リモートネットワークへ接続のための特殊設定です。 ファイル名はX.X.X.X.confになります(X.X.X.Xには、 リモートIPsecルータのIPアドレスを入れます)。このファイルは、 IPsecトンネルが起動されると自動的に生成されるため、直接には変更しないよう 注意してください。
; remote X.X.X.X { exchange_mode aggressive, main; my_identifier address; proposal { encryption_algorithm 3des; hash_algorithm sha1; authentication_method pre_shared_key; dh_group 2 ; } } |
Ipsec接続を開始する前に、IPフォワーディングをカーネルで有効にしてください。 rootとして、シェルプロンプトでIPフォワーディングを有効にします。
/etc/sysctl.confを編集して、net.ipv4.ip_forwardを1に設定します。
次のコマンドを実行して変更を反映します。
sysctl -p /etc/sysctl.conf |
IPsec接続を開始するには、IPsecルータを再起動するか、 rootとして各ルータで次のコマンドを実行します。
/sbin/ifup ipsec0 |
接続が開かれ、LAN AとBが互いに通信できるようになります。 IPsec接続でifupを実行して呼び出された 初期化スクリプトからルートが自動的に作成されます。 ネットワークのルート一覧を表示するには、次のコマンドを実行します。
/sbin/ip route list |
Ipsec接続をテストするには、外部ルート可能なデバイスでtcpdump ユーティリティを実行して(これ例ではeth0)、ホスト(またはネットワーク)間で 転送されているネットワークパケットを表示させ、IPsecで暗号化されているか 確認します。例えば、LAN A のIPsec接続性を確認するには、次を入力します。
tcpdump -n -i eth0 host lana.example.com |
パケットにはAHヘッダが含まれ、ESPパケットとして表示されていなければなりません。 ESPとは、暗号化されているということです。例えば(バックスラッシュは1行続きと言う意味)、
12:24:26.155529 lanb.example.com > lana.example.com: AH(spi=0x021c9834,seq=0x358): \ lanb.example.com > lana.example.com: ESP(spi=0x00c887ad,seq=0x358) (DF) \ (ipip-proto-4) |