連載
» 2010年06月02日 00時00分 公開

mangleテーブルでQoSを実現iptablesテンプレート集 改訂版(6)(3/3 ページ)

[鶴長鎮一,@IT]
前のページへ 1|2|3       

 テンプレート11
mangleテーブルでQoSを実行する

サーバとして
 受信パケットは破棄。ただしステートフル性を確認しサーバから送信されたパケットに関連するものは許可
 送信パケットは基本的にすべて許可
 ループバックアドレスに関してはすべて許可
 メンテナンスホスト(内部)からのping、メンテナンスホストへのpingを許可
 メンテナンスホスト(内部)からのssh(TCP 22)を許可

ルータとして
 転送パケットで、内部ネット→外部ネットのものは許可。外部ネット→内部ネットへの転送パケットはステートフル性を確認できたものだけ許可
 Linuxサーバを経由して外部へ出ていくパケットのソースアドレスを変換
 内部アドレスやプライベートアドレスが外部に漏れないようにブロック

QoSのため
 サーバへのssh(TCP 22)パケットの遅延(daley)を最小限にするようTOSを設定する
 サーバへのHTTP(TCP 80)パケットについては、できる限り高スループットの経路を探すようTOSを設定する

テンプレート11の表示(別ウィンドウで開く)

テンプレート11の解説

 テンプレート5をベースに、QoSのための設定を加えます。繰り返しになりますが、ここでTOSフィールドの値を変更しても、それに連携したルータや内部ルーティングの仕組みがなければQoSは実行されません。

    53	#Sample for TOS
    54	/sbin/iptables -A PREROUTING -t mangle -p tcp --dport 22  -j TOS --set-tos Minimize-Delay
    55	/sbin/iptables -A PREROUTING -t mangle -p tcp --dport 80 -j TOS --set-tos Maximize-Throughput

 TOSベースのQoSに対応させるには、54・55行目のようにTOSフィールドを書き換えます。54行目ではサーバへのssh(TCPポート22番)について、パケットの遅延(daley)を最小限(Minimize-Delay)にするようTOSを設定し、続く55行目でサーバへのHTTP(TCPポート80番)のパケットに対し、高いスループット(Maximize-Throughput)の経路を探すようTOSを設定します。

    56	#Sample for DSCP,ECN,MARK
    57	/sbin/iptables -A PREROUTING -t mangle -p tcp --dport 80 -j DSCP --set-dscp-class EF
    58	/sbin/iptables -A PREROUTING -t mangle -p tcp --dport 80 -j ECN --ecn-tcp-remove
    59	/sbin/iptables -A PREROUTING -t mangle -p tcp --dport 80 -j MARK --set-mark 15

 DiffServベースのQoSに対応させるには、DSCPを書き換えます。57行目では「--set-dscp-class」でDSCPのDiffServクラスを「EF」に設定しています。58行目がECNビットの削除、59行目がMARK値の設定例です。

次回予告

 次回はiptablesでできるDoS・DDoS対策を解説します。リクエスト応答回数に制限を設けるといった方法を紹介します。


前のページへ 1|2|3       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

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

メールマガジン登録

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