Server機の紹介
大型ファンを使ったCPU
|
今回、Web ServerにするのはADSL回線に切り替えるまで、ISDN回線で1年以上に渡りwww.t-den.co.jpとして活躍していたマシンです。現在、当社のホームページはレンタル・サーバに移行していますが、新たなドメインを取得してフリー・サーバ化する予定です。
マシン・スペック
- Chip Set Intel 815
- CPU Celeron 700MHz
- RAM 128MB
- HDD 20GB
冷房のない屋根裏部屋で過酷な運用に耐えるようにCPUには消費電力の少ないCeleron
700MHzを採用、ヒートシンクは1GHz用の大型シンクに換装してあります。
HDDには流体軸受け採用、発熱も少なく静かだと好評だった富士通製MPG3204AT
Eを使用しています。ちなみに、このHDDは使われているコントローラ・チップの製造不良で故障率が高いことでも有名で、富士通からリコール発表があったモデルです。何時壊れるか?耐久試験を兼ねたサーバ運用になります。(笑)
パソコン本体はA-Open製のベア・ボーン・キットより組み上げました。私の経験ではA-OpenはSuper
Microに並んで信頼できるブランドです。 |
|
|
|
|
|
|
OSのインストール
OSのインストールの前に、2枚目にネットワークカード(NIC)を拡張スロットに増設しました。製品はグリーンハウス製のGH-EL100MX、RealTek
RTL8139を使った安物カードですが、ホームサーバ程度ではこれで十分信頼できます。
マザーボードに搭載されているのはIntelのPRO/100系チップで、こちらをLAN側(eth0)に、8139をADSLモデム(Internet)側(eth1)に設定して使用しています。
OSは使い慣れたTurbo Linux Server 7のFTP版をインストールしました。インストールはCD-ROMを突っ込んでブートするだけ、後はインストーラの指示に従うだけです。簡単にインストールの手順を紹介します。
- インストールするパッケージはインターネット・サーバ用
- HDDのパーテーションは基本領域4つのみ
- boot 64MB
- swap 128MB
- root 5GB
- home 残り全部(約14GB)
- sound、X-windowsの設定は行なわない
- インストール完了後X-windowsのパッケージは削除する
- turbopkgを使用してオンラインで最新のパッケージを組み込む
Linuxのインストールは慣れるとWindowsのインストールよりも簡単で、短時間で完了します。その後は設定地獄が待ち受けていますが... |
|
|
|
|
|
|
構築するシステム
ADSL導入直後の当社のシステムは、専用のブロード・バンド・ルータにADSLモデムを接続して、社内ネットワークからインターネットへ接続していました。
今回構築するシステムでは下図のように、ブローバンド・ルータをLinux
Box(Server)に置き換えます。
Linux Boxを使ったシステム
|
Linux BoxはPPPoEを使ったプロバイダへの接続や社内LANからインターネットへのゲートウェイ、インターネット上のWeb
、Mail、DNS等のサービスを提供するServerになります。
今回、私も初めてインターネットへのゲートウェイになるLinux
Boxを作ることにしましたが、外部に剥き出しとなるシステムを構築する上でセキュリティの問題は避けて通ることができません。
ISDNのダイアル・アップ・ルータを使ったServerよりも多くのネット接続に関する知識の習得が必要になりそうです。 |
|
|
|
|
|
|
Networkの初期設定
Turbo Linux Server 7をインストールして、turbopkgで最新のパッケージを組み込んだ後に、Serverの初期設定を行ないます。第一段階ではLinux
Boxをブロード・バンド・ルータとして機能させます。不必要なネットワークサービスは全て停止させます。
必要なネットワーク・サービス
- SSH(設定は全てクライアントから行ないます)
- bind(クライアント用にDNSキャッシュ・サーバとして使用)
- http(LAN内のWeb Serverとして使用)
Webサービスの更新用のFTPはxinetdを使用してproftpを起動させます。
Network設定
インストール直後はeth0にRTL8139が、eth1に内蔵NICのPRO/100が割り当てられていましたが、LAN側をeth0
(内蔵NIC)にしたいのでmoduls.confを以下のように書き換えました。
alias agpgart
alias eth0 8139too
alias eth1 e100
alias parport_lowlevel
parport_pc
alias usb-controller usb-uhcici |
→ |
alias agpgart
alias eth0 e100
alias eth1 8139too
alias parport_lowlevel
parport_pc
alias usb-controller
usb-uhci |
各LAN Portの設定は以下の通りです。
ADSLモデム(WAN側)を接続するeth1はPPPoEで使用する為にTCP/IP関係の設定は不要、起動時にはif
downの状態に設定しておきます。
DEVICE=eth0
IPADDR=192.168.0.254
NETMASK=255.255.255.0
NETWORK=192.168.0.0
BROADCAST=192.168.0.255
ONBOOT=yes
BOOTPROTO=noneci |
|
DEVICE=eth1
ONBOOT=no |
ifcfg-eth0 |
|
ifcfg-eth1 |
その他のネットワーク関係の設定は以下の通り。
gatewayはPPPoE時にセットされますので設定しません。ルーティングはON(FORWARD_IPV4=yes)に設定します。
NETWORKING=yes
PROFILENAME="amanjako"
HOSTNAME=web
DOMAINNAME=amanjako.net
FORWARD_IPV4=yes
IPX=no
TIMESERVERATBOOT="no"
TIMESERVERHOST="210.173.160.27"
TIMESERVERSYNC="daily"
TIMESERVERTYPE="ntp" |
|
domain amanjako.net
search amanjako.net
nameserver 127.0.0.1 |
network |
|
resolv.conf |
DNSの設定
ブロード・バンド・ルータとしてLinux Boxを使用する場合、ドメイン内の情報を外部に公開する必要がありませんので、bindはインストール時の設定(キャッシュ・サーバ)のままでもOKです。
以上でPPPoEでインターネットに接続ための基本的なネットワーク設定は終了です。
|
|
|
|
|
|
|
PPPoEの設定
LinuxでPPPoEを使用するためには、pppとrp-ppppoeのパッケージが必要です。Turbo
Linux Server 7では2つのパッケージは標準でインストールされています。
adsl-setup
PPPoEを設定するためには、adslコマンドを使用します。adsl-setupで対話的に誰にでも簡単に設定できると思います。設定方法はこちらをご覧下さい。
私の場合は以下のように設定しました。
- user name...********@sannet.ne,jp
- PPPoEに使うインターフェイス...eth1
- 自動切断時間...no
- DNS information...[return] resolv.confの設定を使う
- Password...********
- re-enter Password...********
- firewall...0(設定しない)
これで接続の準備は完了です。接続前のインターフェイスの状態は以下の通りです。
[root@web /root]# ifconfig
eth0 Link encap:Ethernet
HWaddr 00:01:80:0A:03:05
inet addr:192.168.0.254
Bcast:192.168.0.255
Mask:255.255.255.0
UP BROADCAST RUNNING
MULTICAST MTU:1500 Metric:1
RX packets:190729
errors:0 dropped:0 overruns:0
frame:0
TX packets:218429
errors:0 dropped:0 overruns:0
carrier:0
collisions:0 txqueuelen:100
RX bytes:25386088
(24.2 Mb) TX bytes:194179031
(185.1 Mb)
Interrupt:11 Base
address:0xc400 Memory:e5001000-e5001038
lo Link encap:Local
Loopback
inet addr:127.0.0.1
Mask:255.0.0.0
UP LOOPBACK RUNNING
MTU:16436 Metric:1
RX packets:28 errors:0
dropped:0 overruns:0
frame:0
TX packets:28 errors:0
dropped:0 overruns:0
carrier:0
collisions:0 txqueuelen:0
RX bytes:2780 (2.7
Kb) TX bytes:2780 (2.7
Kb) |
接続開始
adsl-startコマンドでPPPoEが開始されます。以下がそのログです。
[root@web /root]#
adsl-start
. Connected!
[root@web /root]#
ifconfig
eth0 Link encap:Ethernet
HWaddr 00:01:80:0A:03:05
inet addr:192.168.0.254
Bcast:192.168.0.255
Mask:255.255.255.0
UP BROADCAST RUNNING
MULTICAST MTU:1500 Metric:1
RX packets:190795
errors:0 dropped:0 overruns:0
frame:0
TX packets:218464
errors:0 dropped:0 overruns:0
carrier:0
collisions:0 txqueuelen:100
RX bytes:25389205
(24.2 Mb) TX bytes:194182037
(185.1 Mb)
Interrupt:11 Base
address:0xc400 Memory:e5001000-e5001038
eth1 Link encap:Ethernet
HWaddr 00:50:FC:69:D9:02
UP BROADCAST RUNNING
MULTICAST MTU:1500 Metric:1
RX packets:222092
errors:0 dropped:0 overruns:0
frame:0
TX packets:190550
errors:0 dropped:0 overruns:0
carrier:0
collisions:3947 txqueuelen:100
RX bytes:192219829
(183.3 Mb) TX bytes:28071694
(26.7 Mb)
Interrupt:10 Base
address:0xa000
lo Link encap:Local
Loopback
inet addr:127.0.0.1
Mask:255.0.0.0
UP LOOPBACK RUNNING
MTU:16436 Metric:1
RX packets:28 errors:0
dropped:0 overruns:0
frame:0
TX packets:28 errors:0
dropped:0 overruns:0
carrier:0
collisions:0 txqueuelen:0
RX bytes:2780 (2.7
Kb) TX bytes:2780 (2.7
Kb)
ppp0 Link encap:Point-to-Point
Protocol
inet addr:219.106.103.142
P-t-P:202.216.4.36
Mask:255.255.255.255
UP POINTOPOINT RUNNING
NOARP MULTICAST MTU:1454
Metric:1
RX packets:3 errors:0
dropped:0 overruns:0
frame:0
TX packets:3 errors:0
dropped:0 overruns:0
carrier:0
collisions:0 txqueuelen:3
RX bytes:30 (30.0
b) TX bytes:30 (30.0 b) |
routeコマンドでgatewayをチェックします。
[root@web /root]# route
Kernel IP routing table |
Destination |
Gateway |
Genmask |
Flags |
Metric |
Ref |
Use |
Iface |
202.216.4.36 |
* |
255.255.255.255 |
UH |
0 |
0 |
0 |
ppp0 |
192.168.0.0 |
* |
255.255.255.0 |
U |
0 |
0 |
0 |
eth0 |
loopback |
* |
255.0.0.0 |
U |
0 |
0 |
0 |
lo |
default |
202.216.4.36 |
0.0.0.0 |
UG |
0 |
0 |
0 |
ppp0 |
|
ppp0に219.106.103.142のIPアドレスが割り当てられおり、gatewayが202.216.4.36に設定されています。
|
|
|
|
|
|
|
iptablesの設定
今までの設定で、Linux Boxとインタネット間の通信は可能になります。後はローカル(192.168.0.0/24)のマシンとインターネット間の通信を可能にすれば、Linux
Boxのブロード・バンド・ルータ化は終了。
現在のLinux Boxの設定でも、ルーティングは可能ですから、Lan内のマシンからでもインターネットへの接続が可能なように思えます。ところがローカルで使われているIPアドレスはプライベート・アドレスと呼ばれるもので、ローカル・マシンから出たパケットはインターネット上では使用できません。
これを回避して、ローカルのマシンからインターネットへの接続を可能とする仕組みがIP
NATやIPマスカレードと呼ばれるアドレス変換技術です。これは、ローカル・マシンから出たパケットの送信元アドレスを、Linux
Boxに割り当てられたグローバル・アドレスに変換してインターネットとの通信を確保するものです。
Linuxでは以下のIPマスカレードとパケットの出入りを制御するフィルタ(fire
wall)機能が用意されています。
- ipchains
- Linux 2.2系のカーネルで使われているパケット・フィルタです。Turbo
Linux Serve 7のadsl-setupでfire-wallの選択をMASQUERADEにするとipchainsのスクリプトが選択されます。
こいつをこのまま利用できると設定が楽になるのですが、私の環境では、ipchainsは動作しませんでした。
- iptables
- Linux2.4系列のカーネルで使われるパケット・フィルタです。ipchainsは過去に設定経験があったのですが、iptablesは今回が初の設定です。Linuxでは、これから主流になると思われます。
iptablesの設定に関する資料をインターネットで検索してみましたが、引っ掛かってきたページはどこも難解で、私の頭脳ではなかなか理解できませんでした。取りあえず以下のような設定をでっち上げました。iptablesの設定は、おいおい勉強して行きたいと思っています。
#!/bin/sh
#firewall setup shell
script
# initialize
iptables -F
iptables -t nat -F
iptables -P FORWARD
DROP
iptables -P INPUT
DROP
iptables -P OUTPUT
ACCEPT
#IP Masquerade
iptables -t nat -A
POSTROUTING -o ppp0 -j
MASQUERADE
# filter
iptables -A INPUT
-i lo -j ACCEPT
iptables -A INPUT
-m state --state
ESTABLISHED,RELATED
-j ACCEPT
iptables -A INPUT
-p tcp -i eth0 --dport
domain -j ACCEPT
iptables -A INPUT
-p udp -i eth0 --dport
domain -j ACCEPT
iptables -A INPUT -p tcp -i eth0 --dport
ssh -j ACCEPT
# REJECT(INPUT)
iptables -A INPUT
-p tcp -i ppp0 -j REJECT
--reject-with tcp-reset
iptables -A INPUT
-p udp -i ppp0 -j REJECT
--reject-with icmp-port-unreachable
# established connection
iptables -A FORWARD
-m state --state ESTABLISHED,RELATED
-j ACCEPT
# forward from local-network
iptables -A FORWARD
-i eth0 -j ACCEPT
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
insmod ip_nat_ftp
insmod ip_conntrack_ftp
|
このスクリプトを/etc/ppp/firewall-masqの内容と入れ替えて、adsl-startコマンドより呼び出しています。これから固定IPアドレス取得してWeb
Server化して行きますが、ブロード・バンド・ルータとしての設定は完了しました。 |
|
|
|
|
|
|
|