ipchainsの設定


ipchainsの設定とは、カーネルのIPパケットフォワーディング機能を制御することです。
すなわち、カーネルが、IPパケットを異なるネットワークインターフェース間で正しく転送できるように設定することです。

初期状態では、この機能が無効となっていますので、これを有効になるように設定してやりましょう。
その設定ファイルは、「/etc/sysctl.conf」ファイルです。

・/etc/sysctl.conf

# Disables packet forwarding
#re 2001.02.26 value=0 --> 1
net.ipv4.ip_forward = 1
# Enables source route verification
net.ipv4.conf.all.rp_filter = 1
# Disables automatic defragmentation (needed for masquerading, LVS)
#re 2001.02.26 value=0 --> 1
net.ipv4.ip_always_defrag = 1
# Disables the magic-sysrq key
kernel.sysrq = 0

この「net.ipv4.ip_forward=1」が、IPフォワーディングを有効にする設定です。
気づかれたかと思いますが、RedHat Linux 6.2以降のバージョンでは、IPフォワーディングを有効にするために、先ほどの「/etc/sysconfig/network」ファイルでの設定だけでなく、この「/etc/sysctl.conf」でも正しい値(=1)を設定しなければなりません。
また、「net.ipv4.ip_always_defrag=1」はIPマスカレードを有効にする設定です。
どちらも初期値は「0」になっていますので、適当なエディタで開いて修正しましょう。

・IPマスカレードの設定

次は、IPマスカレードの設定です。
IPマスカレードとは、プライベートアドレスで運用されているローカルネットワークに接続されたコンピュータをグローバルアドレスが必要であるインターネットに接続できるようにする仕組みです。
もっと分かりやすく言えば、ひとつのグローバルアドレスを有効に使って、多数のコンピュータからインターネットにアクセスできるようにすることです。

それでは、実際にipchainsの設定を行います。
ipchainsの設定とは、「ルール」と呼ばれるIPパケットをフィルタリングする条件を設定することです。
そして、このルールの集合体を「チェイン」と呼び、カーネルがIPパケットを処理するタイミングにより「input」、「forward」、「output」の3つの組み込みチェインがあります。
また、ユーザー独自のユーザー定義チェインも設定することができます。
そして、ルールに合致したIPパケットの取り扱いを指すものを「ターゲット」といい、次の6つのターゲットが指定できます。

ターゲット 取  り  扱  い
ACCEPT IPパケットを通過させる
DENY IPパケットを破棄する
MASQ IPマスカレード処理を行う (forwardチェインのみで使用可) 
REDIRECT<port> IPパケットを指定した<port>に転送する (inputチェイン、ユーザー定義チェインのみで使用可)
REJECT IPパケットを破棄し、送り主にICMPパケットを送り返す
RETURN チェイン内にルールが残っていても、その時点で評価を終了する


なお、チェインには「ポリシー」という、デフォルトのターゲットが設定され、ルールが一つも設定されていない場合、そのチェインにおけるIPパケットの基本的な取り扱いは、このポリシーに従います。
ポリシーは、上記のターゲットのうち、「ACCEPT」、「DENY」、「REJECT」のいずれかを指定します。

それでは、以下に私が設定したルールを示します。
(実際の設定は、rootになってコマンドを打ち込んでいきます。)

# ipchains -P forward DENY
# ipchains -A forward -s 192.168.1.0/24 -j MASQ

そうです、たった2行だけなんです。
一応、この2行の意味を解説します。
1行目は、forwardチェインにIPパケットを破棄するポリシーを設定しています。
これを設定しておかないと、デフォルトのポリシーがACCEPT(IPパケットを通過させる)ですので、インターネット側からLAN内に侵入される可能性があります。
2行目は、forwardチェインにプライベートアドレス192.168.1.0〜192.168.1.255を始点アドレスとするIPパケットはIPマスカレード処理を行うように追加しています。

ここで設定したルールは、Linuxを再起動した場合に白紙に戻ってしまいます。
そこで、Linuxを再起動した場合にも、このルールが自動的に有効になるように設定しておきましょう。
Red Hat Linuxでは、デフォルトで起動時にipchainsが立ち上がるように設定されています。
この起動時にipchainsが参照する設定ファイルが「/etc/sysconfig/ipchains」です。
そこで、現在設定しているルールをこの /etc/sysconfig/ipchains に保存するのが「ipchains-save」という制御スクリプトです。
それでは、先ほどと同じように root で次のコマンドを打ち込みます。

# ipchains-save > /etc/sysconfig/ipchains

これでOKです。
それでは、DNSサーバーの説明に移りましょう。