1258

OpenBSD 2.7 と NotePC で NAT 箱を作る

2000 Aug. 22
うえだうえお

はじめに

つい先日まで NetBSD に手を染めかけていたのに、今は OpenBSD をさわり初めています。(^^;) K*BUG のサーバが OpenBSD なので、これに関する紹介記事を書こうと思って手元にインストールしてみると、Internet サーバとして必要なセキュリティツールが最初から入っていてとても楽ちんそうだったので、すっかり浮気しています。(笑)

で、本来であればまずはインストール記事を書くべきなんでしょうけれど、NetBSD がインストール出来ればきっと OpenBSD もインストールできるだろうということで割愛します。(おいおい…)

実は、K*BUG の研究会を我が家で開くことになり、その際に大きな声で「うちはIP reachable やから…」などと吹聴してしまったのでした。ところがよく考えて見ると、IP reachable はその通りなんですが、NAT を使わずに Global Address をそのまま使用しているため、ほとんど IP に空きが無いのを忘れていました。みんなが NotePC を持ってきたら、割り振る IP address がありません。(^^;)

こりゃ NAT 箱を作るしか無いなと思ったのですが、実はさらに、普段こういう臨時用途に使っている GW2K を、今回の研究会では OpenBSD 2.7 インストール体験に使う予定をしています。ということは残る手段は…Let's Note に NIC を2枚さして gateway にするしか無い、という結論になり、図らずも上記の様なおしゃれな(?)タイトルになりました。(笑)

注意事項(重要)

ここには、僕(うえだうえお)が試行錯誤して学び取った事を記してあるにすぎません。すべての記述が正しい事を保証するものではありません。またここに書かれてあるとおりの事をあなたが行った結果、何らかの損害が生じたとしても、僕(うえだうえお)は一切の責任を負いません。すべては自らの責任の下に行われなければならない事をご理解ください。

構成図

大体の所はこんな感じです。

                         OS : OpenBSD 2.7
                    +--------------------------+     
  +---------+       |------* Let's Note *------|     +------------+
  | local側 |-------| NIC2 |  (AL-N2)   | NIC1 |-----| Internet側 |
  |   HUB   |       |------*            *------|     |    HUB     |
  +---------+       +--------------------------*     +------------+
                 192.168.0.1             210.164.xxx.xxx


NIC の認識

手持ちの NIC は以下の2枚でした。

カード種別Interface 名
NIC1 3Com 3c574-TX×
NIC2 Melco LPC2-Tne3:

両方とも、Win95 と NetBSD では認識していました。しかし、どうやら OpenBSD では 3c574(16bits の 10/100 対応カード。)は未対応だった様です。以前に入れていた NetBSD 1.4.1 では認識していましたので、そちらからドライバを持ってくるということも考えましたが、あまり時間が無いので NIC を変えることにしました。(良いんです…軟弱者と呼んでください。)

近所のS電社で 2.5k 円ほどで買ってきた ELECOM の LANEED LD-CDS (OK! TurboLinux とか大書してあるのがちょっと悔しい(;;))の ne2k 互換 10M 専用カードを指すと、無事認識してくれました。PCMCIA にせよ PCI にせよ、新たに買うなら ne2k 互換が無難ではあるようです。(← やっぱり軟弱物(^^;))
結局、以下の様になりました。

カード種別Interface 名
NIC1ELECOM LANEED
LD-CDS
(ne2000 互換)
ne3:
NIC2Melco LPC2-T
(ne2000 互換)
ne4:

インストール時に Network の設定もしておけば、ne3: の方はちゃんと IP も割り振られているはずです。念のために、Network 設定に必要なファイルを上げておきます。

file名働き内容
/etc/myname自host名の設定host名
/etc/defaultdomainドメイン名の設定domain名
/etc/mygatedefault gateway の設定IP address
/etc/hostname.*interface の設定inet <IP addr> <netmask> [options]

ここで重要なのは hostname.* です。* の部分には interface 名が入ります。今回の様に ne2k 互換カードを2枚指した場合は、hostname.ne3, hostname.ne4 となります。それぞれに IP address と Netmask, 必要であれば option を書いてやってリブートすると、両側のネットワークが使用可能となります。

この辺は、/etc/netstart を一読される事をおすすめします。

NAT の設定

やっと本題の NAT の設定です。とはいえ、これは非常に簡単です。OpenBSD にはデフォルトで IP Filter が組み込まれており、GENERIC カーネルで使用可能になっています。ですから、以下のファイルを設定して再起動するだけですぐに NAT が使える様になります。

/etc/rc.conf(一部)
ipfilter=YES
ipnat=YES               # for "YES" ipfilter must also be "YES"

/etc/sysctl.conf(一部)
net.inet.ip.forwarding=1        # 1=Permit forwarding (routing) of packets

/etc/ipf.rules(全体)
pass in from any to any
pass out from any to any

/etc/ipnat.rules(全体)
map ne3 192.168.0.0/24 -> 210.164.xxx.xxx/32 portmap tcp/udb 10000:20000
map ne3 192.168.0.0/24 -> 210.164.xxx.xxx/32

IP Filter自体は、本当はもっと高性能できめの細かい設定が出来るツールです。しかし、この設定(つぅつぅや…さぶ(^^;))でもクライアント側で外側 Network にある DNS や POP サーバも指定できますから、臨時の NAT 箱を作るにはこれで十分でしょう。

各ファイルでの設定内容の意味などを詳しく知りたい場合は、参考資料[1]を参照してください。

また、kernel を再構築していて IP Filter ready でないひとは、/sys/conf にある config ファイル(アーキテクチャ共通分)に
option          IPFILTER        # IP packet filter for security
option          IPFILTER_LOG    # use /dev/ipl to log IPF

を追加して kernel の再構築をしてください。(って、kernel を再構築するような人には釈迦に説法ですね。(^^))

(おわり)


参考資料

[1] OpenBSD Frequently Asked Questionsより(英語)

改訂履歴

  • 2000 Aug.22
    draft version 公開
  • 2000 Aug.23
    OS バージョンと NIC 型番を明記

Copyright(C)2000, うえだうえお, All Rights Reserved.