第8章 IP トンネルの設定
VPN と同様に、IP トンネルは、インターネットなどの 3 番目のネットワークを介して 2 つのネットワークを直接接続します。ただし、すべてのトンネルプロトコルが暗号化に対応しているわけではありません。
トンネルを確立する両方のネットワークのルーターには、最低でも 2 つのインターフェイスが必要です。
- ローカルネットワークに接続されているインターフェイス 1 つ
- トンネルが確立されたネットワークに接続されたインターフェイス 1 つ。
トンネルを確立するには、リモートサブネットから IP アドレスを使用して、両方のルーターに仮想インターフェイスを作成します。
NetworkManager は、以下の IP トンネルに対応します。
- GRE (Generic Routing Encapsulation)
- IP6GRE (Generic Routing Encapsulation over IPv6)
- GRETAP (Generic Routing Encapsulation Terminal Access Point)
- IP6GRETAP (Generic Routing Encapsulation Terminal Access Point over IPv6)
- IPIP (IPv4 over IPv4)
- IPIP6 (IPv4 over IPv6)
- IP6IP6 (IPv6 over IPv6)
- SIT (Simple Internet Transition)
このトンネルは、タイプに応じて、OSI (Open Systems Interconnection) モデルのレイヤー 2 または 3 で動作します。
8.1. IPv4 トラフィックを IPv4 パケットにカプセル化するための IPIP トンネルの設定
IP over IP (IPIP) トンネルは、RFC 2003 で説明されているように、OSI レイヤー 3 で動作し、IPv4 トラフィックを IPv4 パケットにカプセル化します。
IPIP トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、すでに暗号化されたデータにはトンネルを使用してください (HTTPS などの他のプロトコル)。
IPIP トンネルはユニキャストパケットのみをサポートすることに注意してください。マルチキャストをサポートする IPv4 トンネルが必要な場合は、レイヤー 3 トラフィックを IPv4 パケットにカプセル化するための GRE トンネルの設定 を参照してください。
たとえば、以下の図に示すように、2 つの RHEL ルーター間で IPIP トンネルを作成し、インターネット経由で 2 つの内部サブネットに接続できます。
前提条件
- 各 RHEL ルーターには、ローカルサブネットに接続されているネットワークインターフェイスがあります。
- 各 RHEL ルーターには、インターネットに接続しているネットワークインターフェイスがあります。
- トンネル経由で送信するトラフィックは IPv4 ユニキャストです。
手順
ネットワーク A の RHEL ルーターで、次のコマンドを実行します。
tun0
という名前の IPIP トンネルインターフェイスを作成します。# nmcli connection add type ip-tunnel ip-tunnel.mode ipip con-name tun0 ifname tun0 remote 198.51.100.5 local 203.0.113.10
remote
パラメーターおよびlocal
パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。IPv4 アドレスを
tun0
デバイスに設定します。# nmcli connection modify tun0 ipv4.addresses '10.0.1.1/30'
トンネルには、2 つの使用可能な IP アドレスを持つ
/30
サブネットで十分であることに注意してください。IPv 4 設定を使用するように手動で
tun0
接続を設定します。# nmcli connection modify tun0 ipv4.method manual
トラフィックを
172.16.0.0/24
ネットワークにルーティングする静的ルートをルーター B のトンネル IP に追加します。# nmcli connection modify tun0 +ipv4.routes "172.16.0.0/24 10.0.1.2"
tun0
接続を有効にします。# nmcli connection up tun0
パケット転送を有効にします。
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
ネットワーク B の RHEL ルーターで、次のコマンドを実行します。
tun0
という名前の IPIP トンネルインターフェイスを作成します。# nmcli connection add type ip-tunnel ip-tunnel.mode ipip con-name tun0 ifname tun0 remote 203.0.113.10 local 198.51.100.5
remote
パラメーターおよびlocal
パラメーターは、リモートルーターおよびローカルルーターのパブリック IP アドレスを設定します。IPv4 アドレスを
tun0
デバイスに設定します。# nmcli connection modify tun0 ipv4.addresses '10.0.1.2/30'
IPv 4 設定を使用するように手動で
tun0
接続を設定します。# nmcli connection modify tun0 ipv4.method manual
トラフィックを
192.0.2.0/24
ネットワークにルーティングする静的ルートをルーター A のトンネル IP に追加します。# nmcli connection modify tun0 +ipv4.routes "192.0.2.0/24 10.0.1.1"
tun0
接続を有効にします。# nmcli connection up tun0
パケット転送を有効にします。
# echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
検証
各 RHEL ルーターから、他のルーターの内部インターフェイスの IP アドレスに ping します。
ルーター A で
172.16.0.1
に ping します。# ping 172.16.0.1
ルーター B で
192.0.2.1
に ping します。# ping 192.0.2.1