Libretto50によるコンパクトNATボックス 2

FreeBSDの4.3-RELEASEで、PCカード毎にIPアドレスの設定ができるようになったので、 以前作成したコンパクトNATボックス をバージョンアップしました。 前回はあまり詳しく買いてなかったので今回はもうちょっと詳しく書いてみます。
ただし前回のテキストの使い回しが多いです。
  1. 用意したもの
  2. インストール方針
  3. ネットワーク構成
  4. インストール過程
    1. インストールメディアの用意
      ユーザーのホームディレクトリ直下の「4.3-RELEASE」 というディレクトリ内にCD-ROMの中身を用意する。 ダウンロードして来たISO-IMAGEをCD-Rに焼いて (もしくは雑誌付録等に付いているCDで)コピーしても構わないが、 ISO-IMAGEをダウンロードしているのなら、 それをmountすることもできる。 kernelに

      pseudo-device vn  2

      が設定(最後の数字は1以上ならOK)されていれば、

      # vnconfig /dev/vn0 ./4.3-install.iso
      # mount_cd9660 /dev/vn0 /mnt

      などとすれば、ISO-IMAGEを/mntにmountできるので、 /mntをホームディレクトリに4.3-RELEASEという名前で リンクを張れば、利用する事ができる。

      まーどんな方法でもいいです。実際のところ、 FreeBSDの公式サイトからFTPインストールでも問題は無いですし、 利用するマシンがCD-ROM使えるなら、FTPインストールなんて不要です。

    2. インストール環境の用意
      OSを入れる時に使うマシンを用意します。もちろんLibretto50のFDDがあれば Libretto50でインストールしても問題無いのですが、私は持ってないので、 別のマシンにHDDを接続して利用します。前回 は、デスクトップマシンを使ったのですが、 今回はちょうど手元にLAN内蔵のThinkPadがあったので、これを使います。
    3. OSのインストール
      FreeBSDのインストール方法に付いては省略します。 Distributionsは、最低でもKern-Developerでインストールしてください。 あとでkernelの再構築をする必要があります。

      HDDの領域確保を行う場合に一つ注意として、ハイバネーション領域を 開けておく必要がある事です。詳細はリカバリーに関する考察をみてください。 簡単に言うと、 HDDの最後にメモリサイズ+αの範囲だけ残してやる必要があります。 これ忘れると、強制ハイバネーションとかを起こした時に HDDのデータがぶっ飛んだりするので要注意です。

      ftpインストールですが、FreeBSD公式サイトからanonymous ftp(スペルあってるかな?)する場合は問題無いのですが、 ユーザーIPとパスワードを使ってftpする場合、 インストール設定の「Option」の「FTP username」の所を、 「ftp」から、利用してるユーザー名に変更(パスワードも入力します) すれば、そのIDでftp インストールしてくれます。 また、ftpサイトの選択の時には、

      URL      Specify some other ftp site by URL

      を選択し、ftp://10.0.0.5 などと指定すればOKです。

      ということで、どうにかして4.3-RELEASEをインストールしてください。 HDDをデスクトップに取り付ける事が可能なら、それが一番簡単かも・・・。 で、それが終ったらLibrettoにHDDを戻して、起動する事を確認してください。

    4. LANカードの設定

      LANカードの設定は、/etc/rc.confに記述するだけで終ります。 インストールした時には、

      pccard_ifconfig="inet 10.0.0.1 netmask 255.255.255.0" という記述があると思いますが、4.3-RELEASEからは、PAOと同様に、 ifconfig_ed1="DHCP"
      ifconfig_ed2="inet 10.0.0.1 netmask 255.255.255.0"
      removable_interfaces="ed1 ed2"

      といった記述が可能になります。PAOでは、pccard_etherであったものが、 removable_interfacesに変わっているので気を付けてください。 あと、使うネットワークカードがデフォルト状態(/etc/pccard.confが無い) で、正常に機能しない場合は、別途/etc/pccard.confを作成してください。 私の場合、SHARPのUE1E17 Aは/etc/default/pccard.confに存在せず、 また、MELCOのLPC3-TXは、一部修正しないと正常に機能してくれないため、 /etc/pccard.confを作成しています。参考までに私のrc.confと、pccard.confをあげておきます。 参考になるかどうか分かりませんが。

    5. kernelの再構築 NATを行うには、インストール直後のkernel(GENERIC)ではできず、 一部追加してkernelを再構築する必要があります。 以下の物は最低限必要となって来ます。

      options IPFIREWALL
      options IPDIVERT

      また、先程ISO-IMAGEをmountする時に利用したvnや、DHCPサーバなどを 運用する場合に必要となってくるbpfも追加するといいでしょう。

      pseudo-device vn  2 #Vnode driver (turns a file into a device)
      pseudo-device bpf  2 #Berkeley packet filter

      もちろん使わないデバイスなどはコメントアウトして、 kernelをダイエットさせておいたほうがよいのは言うまでもありません。

      あとはkernelを再構築、インストール(config KERNELNAME ; cd ../../compile/KERNELNAME ; make depend ; make ; make install)してください。 ただし、要注意なのは、このkernelをインストールして再起動すると、 NATの設定ができるまでは、 ネットワーク経由でこのマシンにアクセスできなくなります。 リブレットに直接ログインしましょう。

    6. NATの設定

      上記のkernelで再起動すると、起動時のメッセージ(もしくはdmesg)に、

      IP packet filtering initialized, divert enabled, rule-based forwarding disabled,
      default to deny, logging disabled

      という表示がでると思います。これでNATを動かす用意ができています。 NATを動かすために、私は以下のような設定をしています。

      [/etc/natd.sh (NAT起動用スクリプト)]
      #!/bin/sh
      /sbin/ipfw -f flush
      /sbin/ipfw add divert 8668 ip from any to any via ed1
      /sbin/ipfw add pass all from any to any
      /sbin/natd -f /etc/natd.conf
      echo -n ' natd'

      [/etc/natd.conf (NAT設定ファイル)]
      log yes
      deny_incoming no
      use_sockets no
      same_ports yes
      verbose no
      port 8668
      interface ed1 # GLOBAL側のNIC
      unregistered_only no

      あと、/etc/serviceに、以下のnatdのエントリがあることを確認します。

      natd 8668/divert # Network Address Translation

      将来FireWallにするには、 natd.shのipfwの行をもっと制御してやることになりますが、 そのへんはman ipfwで調べてください。

      このNATを起動するタイミングが少しややこしく、デスクトップであれば、 /usr/local/etc/rc.d/に入れておけば何も問題は無いのですが、 ノートPCの場合、/usr/local/etc/rc.dの中のスクリプトが実行されるより、 PCカードの認識が後になるため、不具合が生じます。 /etc/rc.confに、pccardd_flags="-z" などと書けば解決するらしいのですが、 なんかうまく行ってくれないので、pccard.confで、PCカードを認識した時に スクリプトを起動するようにしています。見て頂ければ分かると思いますが、 insert行がカードを指した時に実行されるので、これを増やして記述します。 いろいろためして、起動時にnatdがちゃんと起動するようにしてください。

      natdが起動するようになったら、 NATとして起動してるかどうか調べてください。LANが両方使えるか、 別のマシンをprivate側につないで、このマシンをデフォルトゲートウェイに 設定してちゃんと外に出られるか、などを調べて見ます。 うまく動いてるようであれば完成です。

あいかわらずレイアウトや文章はかなり読みにくいです。

質問、突っ込み、「このへんもうちょっと詳しく説明して」など、何かありましたら掲示板メールでお願いします。


Webmaster: oe3@wakaba.jp