Vine Linux Configuration Memo

Last Modified 2002.04.14
トップページ
ここにある文書は、ワタクシ、シロートのutchy が試行錯誤で設定した際のメモ書きデス。
元は2001年当初に書いたもので情報としては多少古くなったことと、冗長気味だったことから多少書き直しました。以前のページはこちらになります。(〜02/01/25)
ここにある ADSL接続手順は、現在の主流である、Acca系・e-Access系・Y!BB 系では通用しません。PPPoE 接続を行うフレッツADSL系、めたりっく通信系の方々には参考になるかと思います。
(ただし、Linuxをルータ・FireWallの代わりにするのであれば、Y!BB でも参考になるかと)
ちなみに、ワタシは別に Linux が特別好きなわけではなく、必要になったので格安ハードを購入し、目的に対する手段として Linux を使っているだけです。従って、いまだに詳しくないです(笑) ルータ兼サーバとして放置しているので、Linux は普段から使っているわけではないのでご注意を(何をだ?)
Link はご自由にどうぞん。

【おしながき】
[はじめに] [Linux Install] [PPPoE] [IP Masquerade] [Dynamic DNS] [New!Apache]
[Look!Linux BBS]

はじめに

2001年1月に東京めたりっく通信が開通することになり、せっかくの常時接続なのでサーバとして公開したい、という要求がありました。
当時ウチにはネットワークにつながる端末が Windows 2台/WindowsCE 1台/Macintosh 1台 あったのですが、東京めたりっく通信の「
Famlyサービス」というルータ接続環境では、LAN内のPCを外部に公開する手段が提供されていませんでした。(※現在はサポート外ですが、設定変更ツールが配布されています)
当時は「Singleサービス」と呼ばれる、ADSLモデム直結型の一台のみ接続可能なプランがあり(現在のフレッツADSLと同じ)、結局このプランで契約をしたのです。
もちろん、IPアドレスは非固定で1つだけ。これを何とか複数台同時接続した上で、Web/Mailサーバを公開したい、という事がきっかけで、Linux を導入したのです。
(もちろん、Windows を Internet に直接公開するという暴挙に抵抗があったということもあるが)
個人的には、勝手にポートをフィルタされたり、外部にサービスを公開する手段がなかったり、Private IPアドレスしか提供しないISPは、本当の「Internet」Service Provider ではないと思ってます...(ぼそ)
▲TOPへ


Linuxのインストール

Linux を導入するにあたり、中古のPCをオークションで購入しました。
DELL Optiplex GXL 5133なるマシンです。4,100円でした(笑)
ハッキリ言って、Apache で数人規模の Webサーバを構築するぐらいなら、この程度で十分すぎです。むしろ、ISP から提供される数百人で共用されるサーバよりもずっと高速に動作します。

スペックは以下の通り。
CPU : Pentium 133MHz, Memory : 32MB (+32MB増設 = 64MB), HDD : 1GB (+4GB増設 = 5GB)
NIC: オンボード 3COM 3C509B

iMacのハードディスクを40GBに取り替えたので、それに最初から付いていた4GBのディスクを追加してあります。
ついでに、秋葉原で中古のSIMM(16MBx2)を1,000円ぐらいで購入して増設。

NIC はオンボードですが、WAN側(Internet側)とLAN側に合計二枚必要なので、別途 PCI の NIC を増設。

この環境に、Vine Linux 2.1.5をインストールしてしまいます。
全くのド素人のワタシに言わせてもらえば、やはり日本語環境が整った Vine が一番だと思います。ユーザー数も多いので情報検索がしやすいこと、RPM パッケージが使用可能なこと、debian 譲りの apt-get コマンドで常に最新状態に環境を保てるなど、利点がたくさんあります。
苦労して Linux を覚えたい方には向いていないかも。なんちて。

インストールそのものはそれほど難しくないでしょう。極端に古いPCでなければ、CD-ROMからブートしてグラフィカルなインストーラが立ち上がります。
今回のマシンはCDブート不可でしたが、CD-ROM の中に起動FDDのイメージがあるので、マニュアルに従えば簡単にインストールは可能です。
また、今回はサーバ用途なので、X-Window は導入しません。(X-Window を入れようと思うと、グラフィックカードに依存して設定に戸惑うかも…)

