IP Filter による IP Masquerade 環境の構築


  1. Network Address Translator

    なにかと便利なので nat 環境 (本質は IP Masquerade) を構築します。
    本来、IP Filter は IP のフィルタなのですが (そのまんまやん)、今回は nat としてこれを利用します。

  2. ダウンロードなのだ

    とにもかくにもソースの入手です。
    http://coombs.anu.edu.au/~avalon/ip-filter.html が IP Filter のサイトです。
    ip-fil3.4.6.tar.gz を使ってみます。

  3. 展開してコンパイルしてインストールするよ

    展開です。
    ↓こんなかんじ。

    % pwd
    /opt/src
    % gzip -cd ip-fil3.4.6.tar.gz | tar xvf -

    コンパイルです。
    gcc はインストールされていると前提して make solaris でおっけです。INSTALL.Sol2 ファイルによると、一点だけ注意すべきなのは GNU make を使わない、ということ。/usr/ccs/bin/make を使います。

    % pwd
    /opt/src/ip_fil3.4.6
    % /usr/ccs/bin/make solaris

    コンパイルが正常に終わったらインストールです。
    SunOS5 ディレクトリで make package を実行すると pkgadd が実行されます (super user で実行します)。

    # pwd
    /opt/src/ip_fil3.4.6/SunOS5
    # /usr/ccs/bin/make package

  4. 必要な環境

    二つのネットワークインターフェイスが必要です。一つはイーサネット、もう一つはシリアル (の先に繋がってるモデムやTA) と前提します。

  5. マップルール - /etc/opt/ipf/ipnat.conf

    /etc/opt/ipf/ipnat.conf ファイルに、nat 構成でのアドレス変換のルール (マップルール) を記述します。
    以下の例で説明します。

    # pwd
    /etc/opt/ipf
    # cat ipnat.conf
    map ipdptp0 192.168.5.0/24 -> 0/32 proxy port ftp ftp/tcp
    map ipdptp0 192.168.5.0/24 -> 0/32 portmap tcp/udp 10000:40000
    map ipdptp0 192.168.5.0/24 -> 0/32
    #

    まず、各行に存在する五つのワード (map ipdptp0 192.168.5.0/24 -> 0/32) を見ます。

    次に一行ずつ見てみます。

  6. ルータであること

    nat として機能するためには、目的のホストがルータであること (IP フォワードする設定になっていること) が必要です。

    システムが起動する際に /etc/rc2.d/S69inet start が実行され、或る条件下でシステムはルータになり、IP フォワードがオンになります。

    ここで少し脇道にそれて、PPP 接続環境下でのルーティングと IP フォワーディングを考えてみます。
    便宜的に、常時接続環境とパートタイム接続の環境の二つに分けて考えてみます。

    以下は IP フォワードがオンになっていることを確認している例です。

    # ndd /dev/ip ip_forwarding
    1
    #

  7. ちょっとだけ確認

    システム起動時に /etc/rc2.d/S65ipfboot により IP Filter が起動します(S69inet より先に実行されるのがちょっとだけ不思議な感じがしませんか?)。console に error が出力されないことを確認します。
    以下はブート中に S65ipfboot が出力するメッセージの例です。

    IP Filter: attach to [iprb0,0] - IPv4
    IP Filter: attach to [ipdptp0,0] - IPv4
    IP Filter: v3.4.6, attaching complete.
    Set 0 now inactive
    0 entries flushed from NAT table
    0 entries flushed from NAT list

    システム起動後に以下のようにマップルールを確認できます。

    # /sbin/ipf -y
    filter sync'd
    # /sbin/ipnat -l
    List of active MAP/Redirect filters:
    map ipdptp0 192.168.5.0/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp
    map ipdptp0 192.168.5.0/24 -> 0.0.0.0/32 portmap tcp/udp 10000:40000
    map ipdptp0 192.168.5.0/24 -> 0.0.0.0/32

    List of active sessions:
    #

    LAN 内のクライアント上で nat の server の LAN 側インターフェイスをゲートウェイに設定します。クライアントから ftp や telnet で LAN の外部と access できるようになります。


もどる Last modified: 04/09/01 00:41:01 JST