今回は、今までお出かけ時に持っていっていたThinkPad535E(boss) に NIC 二枚刺しにして GW サーバとする事にしました。24h 運用を考えた場合、デスクトップ機では騒音、電気代問題が浮上するし、なんと言っても NotePC は UPS を積んでいる点が評価大です;-)。
#かと言って、CPU AMD486/MEM 16MB の リブレット 20 ではちっと役不足です。
GW サーバが決まったので、ケーブルモデムから boss に接続します。いつものように text base のネットワーク構成図です;-)。あ、下の図は IPv6 トンネルは載っていません。図がややこしくなるので・・;-P。
+-------+
-----| CNC |------------------- InterNet
+---+---+
|
|
+-----+-----+
|CablleModem|
+-----+-----+
|ed1:dhclient によるグローバル IPv4 アドレス
+----+----+
| FreeBSD | Hostname: boss
+----+----+
|ep0:IPv4:192.168.1.254/IPv6:3ffe:505:2019:1::1
|
+--+--+
| HUB |
+--+--+
| +---------+
+--+ FreeBSD | IPv4:192.168.1.7/IPv6:3ffe:505:2019:1:2e0:7dff:fe84:18b4
| +---------+
| +---------+
+--+ Win2000 | IPv4:192.168.1.2/IPv6:3ffe:505:2019:1:260:97ff:fe92:cebf
| +---------+
| +----------+
+--+ Solaris8 | IPv4:192.168.1.5/IPv6:3ffe:505:2019:1:260:8ff:feb0:7e58
+----------+
さ、GW サーバである boss に必要なのは、NIC 二枚と、NAT の機能です。その内、外側向けの NIC では dhclient を動かす必要があります。以下の様に/etc/rc.conf に指定しました。これで、ed1 側は DHCP のアドレス、ep0 には LAN のアドレスが付きました。
----------------
defaultrouter="NO"
gateway_enable="YES"
# --- PCCARD --- #
#pccard_ifconfig="inet 192.168.1.254 netmask 255.255.255.0"
#pccard_ifconfig="DHCP"
# --- IFCONFIG --- #
ifconfig_ep0="inet 192.168.1.254 netmask 255.255.255.0"
ifconfig_ed1="DHCP"
# --- #
----------------
DHCP クライアントとしては特に問題無く機能しますが、/etc/resolv.conf などは DHCP で塗りつぶされてしまいます。GW サーバに DNS が立ち上げた場合には、ドメインは自分のを利用したいと思うのでこの DHCP の機能は結構大きなお世話ですね。なので動的に変更されないようにしましょう。/etc/dhclient.conf と言うのを設定します。詳細に付いては、man dhclient.conf してもらうとして、私の場合は以下の様に設定しました。
----------------
supersede domain-name "running-dog.net";
supersede domain-name-servers 0.0.0.0;
----------------
これで、ドメイン名と nameserver は固定となり、/etc/resolv.conf はプロバイダのモノに上書きされなくなります。ちょっと説明をすると、上の行がドメイン名、下の行がネームサーバの指定です。ネームサーバに自分のマシンを示す場合は動的な IP アドレスでは無く、localhost、もしくは 127.0.0.1 が良いと思われるのですが、リゾルバ的にみると、0.0.0.0 と記述するのが正しいみたいです。
続いて NAT に付いてですが、 natd では無く、今までも利用して来た ipnat を利用します。ipnat の設定などは、以前に書いているのでそっちを参考にしてください。
----------------
map ed1 192.168.1.0/24 -> 0/32 portmap tcp/udp auto
map ed1 192.168.1.0/24 -> 0/32
----------------
こんな感じでルールを書くと NAT のパケットも外に飛んでいきます。後は DNS サーバを立てたり httpd を起動したりすれば、もうサーバです;-)。
ipnat は一部のポートを別のマシンへリダイレクトする機能も持っています。GW マシンのスペックが貧弱である場合、DMZ に配置したマシンにパワーの必要とする処理を飛ばす事も可能です。
----------------
map ed1 192.168.1.0/24 -> 0/32 portmap tcp/udp auto
map ed1 192.168.1.0/24 -> 0/32
#
rdr ed1 0.0.0.0/0 port 20 -> 192.168.1.7 port 20
rdr ed1 0.0.0.0/0 port 21 -> 192.168.1.7 port 21
rdr ed1 0.0.0.0/0 port 80 -> 192.168.1.7 port 80
----------------
ed1 に来た port 20/21/80 のパケットを 192.168.1.7 の port 20/21/80 にリダイレクトする。と、言う書き方も可能です。これを利用するとますます素晴らしいネットワークが構築されましたね。
これで、サクサクと利用出来る環境になりました;-)。