PCI接続の NIC は、ほとんどの場合、インストール中に自動認識します。
(自動認識された場合、IPアドレスなどのネットワーク情報を求められます)
たとえできない場合でも、NIC のメーカーサイトでドライバの配布をしていたり、認識のさせ方が載っていることがほとんどです。

ただし…ワタシの場合はちょっとハマりました。
オンボードの 3Com の NIC、ISA だったのです。
ISA の NIC は、ほとんどの場合、設定変更ツールが付属しています。デフォルトではたいてい、Plig & Play モードが有効になっていて、Windows では自動認識してくれるのですが、Linux では逆に認識できなくなってしまいます。
この場合、付属の FDD (ない場合はメーカーからダウンロード。ワタシは落としてきた)の設定変更ツールを使って、Plug & Play モードを解除して下さい。また、IRQ と I/Oポートアドレスも控えておいて下さい。
ちなみに、恐らくほとんどの場合は DOS プログラムなので、Windows9x のシステムディスク(起動ディスクではなく、システム転送したもの)は常に手元に置いておきましょう…
...とは言え。
よくISAのカードを認識させるには、/etc/conf.modules に IRQ と IOポートアドレスを指定するように!とWebなどで書かれていたりしますが、I/Oポートアドレスを書くと逆に認識しない場合もあります。
実際にはこんな感じです。
$ cat /etc/conf.modules
....
alias eth0 3c509
alias eth1 via-rhine
options 3c509 irq=10
※ via-rhine は別途購入した PCI-NIC のドライバ。自動認識されて既に記入されていた。

この段階では(まだADSL開通前)以下の設定にしました。

eth0 (外向け)
# cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
IPADDR="192.168.2.200"
NETMASK="255.255.255.0"
ONBOOT="yes"
BOOTPROTO="none"
...

eth1 (内向け)
# cat /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE="eth1"
IPADDR="192.168.1.200"
NETMASK="255.255.255.0"
ONBOOT="yes"
BOOTPROTO="none"
...
とりあえず、この状態で
192.168.2.0/24 ⇔ eth0 = Linux = eth1 ⇔ 192.168.1.0/24
の両端が通信可能か調査してみました。




....ダメでした(ぉぃ)

というわけで、(RedHat系では)以下の手順でルーティングを可能にします。

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

これで、セグメントの異なる二つのネットワークを、Linux を経由して相互通信が可能になりました!
もちろん、192.168.1.0/24 側のPCのデフォルトゲートウェイは 192.168.1.200、192.168.2.0/24 は 192.168.2.200 に向けておく必要があります。
よい子のネットワーク講座
192.168.1.0/24 というのは、192.168.1.0 から 192.168.1.255 までの範囲で ネットマスクが 255.255.255.0 という意味です。
192.168.1.0 を基点として、24bitが固定部分(IPv4 では合計 32bit のアドレス空間がある)、残りは 8bit(=256個) までの範囲を示します。
例えば…
192.168.1.100/29 といえば、192.168.1.100 が基点、残り 3bit(=8個) なので 192.168.1.107 までの範囲を示します。IPアドレス数は 8個。
ただし、最初の 192.168.1.100 はネットワークアドレスと呼ばれ、ネットワークそのものを表すもの、最後の 192.168.1.107 はブロードキャストアドレスと呼ばれ、ネットワークの末尾を表すものなので、PC に割り当てることはできません。実質 6 個になるわけですね。
そういうワケで、/24 = 254個の有効アドレスがあります。

これで eth0 をDHCPにすれば eth1 に側のPC全てが外に出て行けるのか?
もう設定カンペキ? やるな!!>俺!!
と思ったりして調子に乗ってましたが、甘い考えだったようです(笑)
そもそも、DHCP じゃないんだし....
(Y!BB などでこういう構成にしても、きっとダメです。LAN内のIPアドレスで外部に接続を試みようとするでしょうが、Private IP アドレスで Internet 上のホストに直接接続することは不可能なのです。IP Masqueradeを使えば、LinuxをFireWall代わりにはできます。)
▲TOPへ


