注意:
この手順を実行する前に、関連するシステムへのコンソール・アクセスを設定してください。 間違ったコマンドを実行するとネットワークがオフラインになり、サーバーへの接続が切断される可能性があるため、これは必須です。 このシナリオでは、ネットワークを修復するにはコンソール・アクセスが必要です。
RUEIユーザーズ・ガイドに、ネットワーク内のインストールを検出する方法について説明されています。 トンネルのエンドポイントどうしが互いに通信できるかぎり、GREトンネリングを行うと、ネットワーク内の任意の場所にあるコレクタ・エンジンを検出できます。 GREトンネリングが効率的に行われている間は、ネットワーク・スルー・プットが低下する可能性があります。これは、パケットに追加された追加ヘッダーによるネットワーク・スループットと、これらのパケットのカプセル化と圧縮解除によって発生するCPU時間のオーバーヘッドが原因で発生するためです。
Linuxでは、カーネル・バージョン2.6.28からGRE Ethernetトンネリングがサポートされています。また、GRE Ethernetトンネル(gretap
)インタフェースを設定して構成するために、ユーティリティ(具体的にはIP
ユーティリティ)を含むiproute
パッケージの最新バージョンが必要です。
このプロシージャは、Oracle Linux 6.4をGRE Ethernetトンネルの設定のベースとして使用します。これはOracle Linuxバージョン6ではUEKカーネル(書込み時にLinuxバージョン2.6.39-400.109.1.el6uek)が提供され、GRE Ethernetトンネルの設定とiprouteパッケージの正しいバージョン(Oracle Linux 6.4のiproute-2.6.32-23.el6.x86_64)の設定が可能で、&を変更するためのコマンドが必要です。
Oracle Linux 5は、UEKカーネルでGRE Ethernetトンネルをサポートしている場合でもサポートされません(Linuxバージョン2.6.39-400.21.1.el5uekがOEL5.9でサポートされています)。 GRE Ethernetトンネルを設定できるiproute
パッケージの新しいバージョン(2.6.28)以上が必要なためです。 必要なバージョンのiproute
パッケージが正式にサポートされていません。 そのため、この手順では説明しません。
コレクタのインストールおよび構成の詳細は、「Oracle Real User Experience Insightインストレーション・ガイド」を参照してください。
この付録ではタップおよびGREトンネルの様々な局面について詳しく説明しますが、完了する必要のあるプロセスの概要は次のとおりです。
手動またはスクリプト化されたGRE設定を実行します。 「基本RUEIタップおよびGREトンネルの手動設定」および「基本RUEIタップおよびGREトンネルのスクリプト設定」を参照してください。
宛先エンドポイントがトラフィックの受信のみを行っていることを確認してください。 「トンネルの方向性」も参照してください。
タップします。 「仮想タップの追加」も参照してください。
コレクタを構成します。 「GREトンネリングのコレクタの構成」も参照してください。
設定をテストします。 「GREトンネルのテスト」も参照してください。
リブート後も、構成が適用されることを確認してください。 「GREトンネル環境変更の永続化」も参照してください。
この項では、単一のGREトンネルの作成と、どちらかのエンドポイントの設定方法(Oracle Linuxバージョン6マシンの場合)について、タップ(ソース)トラフィックまたはGREトンネル出力(宛先)トラフィックのどちらかを集計できるようにする方法について説明します。 このプロセスでは、1つのマシン上に1つ以上のメンバーをGREトンネルに追加すると、コレクタは1つ以上の着信GREトンネルをリスニングします。 この項では、次の項について説明します。
次のコンポーネントが必要です。
RUEIコレクタとして1つのエンドポイントが設定されている、2つのOracle Linuxバージョン6システム・エンドポイント
各システムに次のパッケージがインストールされている必要があります。
iproute2
tcpdump
bridge-utils
各システムに次のカーネル・モジュールが存在し、ロードされている必要があります。
ip_gre
- GREトンネリングのサポート
bridge
- ブリッジのサポート
veth
- 仮想イーサネット・インタフェースのサポート
この項では、Oracle Linuxバージョンの6システムを、1つはソース、もう1つはデスティネーション(RUEIコレクタ)として手動で設定する方法について説明します。 「基本RUEIタップおよびGREトンネルのスクリプト設定」の代替プロセスです。
両方のシステムを準備するには、次の手順を実行します:
「GREトンネルの構成」の手順に従って、ソース・システムと宛先システムの間にGREトンネルを取り付けます。
「Linuxブリッジの作成と設定」の手順に従って、各ソース・システムおよび宛先システムにブリッジ(BRTUN)をインストールします。
ソース・システムと宛先システムの両方で、「ブリッジ・インタフェースの追加と削除」の手順に従って、ローカルのGREトンネル・エンドポイント・インタフェース(GRETUN)をブリッジ(BRTUN)に追加します。
「GREトンネルのテスト」の手順に従って、トンネルを通して発生したソースから生成されたテスト・トラフィックを、GREトンネル・インタフェースと、両方の側のブリッジ・インタフェースのどちらでも表示できる必要があります。
セクション「トンネルの方向性」に移動します。
この項では、1つのスクリプトをソースおよびもう1つの宛先(RUEIコレクタを使用)として使用する、2つのOracle Linuxバージョン6システムを設定する方法について説明します。 これは「基本RUEIタップおよびGREトンネルの手動設定」の代替プロセスです
両方のシステムを準備するには、tunnelctl
スクリプトを使用して、「トンネル制御スクリプトを使用したGREトンネルの構成」で説明されているブリッジGREトンネルを作成します。
ソース・システムと宛先システムの両方が設定されますが、ブリッジまたはトンネルを通過するトラフィックはありません。 メンバーをトンネル・ソースに接続する前に、宛先のGREトンネル・エンドポイント(GRETUN)がトラフィックのみを受信できるようにして、トンネルを経由しないようにする必要があります。
また、GREトンネルは、トラフィックを監視するだけで単方向であり、通信を構成しないようにする必要があります。 Linuxトラフィック・シェーピングを使用して、宛先エンドポイント・システムのGRETUNインタフェースの送信トラフィックをブロックします。
次のステップを実行してください。
このqdisc
で使用するハンドル(HANDLE)を選択します。 たとえば、GREトンネルID (ID)を再利用します。
次のコマンドをrootとして実行することで、発信トラフィックをフィルタできる1つの(prio)でGRETUNのroot qdiscを置き換えます:
tc qdisc replace dev GRETUN parent root handle HANDLE: prio
マシンからのすべての送信GREトラフィックを通過させるフィルタを追加して、ミラー化されないようにします。 次のコマンドを実行します。
tc filter add dev GRETUN parent HANDLE: \ protocol all prio 1 u32 \ match u32 0 0 flowid HANDLE:1 \ action drop
これで、GREトンネルは一方向になります。 このテストは、「GREトンネルのテスト」で説明されているtcpdump
を使用して、あるシステム上でトラフィックを生成し、それをほかのシステム上で表示することによってテストできます。 ソースから宛先(RUEIコレクタ)へのトラフィックの流れが確認されますが、宛先(RUEIコレクタ)からソースへのトラフィックは確認(タップ)されません。
次に、次のステップを実行して、ソース・システムのローカル・インタフェースのいずれかに対する仮想タップを作成します:
宛先RUEIシステムで監視するトラフィックのソース・システムで、インタフェース(ETH)を選択します。
ステップ1で選択したインタフェースに対して仮想タップを作成するには、「仮想タップの作成」のステップを使用します。
ソース・システムで、「ブリッジ・インタフェースの追加と削除」の命令を使用して、作成したtap interface (TAP)をブリッジ(BRTUN)に追加します。
宛先システムで、次のコマンドを実行して、受信したGREトンネル・トラフィックをテストします。root
:
tcpdump -i GRETUN -c 100 -n
注意:
「タップのテスト」で説明しているように、宛先システムのブリッジ・インタフェースに表示されるトラフィックは、ソース・システムのブリッジ・インタフェースのトラフィックと同じである必要があります。
GREトンネルの設定とテストが完了すると、コレクタはGREトンネル上のトラフィックをリスニングするよう構成できます。 RUEIコレクタ・エンジンがGRE Ethernetトンネルをリスニングできるようにするには、次の手順を実行します:
RUEI (「構成」 > 「セキュリティ」 > 「コレクタ・プロファイル」)を使用して、構成するコレクタ・プロファイルを書き留めます。 デフォルトのネットワーク・ベース・プロファイルは、システム・ネットワーク・データ・コレクタという名前です。 必要に応じて、新規のプロファイルを作成します。 以降のステップでは、選択したプロファイルをPROFILEと表記します。
構成するPROFILEコレクタが、選択したコレクタ・プロファイルによって制御されていることを確認します。
$RUEI_USERユーザーとしてRUEIレポータ・システムにログインします。
次のコマンドを実行します。
execsql config_set_profile_value PROFILE config ForceInterface add greID
ここで、
greIDは、先ほど作成したトンネル・インタフェースです。
PROFILEは、ステップ1で選択するプロファイルです。
新しい構成が自動的にコレクタに伝播されるようになります。 コレクタは、インタフェースが起動中か停止中かを決定するために、物理インタフェースではなく、コレクタが使用する特定の内部シグナルがないため、インタフェースを強制的にリスニングする必要があります。 そうしない場合、コレクタはインタフェースを使用しません。
インタフェースを通過するパケットをフィルタするファイアウォールが存在しないことを確認します。 このタスクの実行方法については、このドキュメントでは説明しません。 次に、いくつかのヒントを示します:
ファイアウォールは、すべてのトラフィックをGREトンネル・ネットワーク内の反対側の1つのインタフェースにルーティングするのではなく、インタフェースを完全に無視するように設定する必要があります。 これは、フィルタリングによりCPUのオーバーヘッドが発生し、それがスループットにマイナスの影響を与える可能性があるためです。
一般的なファイアウォール・ルール(すべてのインタフェースに適用されるルール)が、現在構成しているインタフェースにも適用される可能性があるので、これを、このインタフェースに適用されないように変更する必要があります。 回避策として、このインタフェースを無視するための新しいルールを追加します。
インタフェースに影響を与える可能性のあるネットワーク抑制を無効にします。 このタスクの実行方法については、このドキュメントでは説明しません。
この項では、RUEIに付属のtunnelctl
スクリプトを使用してGREトンネルを作成する方法について説明します。
次のコンポーネントが必要です。
RUEIコレクタとして1つのエンドポイントが設定されている、2つのOracle Linuxバージョン6システム・エンドポイント
各システムに次のパッケージがインストールされている必要があります。
iproute2
tcpdump
bridge-utils
各システムに次のカーネル・モジュールが存在し、ロードされている必要があります。
ip_gre - GREトンネリングのサポート
bridge - ブリッジのサポート
veth - 仮想イーサネット・インタフェースのサポート
2つのエンドポイントが互いにアクセスできること(たとえば、pingを使用してテストします)。 関連するポートが、すべてのファイアウォール内のエンドポイントおよびその間にあるルーターで開かれていること。
2つのエンドポイントにtunnelctl
スクリプトの実行可能コピーが存在していること。
両方のエンドポイントでroot
ユーザー・アクセスが可能になっていること。
次のステップを実行して、最初のエンドポイントを設定します。
ローカルおよびリモートのエンドポイントのIPアドレスを指定します。
両方のエンドポイントに使用する数字のID (123
など)を作成します。 このIDは、両側のトンネルを識別するために使用されます。
ssh
を使用してrootとしてログインし、次のコマンドを実行します:
tunnelctl create gre Local_IP Remote_IP ID
ここで、
Local_IPは、現在のサーバーのアドレスです。
Remote_IPは、リモート・サーバーのアドレスです。
IDは、前のステップで作成したIDです。
トンネルが作成されたことを確認します。
tunnelctl list
greIDという名前のインタフェースが表示されます。
トンネルを設定するには、両方のエンドポイントを構成する必要があります。 もう一方のエンドポイントは、ストリームを複製してGRE Ethernetトンネルを介して送信する機能を備えたスイッチまたはルータにするか、あるいは複製やストリーミングを設定できる別のLinuxサーバーにできます。
もう一方のエンドポイントが、ストリームを複製してGRE Ethernetトンネルを介して送信する機能を備えたルーターまたはスイッチである場合は、製品のドキュメントを参照して必要となるステップを確認してください。
もう一方のエンドポイントがLinuxサーバーである場合は、2番目のエンドポイントで、(トンネルの作成時にはローカルおよびリモートのIPアドレスを元に戻す必要があることに注意して)トンネル・エンドポイントの設定のステップを繰り返します。
この項では、GREトンネルを手動で作成する方法について説明します。
次のコンポーネントが必要です。
RUEIコレクタとして1つのエンドポイントが設定されている、2つのOracle Linuxバージョン6システム・エンドポイント
各システムに次のパッケージがインストールされている必要があります。
iproute2
tcpdump
bridge-utils
各システムに次のカーネル・モジュールが存在し、ロードされている必要があります。
ip_gre - GREトンネリングのサポート
2つのエンドポイントが互いにアクセスできること(たとえば、pingを使用してテストします)。 関連するポートが、すべてのファイアウォール内のエンドポイントおよびその間にあるルーターで開かれていること。
2つのエンドポイントにtunnelctl
スクリプトの実行可能コピーが存在していること。
両方のエンドポイントでroot
ユーザー・アクセスが可能になっていること。
次のステップを実行して、最初のエンドポイントを設定します。
注意:
この手順を完了するまで、インタフェースを起動しないでください。
ローカルおよびリモートのエンドポイントのIPアドレスを指定します。
両方のエンドポイントに使用する数字のID (123
など)を作成します。 このIDは、両側のトンネルを識別するために使用されます。
ssh
を使用してrootとしてログインし、次のコマンドを入力して、GREモジュールをLinuxカーネルにロードします。
modprobe ip_gre
次のコマンドを実行して、GREモジュールがLinuxカーネルにロードされていることを確認します:
lsmod | grep gre
ssh
を使用してrootとしてログインし、次のコマンドを実行します:
ip link add ID type gretap local Local_IP remote Remote_IP
ここで、
Local_IPは、現在のサーバーのアドレスです。
Remote_IPは、リモート・サーバーのアドレスです。
IDは、ステップ2で作成したIDです。
トンネルが作成されたことを確認します。
ip link show
greIDという名前のインタフェースが表示されます。
「ミラー化トラフィックのインタフェースの構成」のステップを実行してトンネル・インタフェースから送信されないようにカーネルを構成し、現在準備中のインタフェース名(たとえばgreID)でIFACEをスワップします。
トンネルを設定するには、両方のエンドポイントを構成する必要があります。 もう一方のエンドポイントは、ストリームを複製してGRE Ethernetトンネルを介して送信する機能を備えたスイッチまたはルータにするか、あるいは複製やストリーミングを設定できる別のLinuxサーバーにできます。
もう一方のエンドポイントが、ストリームを複製してGRE Ethernetトンネルを介して送信する機能を備えたルーターまたはスイッチである場合は、製品のドキュメントを参照して必要となるステップを確認してください。
もう一方のエンドポイントがLinuxサーバーである場合は、2番目のエンドポイントで、(トンネルの作成時にはローカルおよびリモートのIPアドレスを元に戻す必要があることに注意して)トンネル・エンドポイントの手動設定のステップを繰り返します。
この項では、ミラー化されたデータのレイヤー2 hubとして機能するLinuxブリッジを作成および設定する方法について説明します。 仮想タップおよびGREトンネルをブリッジに追加して、必要な構成を作成できます。 複数のブリッジを設定することもできますが、このような構成についてはこのドキュメントでは説明しません。
次のコンポーネントが必要です。
次のパッケージがインストールされている必要があります。
iproute2
tcpdump
bridge-utils
次のカーネル・モジュールが存在し、ロードされている必要があります。
bridge
次のステップを実行して、ブリッジを作成します。
ssh
を使用してrootとしてログインし、次のコマンドを実行します:
brctl addbr BRTUN
ここで、
BRTUNはブリッジの名前です。
ブリッジが作成されたことを確認するために、次のコマンドを実行します:
brctl show
次のコマンドを実行して、スイッチのかわりにブリッジが(ドゥmb)ハブとして機能するように構成します:
brctl setfd BRTUN 0brctl setageing BRTUN 0
次のコマンドを実行して、サイレントになるようにブリッジを構成します:
brctl stp BRTUN off
「ミラー化トラフィックのインタフェースの構成」のステップを実行して、ブリッジ・インタフェースから送信されないようにカーネルを構成し、現在準備しているインタフェース名(例: BRTUN >)でIFACEをスワップします。
ブリッジをアクティブにして、すべてのトラフィックを受け入れるように設定するには、次のコマンドを実行します:
ip link set BRTUN promisc on arp off up
2つのエンドポイント間にGREトンネルが設定され、ミラー化されたトラフィックのためのインタフェースがあり、ミラー化されたトラフィックがlinux (仮想)マシンでルーティングされないことを確認したら、一方の端にping
を実行し、GREトンネル・トラフィックを調べることで、もう一方の端にtcpdump
を実行することで、GREトンネルをテストできます。 次のステップでは、2つのエンドポイントをソースと宛先と呼びます。ソースはping
が稼働しているエンドポイントを示し、宛先はtcpdump
を使用してトラフィックを検証します:
両方のシステムで次のコマンドをroot
として実行し、どちらかのエンドポイント・システムのGREトンネル・インタフェースが起動していることを確認します:
ip li set GRETUN up
ICMPパケットをトンネルを通して送信するには、次のコマンドを実行します(ソース・システムのroot
):
ping -I GRETUN 127.1.1.1
このIPアドレスはローカル・アドレスであるため、誤ってどこかにルーティングされることのないように選択されています。 ping -I
を使用すると、ICMPパケットはGREトンネルを介してのみ送信され、宛先エンドポイントからの可視性は制限されます。
移行先システムで次のコマンドをroot
として実行して、GREカプセル化されたトンネル・トラフィックが受信されたことを確認します。 ここで、ETH
はトンネルを経由したインタフェース(ローカル・エンドポイント、通常はeth0)であり、トンネル・インタフェース自体ではありません。
tcpdump -i ETH -c 100 proto gre
次のように、GREパケット(GREv0)でラップされた前述のIPアドレスに対するARPリクエストまたはICMPリクエスト(あるいはその両方)が表示されます。
… IP server_A > server_B: GREv0, length 46: ARP, Request who-has 127.1.1.1 tell server_A, length 28 … IP server_A > server_B: GREv0, length 102: IP server_A > 127.1.1.1: ICMP echo request, id 62057, seq 1, length 64
このセクションでは、Oracle Linuxバージョン6マシン上のほかのライブ・インタフェースからミラー化トラフィックを提供する、タップ・ネットワーク・インタフェースを作成する一般的なメソッドについて説明します。 この方法では、Linuxトラフィック・シェーピングを使用してインタフェースの受信データと送信データをミラー化し、そのネットワーク・トラフィックを新しく作成された一連の仮想イーサネット・インタフェースにコピーします。
2つの仮想イーサネット・インタフェースのセットは、一方に入ってきたデータがもう一方から出るように互いに接続されているため、この意味で、両者は1つの仮想NICケーブルとして機能しています。 これらの仮想イーサネット・インタフェースは一般的に、仮想ネットワーキングで使用されます。
ローカル・インタフェースはすべて、このメソッドを使用してミラー化できます。そのメソッドには、管理ssh
接続とインタフェースの運搬GREトンネル・トラフィックのインタフェースも含まれます。 これが可能なのは、この章に示したトラフィック・シェーピング・ルールの1つによって、GREトラフィックがミラー化されたトラフィックから除外されるためです。
このプロシージャは、仮想インタフェースのペアを作成します。一方は"ETH mirror"で、他方は"ETH tap"と呼ばれます。 たとえば、インタフェースeth0
をタップする場合は、まずeth0mirror
とeth0tap
という仮想インタフェースのセットを作成します。 このようにインタフェースに名前を付けると、GREトンネルへの複数のローカル・インタフェースをミラー化できるため、システムでこれらのインタフェースと他のミラーリング設定とを区別できます。 以後、これらをETH、MIRRORおよびTAPと表記します。
ETHインタフェースのトラフィックは、MIRRORインタフェース上でミラー化されます。 これらは仮想イーサネット・ペアであるため、MIRRORインタフェースを通過するすべてのトラフィックはTAPインタフェースにも表示され、任意のネットワーク構成でそのTAPインタフェースを(直接またはブリッジ内で)使用できます。
次のコンポーネントが必要です。
タップは、Oracle Linuxバージョン6システムで作成されることです。
次のパッケージがインストールされている必要があります。
iproute2
tcpdump
次のカーネル・モジュールが存在し、ロードされている必要があります。
veth - support
for仮想イーサネット・インタフェース
ミラー化するライブ・インタフェース(以後、ETHと表記)が存在していること。
次のステップを実行して、ミラー仮想インタフェースおよびタップ仮想インタフェースを作成します。
次のコマンドをroot
として実行して、仮想インタフェースのペアを作成します:
ip li ad TAP type veth peer name MIRROR
次のコマンドをroot
として実行して、インタフェースをアクティブ化します:
ip li set dev TAP up promisc on arp off ip li set dev MIRROR up promisc on arp off
トラフィック形状により、指定されたインタフェース(ETH)のすべての受信トラフィックと送信トラフィックを、新しく作成されたMIRROR
仮想インタフェースにコピーできます。 トラフィック・シェーピングの仕組みについてはこのドキュメントでは説明していませんが、個々のステップが注釈として付けられています。
ミラー設定は単純ですが、GREトラフィック(パケット・タイプGREv0の場合は「GREトンネルのテスト」を参照)がミラー化されないように、フィルタを追加する必要はありません。 これを行う必要があるのは、GREトンネルが転送されるインタフェースをミラー化している場合、GREトンネルではネットワークに障害が発生してサーバーに障害が発生するような独自のトラフィック(ループ)を強制的に伝達しないようにするためです。
受信トラフィックをミラーするには、次の手順を実行します:
次のコマンドをroot
として実行することによって、ETHに圧縮規則を追加します:
tc qdisc add dev ETH ingress
ミラー化されないように、受信するすべてのGREトラフィックをマシンに渡すためのフィルタを追加します。 次のコマンドを実行します。
tc filter add dev ETH parent ffff: \
protocol all prio 1 u32 \
match ip protocol 47 0xff flowid 1:1 \
action pass
残りのすべてのトラフィックをミラーするフィルタをMIRRORインタフェースに追加します。 次のコマンドを実行します。
tc filter add dev ETH parent ffff: \ protocol all prio 2 u32 \ match u32 0 0 flowid 1:2 \ action mirred egress mirror dev MIRROR
すべての発信トラフィックをミラーするには、次の手順を実行します:
次のコマンドを実行することによって送信トラフィックをフィルタ処理できる1つ(prio)でETHのroot qdiscを置き換えます。root
:
tc qdisc replace dev ETH parent root handle 10: prio
ミラー化されないように、すべての送信GREトラフィックをマシンに渡すためのフィルタを追加します。 次のコマンドを実行します。
tc filter add dev ETH parent 10: \
protocol all prio 1 u32 \
match ip protocol 47 0xff flowid 10:1 \
action pass
残りのすべてのトラフィックをミラーするフィルタをMIRRORインタフェースに追加します。 次のコマンドを実行します。
tc filter add dev ETH parent 10: \ protocol all prio 2 u32 \ match u32 0 0 flowid 10:2 \ action mirred egress mirror dev MIRROR
注意:
この手順の完了後にMIRRORインタフェースを非アクティブ化すると、ETHネットワーク・トラフィックが中断します。 残りの設定ではTAPインタフェースのみを使用しますが、MIRRORインタフェースを非アクティブにしても結果は変わらないため、MIRRORインタフェースはアクティブのままにしておきます。
この時点では、2つの新しいインタフェース(MIRRORおよびTAP)があります。 MIRRORはトラフィック・シェーピング・ルールでETHからのネットワーク・トラフィックをミラー化するために使用され、TAPはMIRRORの仮想インタフェースに相当するものです。 MIRRORは現在からアクティブのままにして、システムによってデータがルーティングされないことを確認しているかぎり、ネットワーク設定でTAPを使用します。 これをテストするには、TAPインタフェース上のトラフィックを調べます。 そのトラフィックは、ETH上のトラフィックからGREトラフィックを除いた量と同じになるはずです。
次のコマンドをroot
として実行して、TAPインタフェース上のトラフィックを表示します:
tcpdump -i TAP -c 100 -n
ステップ1の出力を、次のコマンドの出力(ETH上のトラフィックからGREトラフィックから除外した量)と比較します。
tcpdump -i ETH -c 100 -n ! proto gre
注意:
同じ出力を表示するには、両方のコマンドを同時に実行する必要があります。 前述のステップを同時に実行すると、出力が整列していない可能性がありますが、位置合せされた後は両者が同じであることがわかります。
この項では、特定のインタフェースを通過するパケットがLinuxカーネルによりルーティングもフィルタも行われないように設定する方法について説明します。
次のステップでは、IFACEは、すべてのパケットをルーティングせずに受け入れるように設定するインタフェースを示しています。
次のコマンドを実行して、arpまたはマルチキャスト・パケットに応答せずにすべてのトラフィックを受け入れるようにインタフェースを構成します。root
:
ip link set IFACE down promisc on arp off multicast off
このコマンドを実行すると、インタフェースが停止していなかった場合にもインタフェースが停止し、データを誤ってルーティングすることがないようにできます。 すべてのステップが完了するまで、インタフェースを再起動しないでください。
インタフェースにIPv6アドレスが自動的に割り当てられないようにするには、次のコマンドを実行します:
sysctl -w net.ipv6.conf.IFACE.autoconf=0 sysctl -w net.ipv6.conf.IFACE.accept_ra=0
インタフェースにIPv4またはIPv6アドレスがすでに割り当てられているか確認します。
ip address show IFACE
上記のコマンドの出力で、inet(IPv4)またはinet6(IPv6)で始まるアドレスをすべて削除してください(IPは削除するアドレスです):
ip address delete IP dev IFACE
このインタフェースが、(受信しないため応答することもない)それ自身のIPアドレスに対するARPリクエストにのみ応答することを確認します。
sysctl -w net.ipv4.conf.IFACE.arp_ignore=1
受信パケットが破棄されないように、逆方向パス・フィルタリングを無効にします。
sysctl -w net.ipv4.conf.IFACE.rp_filter=0
トンネルに対してルーティングを設定する(あるいは何もルーティングを指定しない)ことができるように、空のルーティング表番号を選択します。
この例では、表番号200を使用します。 次のコマンドを実行して、表が空であることを確認します:
ip route show table 200
1つのシステムで複数のインタフェースを設定するには、これらのステップですべて同じ表を使用します。インタフェースは空のままです。
カーネルが空の表を使用してこのインタフェースのルーティング情報を参照するように、ルーティング表ルールを作成します。
ip rule add iif IFACE table 200
次のコマンドを実行して、ルールが追加されたことを確認します:
ip rule show
出力例を次に示します:
0: from all lookup local
32765: from all iif IFACE lookup 200
32766: from all lookup main
32767: from all lookup default
システムでファイアウォールがアクティブになっている場合は、インタフェースを経由するパケットをフィルタリングしていないことを確認してください。 ここにリストする別のファイアウォール・アプリケーションが多すぎるため、これを実行する方法について説明するには、このドキュメントの範囲外にあります。 ここでは、考慮すべき問題の短いリストを示します:
ファイアウォールは、すべてのトラフィックをGREトンネル・ネットワーク内の反対側の1つのインタフェースにルーティングするのではなく、インタフェースを完全に無視するように設定する必要があります。 これは、フィルタリングによりCPUのオーバーヘッドが発生し、それがスループットにマイナスの影響を与える可能性があるためです。
一般的なファイアウォール・ルール(すべてのインタフェースに適用されるルール)が、現在構成しているインタフェースにも適用される可能性があります。 これらのルールをこのインタフェースに適用されないように変更するか、このインタフェースを無視するための新しいルールを追加する必要があります。
ネットワーク抑制が有効になっているシステムによっては、構成中のインタフェースで削除またはオフになっている必要があります。有効にしていない場合は、コピーまたはミラー化されたネットワークの一部のパケットが削除されることがあります。 ネットワーク抑制の構成を変更する方法については、このドキュメントでは説明しません。 トラフィックのシャッピングを使用する場合でも、このドキュメントで導入されるトラフィックのシャッピング規則(「ミラーの構成」、「ミラーの構成」、「トンネル制御スクリプトを使用したGREトンネルの構成」も参照)に注意してください。