| NetBSD 解説 | sysinst | pkgsrc 各論 | packages | macppc | TsubaiBSD | 絹/software/全文検索
at www.ki.nu

NetBSD 解説

Last Update: "2007/11/12 00:02:30 makoto"

ipnat

【IP NAT Network Address Translation の設定】
接続業者から 固定の IP address を一つだけもらっている時や、ダイアルアップで ppp を 使ってインターネットに接続している時には、見かけ上は一台の機械しかつなげません。しか し、そういう時でも、IP NAT (Network Address Translation) という方法を使えば、自分の ネットワークの複数の機械をインターネットに同時につなぐことが出来ます。関連して ipf (IP Filter) という機能があります。これは ipnat とは一応別の機能ですが、ipnat を使う 時には ipf を必要としますので、「全てを通す」設定で利用します。

【準備】ipnat と ipf を使えるようにします。

  • (1) /etc/rc.conf に
    ipnat=YES
    
    という行を加えます。
  • (2) /etc/ipf.conf
    # touch /etc/ipf.conf
    のようにして、空の ipf.conf を作っておきます
    -rw-r--r-- 1 root wheel 0 Oct 17 12:34 /etc/ipf.conf
  • (3) ip forwarding
    ip forwarding を生かしておきます。その為には次の三つのうちのどれか一つを行います。
    • (3a)/etc/sysctl.conf に次のように書く(要再起動)
      net.inet.ip.forwarding=1
      
    • (3b) kernel の次の行の # を取って(消して) kernel を作り直す(要再起動)
      #options        GATEWAY         # packet forwarding
      
    • (3c) あるいは再起動する前に生かしたい場合は、
      sysctl -w net.inet.ip.forwarding=1
      と入力しても大丈夫です。
【/etc/ipnat.conf】ipnat の設定
-rw-r--r--  1 root  wheel    193 Oct 17 13:42 /etc/ipnat.conf
を用意します。これの書き方については様々な可能性があり、/usr/share/examples/ipf/
にも例があるのですが、簡単な例だけを二つ紹介します。

【CATV, ADSL などのルーター接続で固定の IP address が利用出来る時】
 
     |WAN (外側) 210.aaa.bbb.ccc/32
+----+-----+
|   ne0    |
|          | NetBSD
|   gm0    |
+----+-----+
     |LAN (内側) 192.168.1.1/24

  NetBSD 箱をルータにします。Ethernet の口を二つ用意します。もし既に内蔵されている機
種なら NIC (Network Interface Card) を一つ追加するだけです。上記例では ne0 がこれに
当ります。割当られている IP address が 210.aaa.bbb.ccc だとして、それを 外側につながっ
ている ifconfig.xx?  に設定します。NIC の種類にと枚数に応じて xx? の部分が gm0 mc0
ep0 ne0 などと名前が変りますが、外側につなぐ口が ne0 だったら ifconfig.ne0 に
  +------------- /etc/ifconfig.ne0 ----------------------
  | 210.aaa.bbb.ccc netmask 0xffffffff media autoselect
  +------------------------------------------------------
のように記述します。一方内部のネットワークの中の方の IP address を 192.168.1.1
としますと、例えば ifconfig.gm0 に
  +------------- /etc/ifconfig.gm0 ----------------------
  | 192.168.1.1   netmask 0xffffff00 media autoselect
  +------------------------------------------------------
のように書いておきます。このような場合、/etc/ipnat.conf に次のように書きます。
(これはあくまで一例です) ne0 の文字の部分も NIC の種類によって変ります。
  +--------------------- /etc/ipnat.conf ------------------------
  |  map ne0 192.168.1.1/24 -> 210.aaa.bbb.ccc/32 
  |  map ne0 192.168.1.1/24 -> 210.aaa.bbb.ccc/32 proxy port ftp ftp/tcp
  |  map ne0 192.168.1.1/24 -> 210.aaa.bbb.ccc/32 portmap tcp/udp 10000:40000
  +--------------------------------------------------------------
  ここでは ne0 は(外側の)インターフェイスの名前。/24 は 24 bit のネットワークアドレ
スを意味します。つまり「この機械についている 192.168.1.0 の上位 24 bit を固定として、
残りの 8 bit は何が来ても」という意味になります。
  ne0 が 192.168.1.1 側についているのではないことに注意して下さい。筆者はしばらくこ
こに (内側の名前の) de0 と書いて悩んでいました。
  210.aaa.bbb.ccc は外側に使えるものとして割当られたものを記述して下さい。この例では 
192.168.1.1...254 までの 254 個を全て一つの 210.aaa.bbb.ccc として対応付けるという意
味になります。man ipnat.conf とすると、英語の説明が読めます。

【/etc/ipnat.conf を変更した時】
   # ipnat -f /etc/ipnat.conf 
  とすれば上記で用意した /etc/ipnat.conf を読んでくれるのですが、これではそれまでに
読んだものの上に追加するだけです。いままでカーネルで覚えている設定を消して、最初から
/etc/ipnat.conf に記述したものだけを設定するには clear の -C を使って、
   # ipnat -C; ipnat -f /etc/ipnat.conf
とします。

【ダイアルアップ ppp 接続の場合】
  自分の機械から、下の図のように外部にダイアルアップで接続している場合には、
  +--------------------- /etc/ipnat.conf ------------------------
  | map ppp0 192.168.1.1/24 -> 0.0.0.0/32 
  | map ppp0 192.168.1.1/24 -> 0.0.0.0/32 proxy port ftp ftp/tcp
  | map ppp0 192.168.1.1/24 -> 0.0.0.0/32 portmap tcp/udp 10000:40000
  +--------------------------------------------------------------
 のように書きます。

     | モデム経由でダイアルアップ
+----+-----+
|   ppp0   |
|          | NetBSD
|   gm0    |
+----+-----+
     |LAN (内側) 192.168.1.1/24

【その他】
ipnat 
    -l (list)    いまの対応表を表示します
    -C (Clear)   (kernel に持っている) NAT 規則を消します
    -F (flush)   いま使っている対応を消します
    -f (file)    指定した譜から読んで規則を加えます
    -r (remove)  指定した規則を消します ( -f の反対)
    -s (stat)    統計を表示します
    -v (verbose) いろいろ表示
    その他は man ipnat して見て下さい
ipfstat          ipf も含めた統計を表示します
    (以上は管理者 = root 権限が必要です)

【複数の IP address が使える時】
以上では割当てられている IP address を一つと仮定して説明して来ましたが、
実際には複数の場合でも同じように設定出来ます。/32 と書いてあった部分を
/28, にすれば 16 (実際には 14) で利用出来ます。
  +--------------------- /etc/ipnat.conf ------------------------
  | map ne0 192.168.1.1/24 -> 210.aaa.bbb.ccc/28
  | map ne0 192.168.1.1/24 -> 210.aaa.bbb.ccc/28 proxy port ftp ftp/tcp
  | map ne0 192.168.1.1/24 -> 210.aaa.bbb.ccc/28 portmap tcp/udp 10000:40000
  +--------------------------------------------------------------
このようにすれば、254 個の 内部 IP address で 14 個の外部 address を共用出来ます。
old pkgsrc

この画面は Jeedosaquin によって表示しています。

1.66 2008/03/08