PPPoE

つまり、
こういう事です。←手抜き(汗)
Point to Point Protocol Over Ethernetという認証プロトコルなんです。
ダイヤルアップの要領でユーザー名とパスワードを通知すると、Global IPアドレスが配布される仕組みです。
結果的にはDHCPの様に非固定のIPアドレスが与えられるわけですが、設定はDHCPにしてはいけません。起動時にDHCPサーバを探しに行ってしまうので起動時間が非常に長くなってしまいますし、OSのDHCPクライアント機能では認証しないので、結局見つける事ができません。
# ちなみに、Windows系ではDHCPでIP取得に失敗すると、とんでもないIPアドレスが割り当てられます
...と思ったら、この時に取得されるIPアドレス(169.254.xxx.xxx)はちゃんとRFCで定義されているそうだ....

また、DHCPとはまたちょっと違うようで、PPPというプロトコルの上にIPを載せているので、いわゆる「大きなLAN」の中に入れてもらうというイメージではないようです。つまり、(IPアドレス的に)ご近所さんだとしても、Y!BBのDHCPとか、CATVネットのように他人のコンピュータの共有フォルダ丸見え、という最悪な環境ではないそうです。

なお、Windowsで接続する場合は適当なIPアドレスをNICに振っておく必要があります。
ソフトウェアでダイヤルアップ(ではないが)の要領で接続しに行くと、そのIPアドレスは勝手に解放され、仮想ネットワークアダプタにGlobalなIPアドレスが付与されます。

さて。Windows の事はどうでもよくて。Linux 用の PPPoE クライアントがなくちゃ。
というわけで世界中探しました。コレ↓
http://www.roaringpenguin.com/pppoe/←このサイトから、RP-PPPoEというPPPoEクライアントをダウンロードします。
ソースからコンパイルするのはかったりぃので、rp-pppoe-2.8-1.i386.rpm というRPMパッケージを持ってきました(当時)
現在は、rp-pppoe-3.3-1.i386.rpm がありました(02/01/25)
# rpm -ivh rp-pppoe-2.8-1.i386.rpm
でインストールされ....ることになってます。

ところが!!!

# rpm -ivh rp-pppoe-2.8-1.i386.rpm
エラー: 依存性の欠如:
	ppp >= 2.3.7は rp-pppoe-2.8-1 に必要とされています

こんなエラーになってしまいます...

PPPoE というからには、やはりPPPするソフトウェアがないとダメだそうです。ダイヤルしてるわけじゃないのにねぇ…
以前は Vine のサイト探しても見つからなかったのですが、今は VinePlus にあるようです。
ftp://ftp.ring.gr.jp/pub/linux/Vine/VinePlus/2.1/RPMS/i386/ppp-2.4.0-2vl0.i386.rpm
ココからpppを落として来て下さい。
ppp-2.3.7 以降が必要なようです。

# rpm -ivh ppp-2.3.10-1.i386.rpm

でサクっとインストール。(上記バージョンは当時のもの)
pppdの設定は特にしなくても大丈夫そう。なにか必要なのかな?ホントは。それとも、ただのドライバ扱い?
さて、再度 rp-pppoe をインストールします。今度は大丈夫なはず。

インストール完了後、コマンドは /usr/sbin/ に入ります。
adsl-setup (設定)
adsl-start (接続-常駐)
adsl-connect (接続)
adsl-stop (切断)
adsl-status (状況照会)
の各種コマンドにて操作を行います。設定は /etc/ppp/ に置かれる
pppoe.conf
でも可能です。

さて、設定。ユーザー名とパスワード等を入力します。

# /usr/sbin/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...

USER NAME

>>> Enter your PPPoE user name (default ): [ユーザー名]

INTERFACE

>>> Enter the Ethernet interface connected to the ADSL modem
(default eth1): eth0←ウチの環境では eth0 なんです。

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←手動接続か常時接続か。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: server←DNSのIPを手入力するかサーバから取得するか。サーバから取得するので serverと入力。

PASSWORD

>>> Please enter your PPPoE password: [パスワード]←(画面には出ない)
>>> Please re-enter your PPPoE password: [パスワード]←(再入力)

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←実はここでハマってしまいました...

