48.7.7.2. 手動 IPsec Network-to-Network 設定
LAN A (lana.example.com)と LAN B (lanb.example.com)が IPsec トンネルを介して相互に接続したいとします。LAN A のネットワークアドレスは 192.168.1.0/24 の範囲にあり、LAN B は range です。ゲートウェイ IP アドレスは、LAN A の場合は 192.168.1.254、LAN B の場合は 192.168.1.254 です。IPsec ルーターは各 LAN ゲートウェイから分離され、2 つのネットワークデバイスを使用します。eth0 はインターネットにアクセスする外部からアクセスできる静的 IP アドレスに割り当てられますが、eth1 は 1 つのネットワークノードからリモートネットワークノードへの LAN パケットを処理し、送信するためのルーティングポイントとして機能します。
各ネットワーク間の IPsec 接続は、共有前の鍵と
r3dh4tl1nux
の値を使用し、A と B の管理者は各 IPsec ルーター間で認証キーを自動的に生成して共有することに同意します。LAN A の管理者は IPsec connection ipsec0
という名前を決定し、LAN B の管理者は IPsec 接続 ipsec1
という名前を付けます。
以下の例は、LAN A の network-to-network IPsec 接続の
ifcfg
ファイルの内容を示しています。この例の接続を識別する一意の名前は ipsec0 であるため、作成されるファイルは /etc/sysconfig/network-scripts/ifcfg-ipsec0
と呼ばれます。
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
以下の一覧では、このファイルの内容を説明します。
- TYPE=IPSEC
- 接続のタイプを指定します。
- ONBOOT=yes
- 起動時に接続を開始するように指定します。
- IKE_METHOD=PSK
- 接続が認証の事前共有鍵メソッドを使用することを指定します。
- SRCGW=192.168.1.254
- ソースゲートウェイの IP アドレス。LAN A の場合、これは LAN A ゲートウェイで、LAN B の場合は LAN B ゲートウェイです。
- DSTGW=192.168.2.254
- 宛先ゲートウェイの IP アドレス。LAN A の場合、これは LAN B ゲートウェイで、LAN B の場合は LAN A ゲートウェイです。
- SRCNET=192.168.1.0/24
- IPsec 接続の移行元ネットワークを指定します。この例では、LAN A のネットワーク範囲です。
- DSTNET=192.168.2.0/24
- IPsec 接続の宛先ネットワークを指定します。この例では、LAN B のネットワーク範囲です。
- DST=X.X.X.X
- LAN B の外部からアクセスできる IP アドレス。
以下の例は、両方のネットワークが相互に認証するために使用する
/etc/sysconfig/network-scripts/keys-ipsecX( X
は LAN A の場合は 0、LAN B の場合は 1)と呼ばれる事前共有キーファイルの内容です。このファイルのコンテンツは同一で、root ユーザーのみがこのファイルの読み取りや書き込みが可能でなければなりません。
IKE_PSK=r3dh4tl1nux
重要な影響
root ユーザーのみがファイルの読み取りまたは編集ができるように
keys-ipsecX
ファイルを変更するには、ファイルの作成後に以下のコマンドを使用します。
chmod 600 /etc/sysconfig/network-scripts/keys-ipsec1
認証キーを変更するには、両方の IPsec ルーターの
keys-ipsecX
ファイルを編集します。適切な接続の場合には、両方の鍵が同じでなければなりません。
以下の例は、IPsec 接続の
/etc/racoon/racoon.conf
設定ファイルの内容です。ファイル下部の 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 転送を有効にする必要があります。IP 転送を有効にするには、以下を実行します。
/etc/sysctl.conf
を編集し、net.ipv4.ip_forward を
。1
に設定します- 以下のコマンドを使用して変更を適用します。
sysctl -p /etc/sysctl.conf
IPsec 接続を開始するには、各ルーターで以下のコマンドを使用します。
ifup ipsec0
接続が有効になり、LAN A と LAN B の両方が相互に通信できます。ルートは、IPsec 接続で ifup を実行して、呼び出される初期化スクリプトを介して自動的に作成されます。ネットワークのルートの一覧を表示するには、以下のコマンドを使用します。
ip route list
IPsec 接続をテストするには、外部ルーティング可能なデバイス(この例では eth0)で tcpdump ユーティリティーを実行し、ホスト(またはネットワーク)間で転送されるネットワークパケットを表示し、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)