第1部 構築編

本番運用に向けて

FTTH 開設工事、サーバがルータと化した日

さてさて、7/31 の午前 2 時、時間だけなら開設工事の日を迎えていた。
実は連日 studio the Elysium のコミックマーケット準備に追われて、夜は余り寝ていない。
しかし翌朝がとうとう待ちに待った FTTH 開設の日だとなると、結局行き当たりばったりになると言うのにもかかわらず情報が欲しくなる。
今まで色々と ADSL や FTTH で Linux サーバを公開したりルータを設定したりするページを見て回って、PPPoE を実現する RP-PPPoE という有難いオープンソースのソフトウェアがあることも確認した。

RP-PPPoE
http://www.roaringpenguin.com/pppoe/

2003/07/31(Thu) 現在の最新版は 3.5-1 (rp-pppoe-3.5-1.i386.rpm) だが、RedHat の FTP で RedHat Linux 9 のディレクトリを除いてみると、rp-pppoe-3.5-2.i386.rpm があるのでちょっと不思議。
一応両方ともダウンロードして、翌朝に寝坊すると笑えないので寝る

翌朝、9:00 に携帯が呼び出し音を奏でる。
NTT 工事の業者からで、9:20 くらいに到着するとのコト、快くお願いして到着を待つ。

先に到着したのは、工事業者ではなく、NTT の営業だった(汗)
屋内工事の様子を営業さんが見学に来たらしい、工事の様子を見ても良いかと問い合わせられる。
きっと新人研修とかやっているのだろう、現場を知らないで窓口業務やら営業やらが出来るわけはないのは何処の世界でも当然である。

んで、少しすると業者が到着、工事を開始。
去年建て替えたばかりの我が家は、電話線の引き込み口から瑞輝の部屋まで壁の中を配管してある
現在は ISDN 回線が“引き込み口”→“TA/DSU”→“引き込み口”→“電話機”という風に往復しているので、ここに光ファイバの細い線を通して貰う。
これで家の中の景観は全く損ねず、無理なカーブなども生じさせずに光ファイバが敷設できたわけだ。

光ファイバケーブルを鋭角に曲げたりすると、レーザの損失が大きくなって通信速度が落ちる。
また、光ファイバケーブルはそもそもデリケートなシロモノなので、下手にグニグニ遊ぶと折れてしまうのだ。

無事工事も終わり、工事業者では実効 61.5Mbps の通信速度と取得された。
ニューファミリータイプの FTTH は、局までの間にいくつかの家屋からの回線が合流してしまうので、理論値まで発揮出来ないことがほとんどだ。
これがベーシックなどの、局まで一本で行く回線だと違ってくるのだろうか?。

工事業者が帰って、ネットワークを物理的に接続し、自室のレイアウトを「うんしょうんしょ」と元に戻す、これがまた重労働
どこからどう見ても SOHO やっているようにしか見えない瑞輝の部屋はとにかく物が多い………

さて、ではサーバの設定を開始しよう。
まず今まで起動時と同時に有効になっていた WAN 側のネットワーク eth0 を自動起動しないように設定する。
/etc/sysconfig/network-scripts/ifcfg-eth0 を vi で開いて、以下のように設定して再起動する。

DEVICE=eth0
ONBOOT=no

すると LAN 側の eth1 だけが自動起動する状態になる。
次に PPP を実現するドライバと、PPPoE を実現するドライバをインストールしよう。

PPP は Point to Point Protocol の略で、モデムや ISDN などのダイアルアップ環境で広く利用されている、二点間を繋ぐプロトコルだ。
PPPoE はそれを Ethernet 上で使えるようにしたプロトコルで、PPP over Ethernet の略である。
ADSL や FTTH で広く使われている。

昨晩ダウンロードしてきた rp-pppoe-3.5-1.i386.rpm と、ついでに RedHat から貰ってきた ppp-2.4.1-10.i386.rpm を FTP で転送してインストールする

# rpm -ihv ppp-2.4.1-10.i386.rpm

怒られた

依存性が欠如しているとのこと、GLIBBC_2.3 が入っていないとダメ、ちゅ~ことは素直に 7.3 に入っている奴を使おう
RedHat Linux 7.3 の 2 枚目の CD-ROM をマウントしてインストールする。

# mount /mnt/cdrom/
# rpm -ihv /mnt/cdrom/RedHat/RPMS/ppp-2.4.1-3.i386.rpm

今度はうまくいった
取り敢えず CD-ROM をアンマウントし、取り出しておく。

# umount /mnt/cdrom/
# eject /mnt/cdrom/

次ぎに RP-PPPoE をインストールする。

# rpm -ihv rp-pppoe-3.5-1.i386.rpm