** Summary of what you entered **

Ethernet Interface: eth0
User name: ***********
Activate-on-demand: No
DNS: server
Firewalling: NONE

>>> Accept these settings and adjust configuration files (y/n)? y←設定ファイルに書き込むかどうか(当然 y)
Adjusting /etc/ppp/pppoe.conf
Adjusting /etc/resolv.conf
(But first backing it up to /etc/resolv.conf-bak)
cp: symlink: /var/run/resolv.conf
*** Quitting.

これにて設定は完了です(たぶん)
早速、以下のコマンドで接続を試してみます。
# /usr/sbin/adsl-connect
......Timed Out
...ダメなようです(/_;)
ifconfig見てもIP アドレス変わってません。
ping も当然通りません。

英語ドキュメント解読したり、いろいろと検索していると、どうも接続時にNICにIPが割り当てられてはいけないというような記述があったようななかったような。
これは試してみなくては。DHCPにしてはいけないのは解ってはいたのだが...
早速、
# netconf
→「基本ホスト情報」にてeth0のIPを空欄にしてみます。....が、不正なIPアドレスだと怒られるので、「有効」のチェックを外してみます。
直接スクリプトを変更する場合には以下の通り。

# vi /etc/sysconfig/network-scripts/ifcfg-eth0
ONBOOT="yes" を
ONBOOT="no" に変更!!


念のため、一度ネットワークを再起動して再接続。
# /etc/rc.d/init.d/network restart
# /usr/sbin/adsl-connect
....Connected!

をを!!接続したっ!!
外部ホストに ping も通ります!成功っ!!

ちなみに、ifconfig を見る限りは eth0 が通信しているようには見えません。
仮想(!?)アダプタの ppp0 が出現し、あたかもこちらが通信しているように見えます。
$ /sbin/ifconfig -I ppp0
と、
$ /usr/sbin/adsl-status
は同じ意味で、ppp0の状態を表示します。

【後始末】
# /usr/sbin/adsl-start を実行すると、daemonとして起動します。
アイドル時間が長かったり、メンテナンスなどで切断された場合に強引に再接続しようと試みます。
起動時に毎回コマンド叩くのも面倒なので(まぁ、滅多に電源切らないけど)自動的に起動するように設定します。

# /sbin/chkconfig --add adsl
# /sbin/chkconfig --level 35 adsl on

これで、意地でも接続を繰り返す邪悪なサーバのできあがり。

...なんです、が。
どうも、ウチの環境では近頃、一度切断されるとネットワークの再起動をしない限り、自動再接続に失敗しているようです。
それを回避するためにシェルスクリプトを書いて、cron で定期的に実行させています。
詳しくはコチラ

▲TOPへ


IP Masquerade

そのまま訳せば「IP偽装」っという事になります。
一つのグローバルアドレスを複数台のプライベートアドレスで共有可能にする事です。
LAN 内のPrivate IPアドレスでは直接外部のホストにアクセスすることは出来ないので、一旦代理で Linux がアクセスし、その応答を要求元の LAN 内のPCへ返す事ができます。
似たようなものに、NAT というものがあります。こちらの場合は、IP アドレスを一対一で対応させ変換するものです。この場合は一台しか接続できません。
更に、静的IPマスカレード、または NAPT というものがあり、この場合は特定のポートは特定のIPアドレスの任意のポートに変換をしてくれます。プライベートアドレスのみで構成されたLAN内のサーバ(の一部のサービス)を外部に公開したり、特定のポートを使用するネットワークゲーム(通常のIPマスカレードでは対応できないもの)が利用可能になったりします。擬似的な DMZ(非武装地帯) の構築が可能になります。

ウチの場合は、Linuxにサーバー機能を持たせ、LAN内部のPCは公開しないので通常のIPマスカレードを使用します。(後付けで静的IPマスカレードを追加もできます)

IPマスカレードについては、JFの
IPCHAINS-HOWTOを参考にして下さい。
以上(笑)





...って、上記文書はかなり丁寧に書いているとは思うのですが、読破するのは大変です。
単純にIPマスカレードするだけなら以下の通りに設定すれば多分OKでしょう。

