[Home] [Kuri] [Sysad] [Internet?] [Blog] [Java] [Windows] [Download] [Profile] [Flash] [+]

IPFW と natd で NAPT

IPFW と natd を用いて簡単に NAPT(IPマスカレード)ができます。
複雑な構成でなければ、設定は簡単です。その簡単な場合について、以下に (簡単に)書きます。
# たぶんいろんなところで書かれていると思いますが…。

目次


1. 環境

ひとんちの FreeBSD 3.5.1R で行いました。
疑似環境なので、各インタフェースに PC を直接(クロスケーブルで)接続 し、両端の PC 同士で通信させて動作確認しました。

2. 前準備

2.1 カーネルの再構築

IPFW を使いますので、
IPFW の時と同様カーネル の再構築が必要です。フィルタリングしないなら、options IPFIREWALL だけで十分だと思います。(でも、何度も再構築するのが面倒臭いと思われ るなら、少々冗長に指定しておく方がかたいと思います。)

2.2 rc.conf の変更(追加)

firewall_enable"YES" としないと動作しません。
その他に以下の設定が必要になります。

  firewall_type="open"
  natd_enable="YES"
  natd_interface="外側のインタフェース"

いずれも /etc/rc.firewall を見ればわかると思いますが、一応説明して おきますと…
firewall_type は、open にしておくとなんでも通します。フィルタリング の必要がなければこうしておいていいと思います。(ただし、外側からの パケットも中継しますので、ルータで内側へのパケットを止めるようにする 必要があるかもしれません。(ただし、そういうパケット(==宛先がプライ ベートアドレスなパケット)は飛んでこない環境がほとんどだと思います ので、気にしないというスタンスでもいいかもしれません。))
natd_enable は、OS 起動時に natd を起動するかどうかを選択します。 (これはもちろん "YES" ですね。)
natd_interface は、外側のインタフェースを指定します。
あと、natd_flags があります。natd に渡したいオプションがあれば、 これに書いておきます。(例えば -l とか。)

2.3 reboot

エラーらしきものが出ていないかどうか確認します。
また、natd が動作していることを確認します。 (例えば ps auxww|grep natd などとします。)

3. 動作確認

基本的には内側のマシンから外側のマシンに対して行います。
ルータ等でフィルタリングしている場合は、外にあるマシンからアクセス を試みて、つながらないことを確かめる必要があると思います。

まず、外にある(ICMP echo request を受け付けてくれる)マシンに対して ping を行ってみます。natd がちゃんと動いていれば、応答が来るはずです。 (ルータ等で ICMP を通していない場合は気にしないでください。)

次に、アクセスログを参照できるWWWサーバにアクセスしてみます。 そして、アクセスログを見て、アドレスが外側インタフェースのアドレス であることを確認します。
(別に http でなくても、telnet もしくは ssh でリモートログインし、 w コマンド等で、マシン名(or IPアドレス)が外側インタフェースの アドレスであることが確認できればいいと思います。)

Powered by Apache PostgreSQL Usupi Logo Kuri Logo
[Home] [Kuri] [Sysad] [Internet?] [Blog] [Java] [Windows] [Download] [Profile] [Flash] [-]
usu@usupi.org Last modified : Wed Jun 6 14:34:59 2001