iptablesによる負荷分散とDoS対策習うより慣れろ! iptablesテンプレート集(3)(1/4 ページ)

iptablesを応用すれば、簡易負荷分散システムを構築できる。さらに、DoS対策やQoSの実現方法を紹介する。(編集部)

» 2005年06月14日 00時00分 公開
[鶴長鎮一@IT]

 第1回ではfilter、第2回ではnatテーブルを主に使用したiptablesのテンプレートを紹介しました。今回は、mangleテーブルを利用したテンプレートや以前紹介したテンプレートを応用した負荷分散方法、DoS対策を紹介します。

mangleテーブルによるQoS

 mangleは、特別なパケット変換に使われるテーブルです。mangleテーブルを用いることで、IPv4パケットのIPヘッダ中で定義されているTOS(Type Of Service)フィールドの値を書き換えることができます。TOSフィールドはパケット処理の優先度付けに利用され、通信品質を制御するQoS(Quality of Service)を可能にします。

 ただし、iptables自身にTOSフィールドの値で通信帯域幅をコントロールしたり、パケットの遅延を制御したりする機能はありません。そうした要求を満たすには、iproute2(コラム参照)を導入し、iproute2に含まれるipコマンドやtcコマンドを使用する必要があります()。

注:カーネルもそうした要求を満たすようにコンパイルされている必要があります。

 簡単な仕組みに見えるQoSですが、通信経路上のすべてのルータがQoSを解する必要があります。1つでもTOSフィールドの扱いが不完全なルータが存在すると、動作に異常が生じる場合があります。そのため、インターネットへと出ていくパケットに対してTOSフィールドを設定する機会はまれです。また、TOSフィールドそのものが、現状ではDSCP(Differentiated Services Code Point)として見直されたり、ECN(Explicit Congestion Notification)に流用されるなど、あまり使われるケースがないのが現状です。mangleテーブルを使用したサンプルをあまり見かけないのはこのためです。

図 mangleテーブルで使用できるチェイン 図 mangleテーブルで使用できるチェイン

 mangleテーブルで書き換えが可能な値には、主に次のものがあります。

  • TOS

TOSフィールドの値を新たに設定/変更できる。値はTOS名または数値(10進または16進数)。

例:

--set-tos TOS名または数値
 
指定可能なTOS名(数値)
意味










Minimize-Delay
(16または0x10)
パケットを渡す際の遅延(delay)を最小限にする
Maximize-Throughput
(8または0x08)
できる限り高スループットの経路を探す
Maximize-Reliability
(4または0x04)
できる限りコネクションの信頼性が高く、できる限り信頼性の高いラインを使う
Minimize-Cost
(2または0x02)
通信相手までの通過コストが最も少ない経路を見つける
Normal-Service
(0または0x00)
特別の要件を持たない一般的なもの

  • DSCP

TOSフィールドは、新たにDS(Differentiated Services:DiffServ)フィールドとして再定義されている。このDSフィールドに、DiffServ対応のルータなどが行う優先度制御動作を決めるための値を設定する。

例:

--set-dscp DSCPの数値(10進または16進数)
--set-dscp-class DiffServクラス(BE、EF、AFxx、CSx)
  • ECN

ECNビット(輻輳通知機能に使われるECEやCWRフラグ)を削除できる。

例:

--ecn-tcp-remove
  • MARK

パケットに特別なマークを付ける。ただし、マークが維持されるのはパケットがカーネルの中で処理されている間のみ。通常はiproute2と組み合わせて、マークが付いているパケットのルーティングを切り替えたり、帯域制限やClass Based Queuingに使用する。マーク値によってどのように処理するかは、ip/tcコマンドとの連携操作による。

例:

--set-mark mark マーク値(符号なしの整数:32bitシステムでは4294967296通り)

コラム iproute2

 カーネルコンパイル時にオプションを有効にしていれば、iproute2を利用してクラス分け、優先度付け、共有化、制限など、さまざまなトラフィック制御が可能になります。iproute2には、トラフィック制御関連の設定を行うtcコマンド、ネットワークインターフェイスの設定を行うipコマンドなどが用意されています。ipコマンドは、以下のようにifconfigコマンドやrouteコマンドの代わりに使用できます。

$ ip link list
$ ip address show
$ ip route show
$ ip neigh show

 iptablesのmangleテーブルとiproute2のip、tcコマンドを駆使することでさまざまなトラフィック制御を実現することができますが、その話はいつかまた別の機会に。


       1|2|3|4 次のページへ

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。