# /sbin/ipchains -P forward DENY            ← forwardポリシーをOFFに
# /sbin/ipchains -A forward -s 192.168.1.0/24 -j MASQ ← マスカレード設定


とりあえずこの設定だけで大丈夫なはずです。たぶん。
上記のPPPoEの設定で、STANDALONE を指定したりするとうまく行かないかもしれませんので御注意を。
1 (STANDALONE)の場合は、恐らく全くアクセスできないかも....
2 (MASQUERADE)を選択すれば、ipchains の設定は不要かもしれません。(未確認)

....ん?
それでもLAN内から接続出来ないぞ??

最初の方にも書いたのですが、二枚のNICでルーティングさせるには
# echo "1" > /proc/sys/net/ipv4/ip_forward
しておかなくてはいけません。
これ、実は再起動すると消えてしまいます。また、上記のipchainsの設定も消えるようです。
毎回毎回その設定するのは面倒なので、起動時に一度だけ実行するようにしてみましょう。

# vi /etc/rc.d/rc.local
で、起動スクリプト rc.local の最後に以下のコマンド群を書き加えます。

# IPマスカレード用設定
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.1.0/24 -j MASQ


これでオールOK!!!



...じゃぁないんですよ。
このままだと、LAN内からWebページのブラウズぐらいはできるのですが、ftpで外部サイトに接続したり、IRCなどのチャット、RealPlayerでのストリーミングができません。
マスカレードのモジュールが必要なのです。
これらは、 /lib/modules/`uname -r`/ipv4/ に入っています。
(Vine Linux 2.1.5 では、 /lib/modules/2.2.18-0vl4.2/ipv4/)
このディレクトリにある、ip_masq_***.o というモジュールを組み込む必要があります。

って、詳しい事はよく分からないのだが(笑) 要するに以下のコマンドにて組み込みが可能です。

/sbin/depmod -a
/sbin/modprobe ip_masq_autofw
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_mfw
/sbin/modprobe ip_masq_portfw
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_user
/sbin/modprobe ip_masq_vdolive


(余計なモノも入っているので、適宜調整して下さい..)
環境によっては違うかもしれないので、適宜読み替えてくださいな。
これらも、ipchains と同様に再起動すると消えてしまうので、同じように
/etc/rc.d/rc.local
にでも書き加えて下さい。

よっしゃ!これで完璧!!
LAN内の各PCのGatewayはLinuxに向けて、DNSもLinuxのIPアドレスを...

...ん?
ブラウザにURL入れても表示されないぞ。
でも、IPアドレスなら表示ができる.....DNS が名前解決してません...(涙)

ある意味、当然かも。LAN内のPCは DNS の情報を全く持っていません。
$ cat /etc/resolv.conf
で表示されるDNSサーバー(プライマリとセカンダリ)を直接クライアントPCのDNS欄に入れてください。
rp-pppoeで接続すると、この resolv.conf は毎回書き換えられるらしいですが、東京めたりっくの場合は今のところ、別なDNSサーバに変わった事はありません。

