Red Hat Training

A Red Hat training course is available for RHEL 8

第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. nmcli を使用して IPIP トンネルを設定して、IPv4 パケットの IPv4 トラフィックをカプセル化します。

IPIP (IP over IP) トンネルは OSI レイヤー 3 で動作し、RFC 2003 で説明されているように IPv4 パケットの IPv4 トラフィックをカプセル化します。

重要

IPIP トンネルを介して送信されるデータは暗号化されません。セキュリティー上の理由から、すでに暗号化されたデータにはトンネルを使用してください (HTTPS などの他のプロトコル)。

IPIP トンネルはユニキャストパケットのみをサポートすることに注意してください。マルチキャストをサポートする IPv4 トンネルが必要な場合は、nmcli を使用した GRE トンネルを設定して IPv4 パケット内のレイヤー 3 トラフィックをカプセル化 を参照します。

たとえば、以下の図に示すように、2 つの RHEL ルーター間で IPIP トンネルを作成し、インターネット経由で 2 つの内部サブネットに接続できます。

IPIP トンネル

前提条件

  • 各 RHEL ルーターには、ローカルサブネットに接続されているネットワークインターフェイスがあります。
  • 各 RHEL ルーターには、インターネットに接続しているネットワークインターフェイスがあります。
  • トンネル経由で送信するトラフィックは IPv4 ユニキャストです。

手順

  1. ネットワーク A の RHEL ルーターで、次のコマンドを実行します。

    1. 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 アドレスを設定します。

    2. IPv4 アドレスを tun0 デバイスに設定します。

      # nmcli connection modify tun0 ipv4.addresses '10.0.1.1/30'

      トンネルには、2 つの使用可能な IP アドレスを持つ /30 サブネットで十分であることに注意してください。

    3. IPv 4 設定を使用するように手動で tun0 接続を設定します。

      # nmcli connection modify tun0 ipv4.method manual
    4. トラフィックを 172.16.0.0/24 ネットワークにルーティングする静的ルートをルーター B のトンネル IP に追加します。

      # nmcli connection modify tun0 +ipv4.routes "172.16.0.0/24 10.0.1.2"
    5. tun0 接続を有効にします。

      # nmcli connection up tun0
    6. パケット転送を有効にします。

      # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
      # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf
  2. ネットワーク B の RHEL ルーターで、次のコマンドを実行します。

    1. 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 アドレスを設定します。

    2. IPv4 アドレスを tun0 デバイスに設定します。

      # nmcli connection modify tun0 ipv4.addresses '10.0.1.2/30'
    3. IPv 4 設定を使用するように手動で tun0 接続を設定します。

      # nmcli connection modify tun0 ipv4.method manual
    4. トラフィックを 192.0.2.0/24 ネットワークにルーティングする静的ルートをルーター A のトンネル IP に追加します。

      # nmcli connection modify tun0 +ipv4.routes "192.0.2.0/24 10.0.1.1"
    5. tun0 接続を有効にします。

      # nmcli connection up tun0
    6. パケット転送を有効にします。

      # 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 します。

    1. ルーター A で 172.16.0.1 に ping します。

      # ping 172.16.0.1
    2. ルーター B で 192.0.2.1 に ping します。

      # ping 192.0.2.1

関連情報

  • nmcli(1) man ページ
  • nm-settings(5) man ページ