Flet's ADSL TOP Online申込み導入記|BBルータ編Server編Report掲示板アンケート集計結果

Linuxの信者ならADSL回線を導入したとなれば、やらないといけないのがアレです。もうネット上には情報が溢れているWeb Serverの構築。
幸い低価格でServer構築に必要な固定IPアドレスと2ed DNSのサービスを提供してくれるinterlinkのサービスが兵庫県でも開始されます。ちょっくら遊んでみよう!

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を突っ込んでブートするだけ、後はインストーラの指示に従うだけです。簡単にインストールの手順を紹介します。
  1. インストールするパッケージはインターネット・サーバ用
  2. HDDのパーテーションは基本領域4つのみ
    • boot 64MB
    • swap 128MB
    • root 5GB
    • home 残り全部(約14GB)
  3. sound、X-windowsの設定は行なわない
  4. インストール完了後X-windowsのパッケージは削除する
  5. 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-uhci
ci
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=none
ci
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化して行きますが、ブロード・バンド・ルータとしての設定は完了しました。

Copyright 2002 Takata Dentsu Kogyo Co. All rights reserved.