今度は一発で入ったね。
では続いて RP-PPPoE をセットアップする。
RP-PPPoE のセットアップには /usr/sbin/ にインストールされた adsl-setup というコマンドを使う。
adsl-setup を起動すると、以下のようなメッセージが表示される。

Welcome to the Roaring Penguin ADSL client setup. First, I will run
some checks on your system to make sure the PPPoE client is installed
properly...

Looks good! Now, please enter some information:

USER NAME

>>> Enter your PPPoE user name (default bxxxnxnx@sympatico.ca):

ここで、ISP から貰ったユーザ名を入力する。
WAKWAK の場合、ログイン ID として提供されているはずだ。
次ぎに、

INTERFACE

>>> Enter the Ethernet interface connected to the ADSL modem
For Solaris, this is likely to be something like /dev/hme0.
For Linux, it will be ethn, where 'n' is a number.
(default eth1):

PPPoE で利用するインターフェイスを指定する。
ここでは eth0 が WAN 側だ。
次ぎに、

Do you want the link to come up on demand, or stay up continuously?
If you want it to come up on demand, enter the idle time in seconds
after which the link should be dropped. If you want the link to
stay up permanently, enter 'no' (two letters, lower-case.)
NOTE: Demand-activated links do not interact well with dynamic IP
addresses. You may have some problems with demand-activated links.
>>> Enter the demand value (default no):

これは、一定時間無通信状態になったら接続を切るか、という問い合わせだ。
定額制でやっているし、そもそも外部からサーバを覗きに来るパターンでは勝手に切れられても困る
迷わず no を入力する。

DNS

Please enter the IP address of your ISP's primary DNS server.
If your ISP claims that 'the server will provide DNS addresses',
enter 'server' (all lower-case) here.
If you just press enter, I will assume you know what you are
doing and not modify your DNS setup.
>>> Enter the DNS information here:

次は DNS だ。
WAKWAK の場合 DNS は自動取得ではなく IP アドレスが教えられるのでこれを入力するべきだろうが、自前で DNS を実装するので空のまま {Enter} だな。
ちなみに自動取得の場合には小文字で server と入力する。

PASSWORD

>>> Please enter your PPPoE password:
>>> Please re-enter your PPPoE password:

これは PPPoE 接続のパスワードだ。
間違えないように入力しよう。

FIREWALLING

Please choose the firewall rules to use. Note that these rules are
very basic. You are strongly encouraged to use a more sophisticated
firewall setup; however, these will provide basic security. If you
are running any servers on your machine, you must choose 'NONE' and
set up firewalling yourself. Otherwise, the firewall rules will deny
access to all standard servers like Web, e-mail, ftp, etc. If you
are using SSH, the rules will block outgoing SSH connections which
allocate a privileged source port.

The firewall choices are:
0 - NONE: This script will not set any firewall rules. You are responsible
          for ensuring the security of your machine. You are STRONGLY
          recommended to use some kind of firewall rules.
1 - STANDALONE: Appropriate for a basic stand-alone web-surfing workstation
2 - MASQUERADE: Appropriate for a machine acting as an Internet gateway
                for a LAN
>>> Choose a type of firewall (0-2):

ファイアウォールの設定だ。
0何もしない、即ち全てを自分で設定する必要がある。
1Linux をクライアントとして利用する場合だ。
2Linux をルータとして利用する場合だ。
今回 Linux サーバは家庭内ルータも行うので、2 を選択する。

最後に入力の確認があるので、よければ y だ。
ここまで終わったら adsl-start コマンドで接続を開始、adsl-stop で切断、adsl-status で接続状態の確認が出来る。
取り敢えず adsl-start コマンドで接続してみる。

# adsl-start

しばらくすると Connected! と気持ちいいメッセージが表示された。

さて、取り敢えず外部に ping を放ってみて動作確認をしてみよう………

全く応答無し(爆)

WAKWAK の DNS にすら ping が届かない、一体どうしたわけだ?
色々と悩んだあげく、デフォルトのゲートウェイを疑うことにした。

# route -n

とコマンドを打って、ルートの設定を覗いてみると、デフォルトはサーバのローカルで、LAN 向けの eth1 になっている。
これを、

# route add default dev ppp0

としてやると、表向きの ping が走るようになった。
DNS を利用した ping も以下のように放ってみる。

# ping nx.sakura.ne.jp

ちなみにこれは現在利用しているレンタルサーバのアドレスだ。

正常に届いた。
しかし adst-start コマンドで PPPoE を起動した時点でデフォルトのゲートウェイを設定しているはずなのにおかしい………と思いつつ /etc/sysconfig/network-scripts/ifcfg-eth1 を開いてみると、ゲートウェイが自分自身に設定されている………これけ?

DEVICE=eth1
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.1.1
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

ゲートウェイを設定している最後の一行を消して、ネットワークを再起動。

