このページは過去に掲載していたものをそのまま使用しています。
NATをするだけなのに、いろいろ設定をする羽目に なってしまいました。Free Solaris7日本語版が手に入ったので、この ページも書換えることにします。(2000/Nov/13:Solaris8も考慮する) BugTraqを見ていたら Sunscreen Lite というソフトウェアの存在を知りました。制限もあるようですがGUIなどで 設定ができる"ようです"。
Solarisを始めとして、NetBSDやIRIXなどの各種UNIX上でパケットの 操作をするためのプログラムとして、ip_filterが有ります。今回は 古いss20にSolaris8を入れてgatewayにした時に利用した ip_fil3.4.14.tar.gzに従って、NATを行なった様子を紹介します。
研究に必要なマシンは外部に置いてありますが、いまや骨董品的な価値がある SunOS4やふるーいlinux kernelで動いているMkLinux DR3などの、そのままでは DoS攻撃や古いネットワークサーバーのセキュリティホールを突かれそうな コンピュータはインターネットと間接的に接続された状態で置いておきたかったので NATをする事にしました。
[2000 Nov 14]その後、研究室を移動してss20とPentiumIII 500MHzが二台づつに PentiumII 300MHzとUltra 10が一台づつという環境になったので、実験のために 96MBのss20をgatewayに、432MBのFujitsu互換機ss20は各種内部サーバーとして セットアップすることにしました。ついでにこのドキュメントも更新しています。(^^
Solaris用のNATドキュメントは、PPPなどと組合せて使う事を想定されて いるようですが、基本的には同じなのでppp0などをle0などに変換して読みましょう。
まず必要なsoftwareをinstallしましょう。
上記の場所などからip_fil3.4.14.tar.gzをgetしましょう。 解凍・展開の後に"INSTALL.Sol2"を見ながらinstallまで終らせます。 ここに方法を書くと"INSTALL.Sol2"を読まないのではないかなと思いましたが あまり情報を隠すのは良くないようなので、簡単に書いておくことにします。
% gzip -d ip_fil3.4.14.tar.gz % tar xvf ip_fil3.4.14.tar.gz % cd ip_fil3.4.14 % more COMPILE.Solaris2 % more INSTALL.Sol2 % su % /bin/sh % PATH=/usr/ccs/bin:/usr/sbin:$PATH % export PATH % make solaris % cd SunOS5 % make package
今回はip_fil3.4.14.tar.gzで試しました。
rootで作業をする際に、最初に/usr/ccs/bin
や
/usr/sbin
にPATHを通していないとエラーがでるかもしれません。
注意しましょう。
NATに必要なファイルを作成しましょう。/etc/opt/ipf/ipnat.conf がまず必要です。その中身なのですが次のような構成の場合を仮定します。 163.143.xxx.yyyは私が大学で使っているマシンのIPです。 これは適当に読み換えてください
そうして192.168.100で始まるIPを持つマシンが複数つながっているとします。 この場合/etc/opt/ipf/ipnat.confは…、
map elxl0 192.168.100.0/24 -> 163.143.xxx.yyy/32 portmap tcp/udp 40000:60000 map elxl0 192.168.100.0/24 -> 163.143.xxx.yyy/32
インターネット側のelxl0において、192.168.100.側から来たパケットを 163.143.1の側に転送しなさい、ということです。
存在するけれど、NATには直接関係のないファイルについての説明です。
ip_fil3.4.14をインストールすると何も書かれていない
/etc/opt/ipf/ipf.conf
が準備されます。
これはNATとは関係のない設定をするためのものなので、ここでは触れません。
もちろん重要な使い道があって本来の目的である
IPレベルでのパケットの出入りの制限をするためのものです。
くれぐれもipnetの設定を書かないように注意してください。
この"ipf.conf"の書き方は次のURLを参照してください。NetBSDなど他の アーキテクチャ用なのでコピーするとトラブルになるかもしれないので、 あくまでも参考程度にしてください。けれどもNetBSD,OpenBSDなどの他のOS向けの ドキュメントは、これ以外の場面でもきっと役に立つはずです。
ここまで設定すると、内側(192.168.100.0/24)のマシンにはログインできる のですが、その内側のマシンから外側(163.143.xxx.zzzなど)のマシンには telnet, rloginなどができないのでした。
よくよく考えてみれば、IP fowardingの設定がされていないのが原因では ないかと考えて/etc/init.d/のスクリプトを適当に眺めてみます。 すると、/etc/init.d/inetinitの中に
/usr/sbin/ndd -set /dev/ip ip_forwarding $forwardingという記述をみつけました。
これを自動で有効にさせるためにはいくらか条件が必要になるようで、 DHCP関係の設定をしていたり、/etc/defaultrouterがなくて、/etc/gatewaysが あれば良いなどの条件があるようですが、/etc/init.d/inetinitの 一番最後に
/usr/sbin/ndd -set /dev/ip ip_forwarding 1を書いてしまいました。昔のドキュメントでは"2"を設定することで 二枚のNICが存在する場合のみ、これ(NAT)を行なうということだったのですが、 Solaris7ではうまくいかないようです。
またIP Forwardingの状態は次のようなコマンドで見る事ができました。
/usr/sbin/ndd -get /dev/ip ip_forwarding