ともかくこれで、Linuxが数万円相当のブロードバンドルータになりました(^ー^)/
【注意事項】
この設定のままではセキュリティ上、非常に危ないのでipchainsなどにより、さらにfirewallのルールを追加して下さい。
ウチのも追加してありますが、スキを突かれるのはイヤなので設定は公開しません(笑)
セキュリティ情報を公開しないのもセキュリティのうちなので(^^;;
▲TOPへ


Dynamic DNS

通常、一般向けADSLサービスではIPアドレス非固定になっています。再接続すればIPアドレスが変更になることがほとんどです。
もちろん、高い追加料金を払えば固定IPアドレスを取得できるISPもありますが、なるべくコストかけずに固定のホスト名でアクセスできるようにしたい。
そこで、DynamicDNSを利用するわけです。

原理的には、例えば
http://u.hn.org/とか、http://utchy.mine.nu/のように(これらはウチの実際に稼動してるサーバです。アタックしやがったらやり返します。フフフ...) http://(サブドメイン名).(DDNS業者ドメイン名)/ という固定のホスト名でのアクセスを、非固定のIPアドレスへと転送してくれるサービスなのです。

IPアドレスをホスト名のみでアクセスできるようにしてあるだけなので、http や ftp, telnet, smtp などのサービスも当然使えます。
ただし、逆引きはできません。順引きのみ。逆引きするとISPのホスト名になります。
本来、DNSというのはドメイン名とIPアドレスを結び付けているDNSサーバの更新から、長いと一週間ぐらいしないと世界に伝播しないのですが、こういうDDNSは非常に短いサイクルでDNSを更新しています。5分から15分ぐらいでしょうか。
ただし、こればかりは接続元のISPのDNSにも左右されるため、正常にDDNS業者のDNSが更新されていても、自分が接続しているISPのDNSサーバが過去の情報をキャッシュしていたりすればなかなか正しいIPアドレスに接続できない、なんて事もないわけではないです。(たぶん)←こればっかり

という事をふまえて。

詳しいDynamicDNSアドレスの取得方法は説明しません。ワタシが使っているのは以下の3つ。
DynDns.ORG
Hammer Node
DHS.ORG

現在 Linux に割り当てられているIPアドレスの変化を自動検知し、もしも前回と変わっていたら自動でDDNSサーバに現在のIPアドレスを通知させよう、というのが今回の目的です。
もちろん、手動でブラウザから更新は可能なのですが、それだと面倒でしょ?

その為に、自動更新ツールを入手します。perl版などもあるのですが、ここはCで書かれたツールを入手します。
http://www.gusnet.cx/proj/ez-ipupdate/←ここから、ez-ipupdateというツールを落とします。

ここでは、(当時) ez-ipupdate-3.0.8.tar.gzを入手。
# tar zxvf ez-ipupdate-3.0.8.tar.gz
# cd ez-ipupdate-3.0.8
# ./configure
# make
# make install


たしか、こんな感じでコンパイル&インストールできたような気がする(無責任)
ez-ipupdate そのものは、/usr/local/bin/ez-ipupdate にインストールされます。
解凍先のディレクトリに設定サンプルがあるので、自分の使っている業者のサンプルを参考にしてみて下さいな。
ただし、ワタシも使っている hn.org に関してはサンプルがなかったので、デフォルトの example.conf を以下のように設定しました。

# vi example.conf
#!/usr/local/bin/ez-ipupdate -c
#
# example config file for ez-ipupdate
#
# this file is actually executable!
#
service-type=hn
user=(ユーザー名):(パスワード)
#user=myuserid:mypassword
interface=ppp0 ここ、注意! PPPoEの場合は、ethXのIPはGlobalじゃないです。
#interface=eth1
#host=mydomain.whatever.com
server=dup.hn.org  ←hn.org では指定しないといけません

# other options:
#address=<ip address>
cache-file=/etc/ez-ipupdate.cache.eth0.hn  ←同時に複数走らせる時、ダブらないよう...
daemon     ←"daemon"にすると、プロセスが残って自動検出/自動更新します
#debug
#foreground
#host=<host>
#interface=<interface>
#mx=<mail exchanger>
各サービス業者ごとに設定は違いますが、ユーザー名、パスワード、Interface(ethX ではなく ppp0 にする事!)さえ指定すれば問題ないです。
これら、設定サンプルは実行可能属性(**x)が付いているので、
# ./example.conf
とするだけで、現在のIPアドレスを更新しに行きます。
が、基本的にプロセスに常駐するので(つまり、接続する度に自動で検出して更新してくれる)Linux起動時に一度だけ接続すればOKなはずです。
IP Masqueradeで説明したように、/etc/rc.d/rc.local あたりにこの設定ファイルのパスを追記すればいいでしょう。

この設定ファイルのパーミッション、rwxrwxr-x になっています。
生パスワード書いてあるので、chmod 700 hoge にしておきましょう。

ちなみに。hn.org では、DDNS と併用して自分が所有しているドメインを使うことができます。
ワタシの場合は utchy.jp = u.hn.org に割り当ててあるので、u.hn.org の情報が変われば自動で utchy.jp も追従してホスト情報が変わってくれます。
IPアドレスが非固定でも、ちゃんと独自ドメインの運用ができるのだよ。
▲TOPへ


Apache

サーバと言えば、最初に思いつくのが HTTP サーバでしょう。
Vine Linux に標準で入っている
apacheの設定メモです。

とりあえずデフォルトでも動くことは動きます。が、せめて CGI ぐらいは動かしたい。各ユーザディレクトリ以下も公開したいとなったら、設定を変更する必要があります。
apache 1.3.22 では、設定ファイルは /etc/httpd/conf/httpd.conf (のみ)になります。

CGI の実行ディレクトリはデフォルトで /home/httpd/cgi-bin/ 以下でしか動かないので、どこでも動くように変更します。(セキュリティ的に好ましくないが..)
他にも、基本的な項目(サーバ名、管理者メールアドレスなど)も修正します。

# vi /etc/httpd/conf/httpd.conf
...
[サーバ名の設定]
ServerName utchy.jp
...
[サーバ管理者アドレスの設定]
ServerAdmin webmaster@utchy.jp
...
[DocumentRoot の権限設定]
<Directory /home/httpd/html>
#
# This may also be "None", "All", or any combination of "Indexes",
# "Includes", "FollowSymLinks", "ExecCGI", or "MultiViews".
#
# Note that "MultiViews" must be named *explicitly* --- "Options All"
# doesn't give it to you.
#
Options ExecCGI Includes
...
これで、/home/httpd/html 以下で CGI(Common Gateway Interface), SSI(Server Side Include)の実行が許可されます。

さらに各ユーザーにも許可...
...
<Directory /home/*/public_html>
Options ExecCGI Includes
...

これで OK!! ....ではなくて。
...
AddHandler cgi-script .cgi .pl

この部分がコメントされているので、外します。(拡張子 .pl も CGI とみなすよう、追加)

これで、各ユーザーディレクトリでも CGI が動くようになりま…せん?
そもそも、http://(サーバ名)/~(ユーザ名)/ でアクセスができない....

そんな時は、ユーザーディレクトリのパーミッションを見直します。
デフォルトで /home/user は rwx------ なので、rwx-----x にします。

# chmod 701 /home/user

あとは、 /home/user/public_html 以下にコンテンツを置けば、 http://servername/~user/ という形式でアクセスできるようになります。


でも、これだけでは物足りない。
http://user.servername/ 形式でもアクセスできるようにしたい。
しかしながら、user.servernameというのはホスト名でもあるので、DNSに登録されている必要があります。もちろん、servername と同じIPアドレスで大丈夫です。
これを実現するには、Virtual Hostという機能を使います。

【具体例】
http://utchy.jp/ http://www.utchy.jp/ は /home/httpd/html 以下を公開
http://user.utchy.jp/ は /home/user/public_html 以下を公開したい

まず最初に、NameVirtualHostを宣言します。
構文は
NameVirtualHost <IP Address>[:<Port>]
なのですが、ADSL 環境ではIPアドレスが不定なので、ワイルドカード(*)を使います。

NameVirtualHost *

# utchy.jp, www.utchy.jp の設定
<VirtualHost *>
     ServerName utchy.jp
     ServerAlias www.utchy.jp
     DocumentRoot /home/httpd/html
</VirtualHost>

# user の設定
<VirtualHost *>
     ServerName user.utchy.jp
     DocumentRoot /home/user/public_html
</VirtualHost>



このような感じで、いくつでも作成できます。
ただし、メインコンテンツである /home/httpd/html に関しては httpd.conf で設定済みなので不要なのでは?と思われるかもしれません。
が、ここを省略してしまうと user.utchy.jp のディレクトリを無条件で見に行ってしまいます。つまり、一番最初に定義された VirtualHost がデフォルトとなってしまうので、一番最初には(意味がなくても)デフォルトページの設定を置く必要があります。
IPアドレスのみでアクセスされた場合や、設定されたもの以外のホスト名(プロバイダが与えたホスト名など)でアクセスされた場合も最初の VirtualHost 設定が適用されます。
逆に言うと、正規の URL 以外でアクセスされた場合は見せたくない、という時には最初の VirtualHost 部分にダミーページを置く、という方法もあるでしょう。
▲TOPへ
...続く。といいな(ぼそ)