# /sbin/service network restart

続いて、

# adsl-start

んで、

# route -n

として確認してみると、デフォルトのゲートウェイが正常に設定されていた。
一件落着………

続いて、メインデスクトップの Windows2000 のコマンドプロンプトより、nslookup で nx.sakura.ne.jp の正引きが出来るかどうかを確認する。
正常に出来るようなので、続いて DNS を利用した ping を放ってみた………

Pinging nx.sakura.ne.jp [61.211.232.22] with 32 bytes of data:

Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 61.211.232.22:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),
Approximate round trip times in milli-seconds:
    Minimum = 0ms, Maximum = 0ms, Average = 0ms

だぁ~
ルーティングが働いてねぇ~(涙)

取り敢えず以下のようにしてルーティングを確認する。
今回利用した RP-PPPoE でマスカレードを設定すると、ポリシーは ipchains で設定されているハズなので、以下のようになる。

# ipchains -L

と、

ipchains: Incompatible with this kernel

なにぃ~!?!?!?
ipchains コマンドが正常に働いてないぃ~!?!?!?

カーネルをボコボコとアップグレードしていたのが仇になったらしい。
もともと iptables の方でポリシーを設定するつもりではいたのだが、これにはお兄さんビックリだ。
と言うわけで、これからヘコヘコと iptables のポリシーを設定していく………
これを全てコンソールでやるのは阿呆らしいので、シェルスクリプトを書いて実行してしまうことにしよう。

ここで作成したシェルスクリプト setiptables を実行して、ポリシーが正常に働いているかをチェックする。
色々と勘違いスペルミスなどあったが、何度か試して成功した。

んで、再起動時にもセキュリティポリシーが再設定されるように、以下のようにして保存し、起動時に設定されるようにする。

# /etc/rc.d/init.d/iptables save

普段使うランレベルで iptables が自動起動しないようになっているのなら、以下のようにして自動起動を設定する。

# chkconfig iptables on

では、試しに再起動してみよう。
再起動したら、

# iptables -L

としてポリシーを確認、ちゃんと設定されている。
次ぎに、サーバ起動時に自動的に FTTH 接続されるようにする。
RP-PPPoE をインストールした際に、/etc/rc.d/init.d/adsl というシェルスクリプトがインストールされている。
これが起動スクリプトになるので、これをインストールする。

# chkconfig --add adsl

すると、ランレベル3から5で自動的に起動するように設定される。

# chkconfig --list adsl

で確認しよう。
これで次回起動時より自動的に FTTH 接続されるはずだ。
さらに、RP-PPPoE が設定するポリシーではカーネルと ipchains コマンドの非互換のために正常に動作しないので、/etc/ppp/pppoe.conf の以下の部分を書き換える。

FIREWALL=MASQUERADE

を、

FIREWALL=NONE

だ。
もちろん adsl-setup コマンドで再生成してもよい。
では再び再起動だ。
再起動したら、

# adsl-status

で接続を確認。
ちゃんと接続されているのを確認出来た。

では、ブラウザから外を覗いてみよう………

接続出来んっ!!

おかしい、iptables でマスカレードも設定したし、PPPoE も接続出来ている、何が悪い??
adsl-stop と adsl-start を叩いても動作しない、iptables を設定し直してもだめ………

おかしい?

そこで、ちと気になったので RP-PPPoE がマスカレードした時に実行しているはずのシェルスクリプト /etc/ppp/firewall-masq を覗いてみる。
すると最後の最後で気になる一行を確認

echo 1 > /proc/sys/net/ipv4/ip_forward

こりは………??

ためしに先ほど作成した setiptables シェルスクリプトに上の行を追加して実行してみると、見事に接続出来るっ!!
というわけで、問題の一行を追加した setiptables で /etc/ppp/firewall-masq を上書きして、/etc/ppp/pppoe.conf のマスカレードを復活させる。
iptables はポリシーをクリアしてしまう。
で再起動実験………

繋がったぁ~………(涙)

さて、次は固定グローバル IP を設定したいところだが、WAKWAK の場合、固定グローバル IP をくれるアドレスプラスは日割り計算の課金はしない
ちなみに今日は 7/31 で、流石に馬鹿馬鹿しいし。
というわけで、アドレスプラスは後日と言うことに決定。

しばらくサーバはルータとしての役目を仰せつかったわけである。

いやぁ~しかし、速いなぁ~
Innocent Arcadia Millennium が一瞬で送られてくるし、結構時間かかっていた WWWC の更新チェックはコーヒー舐めている暇すらない。
FTP はずんどこずんどこファイル落としてくるし………すげぇ~………(涙)
むしろ接続先のサーバの応答時間がより際立ってしまっているよねぇ~

Valid HTML 4.01 Strict Valid CSS!