なにかと便利なので nat 環境 (本質は IP Masquerade) を構築します。
本来、IP Filter は IP のフィルタなのですが (そのまんまやん)、今回は nat としてこれを利用します。
とにもかくにもソースの入手です。
http://coombs.anu.edu.au/~avalon/ip-filter.html が IP Filter のサイトです。
ip-fil3.4.6.tar.gz を使ってみます。
展開です。
↓こんなかんじ。
% pwd |
コンパイルです。
gcc はインストールされていると前提して make solaris でおっけです。INSTALL.Sol2 ファイルによると、一点だけ注意すべきなのは GNU make を使わない、ということ。/usr/ccs/bin/make を使います。
% pwd |
コンパイルが正常に終わったらインストールです。
SunOS5 ディレクトリで make package を実行すると pkgadd が実行されます (super user で実行します)。
# pwd |
二つのネットワークインターフェイスが必要です。一つはイーサネット、もう一つはシリアル (の先に繋がってるモデムやTA) と前提します。
/etc/opt/ipf/ipnat.conf ファイルに、nat 構成でのアドレス変換のルール (マップルール) を記述します。
以下の例で説明します。
# pwd |
まず、各行に存在する五つのワード (map ipdptp0 192.168.5.0/24 -> 0/32) を見ます。
次に一行ずつ見てみます。
nat として機能するためには、目的のホストがルータであること (IP フォワードする設定になっていること) が必要です。
システムが起動する際に /etc/rc2.d/S69inet start が実行され、或る条件下でシステムはルータになり、IP フォワードがオンになります。
ここで少し脇道にそれて、PPP 接続環境下でのルーティングと IP フォワーディングを考えてみます。
便宜的に、常時接続環境とパートタイム接続の環境の二つに分けて考えてみます。
一意に定まるデフォルトルーティングのデスティネーションがわかっている場合は /etc/defaultrouter を記述して静的ルーティングを確立できますが、この場合は /etc/rc2.d/S69inet により、IP フォワードがオフになります。動的ルーティングの場合は、/etc/defaultrouter を作成せずに、/etc/gateways を作成します (0 Byte file で構わないです)。この場合 /etc/rc2.d/S69inet により、/usr/sbin/in.routed と /usr/sbin/in.rdisc が起動し、動的ルーティングを確立させます。この状態では in.routed のパケットにより PPP 接続が開始されるようです。この場合、IP フォワーディングがオンになります。
非常時接続の場合、要となる設定は「PPP 接続が確立していない状態では PPP 接続のデバイスにはパケットを飛ばさない」ということ。つまりこれはユーザが明示的に PPP 接続を開始しない限り、システムには PPP 接続を開始させない、ということです。これを行うための設定は二点です。PPP デバイス上での RIP パケットの抑制と、PPP デバイス以外へのルーティングです。前者は、/etc/gateways に norip ipdptp0 を記述することで可能であり、後者を行うには /etc/defaultrouter に LAN 内に存在しない IP address を記入します (精神衛生上、あまり健全な設定ではないように思いますけれど・・)。そしてユーザが接続要求を明示した時点で PPP 接続が開始され、接続が確立するとルーティングの設定も書き換えられます。この場合は /etc/defaultrouter が存在しますので、IP フォワードはオフになります。この環境で IP フォワーディングをオンにするには /etc/rc2.d/S69inet 中で /usr/sbin/ndd -set /dev/ip ip_forwarding 1 が実行されるように細工します。
以下は /etc/rc2.d/S69inet 中の IP フォワーディングが起動される部分の抜粋です。この例では /usr/sbin/in.rdisc の起動を抑制しています (IP フォワードを強制する例ではないです)。
# Machine is an IPv4 router: turn on ip_forwarding, run |
以下は IP フォワードがオンになっていることを確認している例です。
# ndd /dev/ip ip_forwarding |
システム起動時に /etc/rc2.d/S65ipfboot により IP Filter が起動します(S69inet より先に実行されるのがちょっとだけ不思議な感じがしませんか?)。console に error が出力されないことを確認します。
以下はブート中に S65ipfboot が出力するメッセージの例です。
IP Filter: attach to [iprb0,0] - IPv4 |
システム起動後に以下のようにマップルールを確認できます。
# /sbin/ipf -y |
LAN 内のクライアント上で nat の server の LAN 側インターフェイスをゲートウェイに設定します。クライアントから ftp や telnet で LAN の外部と access できるようになります。