Linux Memo

自宅でLinux機(Vine Linux)をいじくるに当たっての自分用の覚え書きです。

免責事項:当pageの情報が正確であるという保証はありません。当pageの情報によって何らかの損害を被ったとしても当方は何ら責任を負わないものとします。

実際に作業される前に、ご自身で十分に調査されることを強く推奨いたします。

とりあえずの情報源として: [ Linux JF (Japanese FAQ) Project. / Vine Linux Home Page ]

Vine Linux 2.5でPPPoE

Vine 2.5では初めからRP-PPPoEがインストールされるらしいです。私はVine 2.1.5からアップデートしたので細かいところはよく分かりません。Vineのアップデート前にきちんと接続できていれば、2.5にアップデートした後にもきちんと接続されるはずです。多分。

Vine Linux 2.1.5でPPPoE」も参照のこと。

Vine Linux 2.1.5でPPPoE

フレッツADSL等でVine Linux2.1.5からネットにアクセスできるようにします。

Roaring Penguin SoftwareからRP-PPPoEをゲットしてきます。Vine用のRPMは用意されていないのでSRPMを取ってきます。…と、私はやったのですが、VinePlusに収録されているようなのでそっちを利用した方がいいですね。

後はInstallationを読みつつ、プロバイダやNTTからの情報源を見つつセットアップすればOKです。英語はそんなに難しくないと思うので頑張って下さい。…と、思いましたが、以下に大まかな流れを少し。

設定ファイルは「/etc/ppp/pppoe.conf」。

# 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 ):
// ユーザID。例えば[email protected]みたいな

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 eth0):
// NIC指定。ADSLモデムとつながってる方

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設定。ISPに指定されたDNSのIPアドレスを書いてもよいです
// その場合、接続時に自動的に/etc/resolv.confが書き替わるみたいです
// [enter]キーのみの場合は自分でresolv.conf設定して下さい
// 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):
// firewall設定。自分でやるなら0。孤独なマシンなら1。masqueradeするなら2なのか。
// でもipchainsでやってるみたいなのでkernel 2.4.xでは無駄なのか?

** Summary of what you entered **

Ethernet Interface: ***
User name:          ***
Activate-on-demand: ***
DNS:                ***
Firewalling:        ***

>>> Accept these settings and adjust configuration files (y/n)?
// 確認。okならy

以上。

Kernel 2.4.xでIP Masquerade (iptables)

Linux機をルータ代わりにして、宅内LANでつながる各PCからもネット接続出来るようにします。NIC二枚差しが前提です。

私の場合、Vine 2.1.5からVine 2.5にアップデートしたためか、iptablesが入っていなかったので、インストールする必要がありました。

事前確認

まずipchainsが停止していることを確認します。

# lsmod

もしipchainsが動作していれば停止します。

# rmmod ipchains

起動時にipchainsを動作させないようにします。

# chkconfig --del ipchains

設定

/etc/rc.d/rc.localの最後に以下を追加。

# Load the NAT module (this pulls in all the others).
/sbin/modprobe iptable_nat

/sbin/insmod ip_conntrack_ftp
/sbin/insmod ip_nat_ftp

# In the NAT table (-t nat), Append a rule (-a) after routing
# (POSTROUTING) for all packets going out ppp0 (-o ppp0) which says to
# MASQUERADE the connection (-j MASQUERADE).
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

# Packet Filtering
iptables -A INPUT -i ppp0 -m state --state INVALID -j DROP
iptables -A INPUT -i ppp0 -p tcp --dport 25 -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --dport 53 -j ACCEPT
iptables -A INPUT -i ppp0 -p udp --dport 53 -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i ppp0 -p tcp --dport 143 -j ACCEPT
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j DROP

# Turn on IP forwarding
echo "1" > /proc/sys/net/ipv4/ip_forward

最後の1行は、

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

と記述してもよいです。どちらかうまくいく方でどうぞ。

このLinux機経由でネットにつなごうとするWindows機では、「(デフォルト)ゲートウェイ」にLinux機の宅内LAN側のIP addressを指定しておいて下さい。

確認

# iptables --list
# iptables --list -t nat
# iptables --list -t <テーブル名>

ルールは上から順に評価されます。

ルールの追加

-Aの代わりに-Iオプションを用いることで、任意の行にルールを追加できます。

# iptables -I INPUT 6 -i ppp0 -p tcp --dport 443 -j ACCEPT

ルータ機より内側にサーバがある場合

iptables -t nat -A PREROUTING -i ppp0 -p tcp --dport 443 -j DNAT --to 192.168.0.2
iptables -A FORWARD -i ppp0 -p tcp --dport 443 -j ACCEPT

などとします。

参考文献:
http://www.linux.or.jp/JF/JFdocs/packet-filtering-HOWTO.html
http://www.linux.or.jp/JF/JFdocs/NAT-HOWTO.html
http://www.skipup.com/~search/
http://www.matsusaka-u.ac.jp/~okada/
http://www.linux.or.jp/JF/JFdocs/iptables-1pt-memo/

Kernel 2.2.xでIP Masquerade (ipchains)

Linux機をルータ代わりにして、宅内LANでつながる各PCからもネット接続出来るようにします。NIC二枚差しが前提です。

Kernel 2.4.x(Kernel 2.3.xもらしい)では、モジュールが組み込まれてなかったり非推奨だったりするようなので「Kernel 2.4.xでIP Masquerade (iptables)」の方法でやるのが良いでしょう。

/etc/rc.d/rc.localの最後に以下を追加。

# 1) Flush the rule tables.
/sbin/ipchains -F input
/sbin/ipchains -F forward
/sbin/ipchains -F output

# 2) Set the MASQ timings and allow packets in for DHCP configuration.
/sbin/ipchains -M -S 7200 10 60
/sbin/ipchains -A input -j ACCEPT -i eth0 -s 0/0 68 -d 0/0 67 -p udp

# 3) Deny all forwarding packets except those from local network.
#    Masquerage those.
/sbin/ipchains -P forward DENY
/sbin/ipchains -A forward -s 192.168.0.0/24 -j MASQ

# 4) Load forwarding modules for special services.
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio

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

上記強調(strong要素)部分は適宜自分の環境に合わせて書き換えて下さい。それぞれ「宅内LAN側で使っているNIC」、「宅内LANのネットワークアドレス/ネットマスクのビット数」を指定します。最後の1行は、

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

と記述してもよいです。どちらかうまくいく方でどうぞ。

このLinux機経由でネットにつなごうとするWindows機では、「(デフォルト)ゲートウェイ」にLinux機の宅内LAN側のIP addressを指定しておいて下さい。

参考文献:
http://www.linux.or.jp/JF/JFdocs/Home-Network-mini-HOWTO.html

hdparmでHDD(IDE)のDMA転送を有効にする

場合によっては不具合が出ることもあるようですので、自己責任の下で作業されて下さい。

Vine 2.5ではHDD(IDE)のDMA転送が有効になっていないようですので、DMA転送を有効にしてHDDの高速化を図ります。HDD、マザーボードの両方がDMA転送に対応している必要があります。

確認

当方の環境では、

$ dmesg |grep hd
    ide0: BM-DMA at 0xf000-0xf007, BIOS settings: hda:DMA, hdb:pio
    ide1: BM-DMA at 0xf008-0xf00f, BIOS settings: hdc:pio, hdd:pio
    ide2: BM-DMA at 0xd400-0xd407, BIOS settings: hde:pio, hdf:pio
    ide3: BM-DMA at 0xe000-0xe007, BIOS settings: hdg:pio, hdh:pio
hda: TOSHIBA CD-ROM XM-6202B, ATAPI CD/DVD-ROM drive
hde: IC35L040AVER07-0, ATA DISK drive
hde: 80418240 sectors (41174 MB) w/1916KiB Cache, CHS=79780/16/63
hda: ATAPI 32X CD-ROM drive, 256kB Cache, DMA
 hde: hde1 hde2 hde3 hde4 < hde5 hde6 hde7 hde8 >
hde: DMA disabled
hde: DMA disabled
# hdparm -i /dev/hde

/dev/hde:

 Model=IC35L040AVER07-0, FwRev=ER4OA44A, SerialNo=SXPTXNA5036
 Config={ HardSect NotMFM HdSw>15uSec Fixed DTR>10Mbs }
 RawCHS=16383/16/63, TrkSize=0, SectSize=0, ECCbytes=40
 BuffType=DualPortCache, BuffSize=1916kB, MaxMultSect=16, MultSect=16
 CurCHS=65535/1/63, CurSects=4128705, LBA=yes, LBAsects=80418240
 IORDY=on/off, tPIO={min:240,w/IORDY:120}, tDMA={min:120,rec:120}
 PIO modes: pio0 pio1 pio2 pio3 pio4
 DMA modes: mdma0 mdma1 mdma2 udma0 udma1 udma2 udma3 *udma4 udma5
 AdvancedPM=yes: disabled (255) WriteCache=enabled
 Drive Supports : ATA/ATAPI-5 T13 1321D revision 1 : ATA-2 ATA-3 ATA-4 ATA-5
# hdparm /dev/hde

/dev/hde:
 multcount    = 16 (on)
 I/O support  =  0 (default 16-bit)
 unmaskirq    =  0 (off)
 using_dma    =  0 (off)
 keepsettings =  0 (off)
 nowerr       =  0 (off)
 readonly     =  0 (off)
 readahead    =  8 (on)
 geometry     = 79780/16/63, sectors = 80418240, start = 0

DMA転送が無効な状態でのベンチマーク。

# hdparm -t /dev/hde

/dev/hde:
 Timing buffered disk reads:  64 MB in 27.72 seconds =  2.31 MB/sec

DMA転送を有効にする

DMA転送を有効にします。

# hdparm -d1 /dev/hde

/dev/hde:
 setting using_dma to 1 (on)
 using_dma    =  1 (on)

DMA転送を有効にした状態でのベンチマーク。

# hdparm -t /dev/hde

/dev/hde:
 Timing buffered disk reads:  64 MB in  2.16 seconds = 29.63 MB/sec

10倍強……。

再起動するとDMA転送が無効になりますので「/etc/rc.d/rc.local」に以下を追加します。

/sbin/hdparm -d1 /dev/hde

他にも色々設定できるようですが、怖いのでこれ以上はやめておきます。

参考文献:
http://vinelinux.org/docs/tips.html
google

root権限を持つことが出来るユーザを制限する

「/etc/group」のwheelグループにroot権限を取得出来るようにしたいユーザを追加します。

wheel:x:10:root,foo,bar

念の為「/lib/security/pam_wheel.so」が存在することを確認しておきます。

$ ls /lib/security/pam_whell.so

「/etc/pam.d/su」に以下を追加します。

auth       required     /lib/security/pam_wheel.so debug group=wheel
参考文献:
google

bootdisk(起動ディスク)の作成

念の為に。

まずカーネルのバージョンを確認。

$ uname -r

まぁ問題ないでしょうが一応「/etc/fstab」辺りを見てFDDのデバイス名を確認。

カーネルのバージョンが2.4.18-0vl3だった場合、以下のようにすると一枚出来上がります。

# mkbootdisk --device /dev/fd0 2.4.18-0vl3
参考文献:
google

カーネルのアップグレード

十分注意して作業されて下さい。万一失敗しても責任は負えませんので。

カーネルにもセキュリティホールやバグが出ることがあるわけで、そのfixのためにアップグレードしようと考えて単純に「# apt-get upgrade」としても更新されないわけで。

ということで一応作業手順を書いとこうと思い書きかけたのですが、どうにも中途半端な内容になりそうでしたので、http://vinelinux.org/manuals/kernel-upgrade.htmlを参照された方が良いと思います。

#となるとこの項目必要ないかも

参考文献:
http://vinelinux.org/manuals/kernel-upgrade.html

rsync

基本は次のようになります。オプションについて、詳しくは「man rsync」やhttp://www.infoscience.co.jp/technical/rsync/などを参考にされて下さい。

$ rsync -avz <同期元> <同期先>

サブディレクトリ以下も再帰的にコピーされます。双方に存在し、且つ変更されていないファイルはコピーされません。

同期先のファイルが同期元のファイルより新しくても同期元のファイルで上書きされるようです。これを避けたい場合は-uオプションを使うとよいようです。

$ rsync -avuz <同期元> <同期先>

同期元には存在せず、同期先には存在しているファイルを削除したい場合は、--deleteオプションを使います。

$ rsync -avuz --delete <同期元> <同期先>

次の2つの例では、/home/user/copy/testに/home/user/testの内容がコピーされます。ここで、同期元を「/home/user/test」とした場合はディレクトリごとコピーされ、「/home/user/test/」とした場合はディレクトリの中身からコピーされます。

$ rsync -avz /home/user/test /home/user/copy
又は、
$ rsync -avz /home/user/test/ /home/user/copy/test

リモートのサーバとやり取りする場合は、双方にrsyncがインストールされている必要があります。

リモートのサーバから取ってくる場合は、

$ rsync -avz <ユーザ名>@<サーバ名>:<同期元> <同期先>

リモートのサーバへ持っていく場合は、

$ rsync -avz <同期元> <ユーザ名>@<サーバ名>:<同期先>

ユーザ名は省略可能です。例えば、あなたが双方のサーバでuserというユーザであるなら

$ rsync -avz ./public_html foo.test:/home/user

などとなるでしょう。

2つのサーバ間の経路がインターネットを経由するようでしたら、セキュリティ上、sshを利用した方がよいでしょう。

$ rsync -avz --rsh=ssh <同期元> <サーバ名>:<同期先>

cronで自動的に同期させる

HOST_AからHOST_Bへアクセスして同期させるとします。HOST_Aにて、

$ ssh-keygen -t rsa

パスフレーズ(passphrase)には何も入力せずにENTERのみ押下します。すると「~/.ssh/」に「id_rsa」と「id_rsa.pub」が作成されます。

id_rsa.pub」をセキュアなscpや物理的に直接FDD等を使って、「authorized_keys2」としてHOST_Bへコピーします。既にHOST_Bに「authorized_keys2」が存在する場合は上書きされますので、一旦他のファイル名でコピーした後、「authorized_keys2」に追記して下さい。

他人に書き換えられないようにパーミッションにも注意して下さい。

$ scp id_rsa.pub user@HOST_B:~/.ssh/authorized_keys2

確認します。以下のようにして、パスワードを聞かれずにログインできれば成功です。

$ slogin -l user HOST_B

HOST_Aにて、例えば

$ rsync -avuz --rsh=ssh ~/public_html/ user@HOST_B:~/public_html

などとして自動的に同期できることを確認します。うまく自動的に同期できれば、後はcrontabで設定するだけです。この時、-vオプションは必要ありません。

0 5 * * * /usr/bin/rsync -auz --delete --rsh=ssh ~/public_html/ user@HOST_B:~/public_html
参考文献:
man rsync
http://www.infoscience.co.jp/technical/rsync/
google

RPM

インストール

# rpm -ivh <パッケージファイルの名前>

パッケージファイルの名前とは、例えば「apache-1.3.24-0vl1.i386.rpm」等です。

アップグレード

新規インストールでも問題ありません。

# rpm -Uvh <パッケージファイルの名前>

アンインストール

# rpm -e <パッケージの名前>

パッケージの名前とは、例えば「apache」等です。

あるパッケージがインストールされているか調べたい時

# rpm -qa | grep <調べたいパッケージの名前>

パッケージの情報を参照する

インストールされているパッケージ

$ rpm -qi <パッケージの名前>

未インストールのパッケージ

$ rpm -qip <パッケージファイルの名前>

何がどこにインストールされるか表示

$ rpm -qlp <パッケージファイルの名前>
参考文献:
http://vinelinux.org/manuals/using_rpm.html

APT

パッケージ情報の更新

# apt-get update

check

# apt-get check

アップグレードされるパッケージの確認

# apt-get upgrade --no-act

まとめてアップグレード

# apt-get upgrade

パッケージのインストール又はアップグレード

# apt-get install <パッケージ名>

パッケージが存在するか確認

$ apt-cache search <パッケージ名>

パッケージの情報を確認

$ apt-cache show <パッケージ名>
参考文献:
http://vinelinux.org/manuals/using_rpm.html

squid

設定ファイルは「/etc/squid/squid.conf」。

ログのrotate

# /usr/sbin/squid -k rotate

Kernel module

ロードされているモジュールの確認

# lsmod

モジュールの停止

# rmmod <モジュール名>

NTP(SNTP)で時刻合わせ

Linux機をNTPサーバとして、LAN内のクライアントから時刻合わせに使えるようにします。

サーバ

設定ファイルは「/etc/ntp.conf」。

初期設定はそのままで、「server」に外部で公開されているNTPサーバを指定すれば問題なく動くはずです。「server」は複数指定することが出来ます。例えば、

server  ntp1.jst.mfeed.ad.jp
server  ntp2.jst.mfeed.ad.jp
server  127.127.1.0
fudge   127.127.1.0 stratum 10
driftfile /etc/ntp.drift

時刻合わせに必要なより上位のNTPサーバは、Googleで検索するなどして探してみて下さい。stratum 1とstratum 2の2種類がよく出てきますが、負荷分散のために分けている(階層構造)らしいので、stratum 2の方を使わせてもらうべきなのかもしれません。それ以前に、もし自分の使っているISP等がNTPサーバを提供してくれているならそっちを使いましょう。問い合わせから返答までの遅延が問題となるようですので、なるべく近いサーバを使わせてもらった方がいいようです。

NTPサーバ起動時に同期させる

「/etc/ntp/step-tickers」に外部で公開されているNTPサーバを書いておくと、NTPサーバ起動時にntpdateで同期します。M/Bの電池切れ等で時刻が大きくズレているときに有用なようです。

稼働状況の確認

# ntpq -p

クライアント

Windows

桜時計等のソフトが利用できます。

また、NTPサーバが稼働しているLinux機で同時にsambaが稼働している場合には、以下のコマンドでも時刻合わせが可能です。

C:\>net time \\LAN内のNTPサーバ /set /yes

Linux

単に一度時刻合わせをしたいだけなら、ntpdateを使えば可能です。

# ntpdate <日本のどこかのNTPサーバ>
参考文献:
http://www.atmarkit.co.jp/flinux/rensai/linuxtips/tipsindex.html
http://www.atmarkit.co.jp/fwin2k/win2ktips/index/
http://www.eecis.udel.edu/~ntp/
http://www.oiden.net/

ProFTPDの設定

単に動かすだけなら全く設定をいじらなくても動くはずです。

設定ファイルは「/etc/proftpd.conf」。

当方の環境ではinetd経由ではなく単独のデーモンとして起動する設定になっていました。

anonymousを許可しないのなら、<Anonymous>〜</Anonymous>間を全てコメントアウトするか、又は<Anonymous>〜</Anonymous>間に以下を追加します。

<Limit LOGIN>
  DenyAll
</Limit LOGIN>

ログインするユーザのホームディレクトリをルートディレクトリのように見せるには、以下を追加します。

DefaultRoot ~
参考文献:
http://www.infoscience.co.jp/technical/proftpd/
http://proftpd.linux.co.uk/
http://homepage1.nifty.com/Que/

BIND8(DNS)の設定

設定ファイルは「/etc/named.conf」。

named.conf

options {
        directory "/var/named";  // 下で出てくる「file "...";」に書かれるfileの基準directory
                                 // このdirectory以下に配置するfile/directoryのuser:groupはnamed:namedにしておく
        allow-transfer {
                none;    //セカンダリDNSの場合。プライマリDNSならnoneの代わりにセカンダリDNSのアドレスを書いておく
        };
//      forward only;  //forwardersにのみ問い合わせる。ルートに訊きに行ったりしない
        forwarders {
                xx.xx.xx.xx;  // ISPのDNSサーバ
                xx.xx.xx.xx;
        };
        version "";  // versionを隠す
        /*
         * If there is a firewall between you and nameservers you want
         * to talk to, you might need to uncomment the query-source
         * directive below.  Previous versions of BIND always asked
         * questions using port 53, but BIND 8.1 uses an unprivileged
         * port by default.
         */
         // query-source address * port 53;
};

//
// a caching only nameserver config
//
zone "." IN {
        type hint;
        file "named.ca";  // 元になるfileは「ftp://ftp.rs.internic.net/domain/named.root」。定期的にチェック
};

zone "localhost" IN {
        notify no;
        type master;
        file "localhost.zone";  // ゾーンファイルの名前。ファイル名は自由に決めてもよい
        allow-update { none; };
};

zone "0.0.127.in-addr.arpa" IN {
        notify no;
        type master;
        file "named.local";
        allow-update { none; };
};


// セカンダリDNS
zone "domain.test" {
        type slave;
        file "domain.test.zone.bak";  // ファイルはプライマリDNSから自動で取得
        masters { zz.zz.zz.zz; };  // zz.zz.zz.zzはプライマリDNSのIPアドレス
};

zone "yy.yy.yy.in-addr.arpa." { // yy.yy.yyはネットワークアドレス
        type slave;
        file "yy.yy.yy.in-addr.arpa.rev.bak";  // ファイルはプライマリDNSから自動で取得
        masters { zz.zz.zz.zz; };  // zz.zz.zz.zzはプライマリDNSのIPアドレス
};


// ローカル実験。既に存在するドメインやグローバルIPは使わないように
// 正引き
zone "tokiwa.test" {
        notify no;  // ゾーンファイルの変更をセカンダリDNSに通知しない。テスト中などに
        type master;
        file "local/tokiwa.test.zone";
        allow-update { none; };
};

// 逆引き
zone "20.168.192.in-addr.arpa" {
        notify no;
        type master;
        file "local/20.168.192.in-addr.arpa.rev";
        allow-update { none; };
};

各ゾーンファイルは変更後、serialの値を(より大きい方に)変更する必要があります。日付とその日何回目の変更かのセットで表すことが多いようです。

localhost.zone

$TTL    86400
$ORIGIN localhost.
@                       1D IN SOA       ns.tokiwa.test. postmaster.tokiwa.test. (
                                        43              ; serial (d. adams)
                                        3H              ; refresh
                                        15M             ; retry
                                        1W              ; expiry
                                        1D )            ; minimum

                        1D IN NS        ns.tokiwa.test.  ; ネームサーバ
                        1D IN A         127.0.0.1

ns.tokiwa.test.はネームサーバ。postmaster.tokiwa.test.はメールアドレス。@の代わりに.を用います。

ns.tokiwa.test.などについてる最後の.は付けるのを忘れないようにして下さい。付け忘れると、ns.tokiwa.test.localhost.などとよく分からないことになってしまいます。

最後の行は、暗黙のうちに

localhost.              1D IN A         127.0.0.1

named.local

$TTL    86400
@       IN      SOA     ns.tokiwa.test. postmaster.tokiwa.test.  (
                                      2002070801 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      ns.tokiwa.test.

1       IN      PTR     localhost.

最後の行はつまり「127.0.0.1」で問い合わせれば「localhost」が返ってくるということです。

tokiwa.test.zone

$TTL    86400
$ORIGIN tokiwa.test.
@                       IN SOA  ns.tokiwa.test. postmaster.tokiwa.test. (
                                      2002070802 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      ns.tokiwa.test.
;
        IN      MX 10   mail.tokiwa.test.  ; メールサーバの指定
;
        IN      A       192.168.20.1
;
juno    IN      A       192.168.20.1
sirius  IN      A       192.168.20.2
;
ns      IN      A       192.168.20.1
mail    IN      A       192.168.20.1
;
www     IN      CNAME   juno  ; 別名指定。ただ、これをあまり推奨しないという人も?代わりにAレコードで設定

20.168.192.in-addr.arpa.rev

$TTL    86400
@                       IN SOA  ns.tokiwa.test. postmaster.tokiwa.test. (
                                      2002070801 ; Serial
                                      28800      ; Refresh
                                      14400      ; Retry
                                      3600000    ; Expire
                                      86400 )    ; Minimum
              IN      NS      ns.tokiwa.test.
;
1       IN      PTR     tokiwa.test.
2       IN      PTR     sirius.tokiwa.test.

/etc/resolv.conf

search tokiwa.test
nameserver 127.0.0.1
nameserver xx.xx.xx.xx

ホスト名(例えばjuno)だけで問い合わせた場合、tokiwa.testを補完しての問い合わせ(例えばjuno.tokiwa.test)もします。

特に指定しない限り、ローカルのDNSに問い合わせるようになります。続けて外のDNSサーバも記述しておくといいかもしれません。

参考文献
http://www.atmarkit.co.jp/flinux/
http://www.linux.or.jp/JF/JFdocs/DNS-HOWTO.html
http://ash.jp/
その他の検索で出てきた多くのページ(もう多すぎてどれがどれやら)

Postfix(MTA)の設定

設定ファイルは「/etc/postfix/」以下のいくつかのファイルです。このうち主に編集するのはmain.cfになります。

main.cf

Postfix のぺーじhttp://www.kobitosan.net/postfix/をじっくり読みながら設定していけばいいと思います。

第三者中継について

relay-test.mail-abuse.orgやRBL.JPの第三者中継チェックで第三者中継が出来てしまうかチェックすることが出来ます。

余所様のサーバを勝手に調べるのはやめておきましょう

$ telnet relay-test.mail-abuse.org

他の設定に問題がないという前提で、上記の第三者中継が可能かどうかのテスト全てにパスするためには、main.cfに以下を記述します。

allow_percent_hack = yes
swap_bangpath = yes

セカンダリメールサーバ

DNSのMXレコードが以下の様になっているとします。

main.test.       IN     MX 10 ml.main.test.
                 IN     MX 20 ml.sub.test.

main.cfに以下を記述します。

relay_domains = main.test
smtpd_recipient_restrictions = permit_mynetworks check_relay_domains
transport_maps = hash:/etc/postfix/transport

/etc/postfix/transportに以下を記述します。

main.test       smtp:[ml.main.test]

上記の例では、main.test宛のメールをリレーし、main.test宛の全てのメールをsmtpでml.main.testに送り返します。

/etc/postfix/transportを更新した後は以下を実行しておきます。

# postmap hash:/etc/postfix/transport
# /etc/rc.d/init.d/postfix reload
参考文献:
http://www.kobitosan.net/postfix/
http://www.rbl.jp/
http://www.nanet.co.jp/rlytest/

Sambaの設定

設定ファイルは「/etc/smb.conf」。

参考文献:
http://www.samba.gr.jp/

Apache

各ユーザがページを公開できるようにするためには、初期設定では、ユーザのホームディレクトリにpublic_htmlなるディレクトリを作る必要があります。

ディレクトリのアクセス権

ユーザ名をuserとすると、最低限アクセス権を/home/<user>には711、/home/<user>/public_htmlには755を設定する必要があります。

Analog

本家サイトからRPMファイルを取得後、インストール。

Webフォームを利用して実行

/var/analog-5.31/lang/jpjform.html
/var/www/html/images/*
/var/www/cgi-bin/anlgform.pl

以上をWWW UA経由で実行できるように配置し、jpjform.htmlを編集します(Apacheのlogファイルやanlgform.plの位置などを指定する)。jpjform.htmlのフォームで項目を選び、anlgform.plにpostするとログの解析結果が返されます。

/etc/analog.cfgの設定

日本 Analog ユーザ会」にある日本語化されたマニュアルが非常に役立ちます。以下は一例として挙げておきます。

LOGFILE /var/log/httpd/access_log,/var/log/httpd/access_log.*  # Apacheのlogファイルを指定
OUTFILE /home/httpd/html/analog/index.html  # 結果を書き出すファイルを指定
HOSTNAME "foo.test"
HOSTURL http://foo.test

LANGUAGE JAPANESE

WARNINGS -R

STATUS OFF
FILETYPE OFF
SIZE OFF
WEEKLY ON
REFERRER ON
SEARCHWORD ON
BROWSERSUM ON

#REQINCLUDE pages

FILEEXCLUDE /analog/*  # 解析の対象から除外する

DNS WRITE
DNSFILE /var/analog-5.31/dnscache.txt
DNSGOODHOURS 672

#...
#他はデフォルトのまま

実行してファイルに出力

# analog

cronで一日ごとにログの解析結果を生成させる

# crontab -e
10 0 * * * /usr/bin/analog
参考文献:
日本 Analog ユーザ会

Tomcat4.1.18

先にJ2SE(ver.1.2以上)をインストールしておきます。

The Apache Jakarta Projectから「tomcat4-4.1.18-full.1jpp.noarch.rpm」と「tomcat4-webapps-4.1.18-full.1jpp.noarch.rpm」を取ってきてインストールし、「/etc/tomcat4/tomcat4.conf」の「JAVA_HOME」を環境に合わせて編集します。

JAVA_HOME="/usr/java/j2sdk1.4.1_01"

起動スクリプトがあるようなので、

# /etc/rc.d/init.d/tomcat4 start

WWW UAから「http://localhost:8080」にアクセスしてページが表示されれば稼動しています。

Apache1.3と連携

mod_jk2を使う

The Apache Jakarta Projectから「jakarta-tomcat-connectors-4.1.18-src.tar.gz」を取ってきて展開。「./jakarta-tomcat-connectors-4.1.18-src/jk/native2」に移動して、

$ chmod u+x buildconf.sh
$ ./buildconf.sh
$ ./configure --with-apxs=/usr/sbin/apxs
$ make

すると「./jakarta-tomcat-connectors-4.1.18-src/jk/build/jk2/apache13」に「mod_jk2.so」が出来上がりますので、「/etc/httpd/modules/」へコピーします。

# cp mod_jk2.so /etc/httpd/modules/

次に「./jakarta-tomcat-connectors-4.1.18-src/jk/conf/workers2.properties」を「/etc/httpd/conf」にコピーします。

# cp workers2.properties /etc/httpd/conf/

「/etc/httpd/conf/httpd.conf」に以下を追加します。

LoadModule jk2_module modules/mod_jk2.so
AddModule mod_jk2.c

最後にTomcat、Apacheの順に起動します。「http://localhost/examples/」にアクセスしてサンプルページが表示されれば成功です。

参考文献:
The Apache Jakarta Project

PHP4

VinePlusからphpとphp-manualを取ってきます。私の場合、依存性の関係からlibexpatとlibxml2もVinePlusから取ってきて先にインストールしておきました。他にDBの種類によってパッケージがいくつか用意されています。

apacheの設定は特に書き換える必要はないようです。インストール後、apacheは再起動しておきます。

<? phpinfo(); ?>

確認として、上記の内容のファイルを例えば「test.php」などと名前を付けて保存し、ブラウザからアクセスしてみましょう。phpに関する情報が表示されれば成功です。

PHP 4.2.0からの仕様変更について

日本PHPユーザー会PHP 4.2.0 のRelease Announcementの和訳にありますように、外部変数の仕様変更があったためにそれ以前に書かれたスクリプトが正常に動かないことがあります。あるスクリプトでは、数行追加することで動くようになりましたが、それが全てに適応できるのか不明ですし、推奨されない方法かもしれませんのでここで言及するのは控えておきます。

VNC

VinePlusからvnc、vnc-server、vnc-docの3つのRPMパッケージを取ってきてインストールします。

VNCサーバの起動

$ vncserver

初回起動時はパスワードの設定も行われます。

New 'X' desktop is servername:1

表示されるメッセージの内、上記の例では「:1」をクライアント起動時やサーバ停止時に指定することになります。

VNCサーバの停止

$ vncserver -kill :1

クライアント(viewer)

Windows

本家siteからダウンロードしてきます。単純にvncviewer.exeをダブルクリックするなどして起動します。

参考文献:
http://www.sra.co.jp/people/akira/
http://www.amy.hi-ho.ne.jp/masuda/

Portの確認

必要ないportは塞いでおきましょう。「Sygate Online Services」のようにオンラインで調べてくれるsiteがいくつかあるようです。

nmapはRPMがVinePlusに収録されています。余所様のサーバへのPort Scanはやめておきましょう

$ nmap <IP Address | domain name>
参考文献:
http://sakaguch.com/ServicePort.html

J2SEのインストール

java.sun.comからLinux RPM 自己解凍ファイルを取得してきます。そのファイルに実行権限を付与し、実行するとライセンスが表示されますので、同意すればrpmファイルが得られます。

$ chmod a+x <取得したファイル名>
$ ./<取得したファイル名>

後はroot権限を持つuserでrpmコマンドを実行すればインストール完了です。

# rpm -Uvh <rpmファイル>

.bash_profile等で以下のように環境変数JAVA_HOMEと環境変数PATHを設定しておくとよいかもしれません。

export JAVA_HOME=/usr/java/j2sdk1.4.1_01
export PATH=$PATH:$JAVA_HOME/bin

追加するPATHはご自分の環境とインストールしたJDKのバージョンに合致するように書き換えてください。

参考文献:
java.sun.com

ucd-snmp

SNMPエージェント。VinePlusに収録されています。ucd-snmpとucd-snmp-utilをインストール。

設定

設定ファイルは「/etc/snmp/snmpd.conf」。セキュリティ上、root以外は読み書きできないようにしておく方がよいようです。

com2sec local localhost private  # 実際には最後の項目は推測されにくいものにすることが望ましい。らしい
com2sec mynetwork 192.168.0.0/24 public
group   ROGroup        v1           local
group   ROGroup        v2c          local
group   ROGroup        v1           mynetwork
group   ROGroup        v2c          mynetwork
view    all            included      .1              80
access  ROGroup        ""      any       noauth    exact  all    none   none
syslocation Vine Linux Server  # 任意
syscontact root@localhost  # 任意の連絡先
参考文献:
google
google

MRTG-2.9.25

SNMPマネージャ。Vine2.1ではVinePlusに収録されているのですが、Vine2.5では収録されていないようですので本家Siteからソースを取得してきます。インストール時には以下のようにする必要があるようです(単に./configureとしただけではmakeが通りませんでした)。デフォルトでのインストール先は「/usr/local/mrtg-2/」。

$ LDFLAGS=-lVFlib2 ./configure
$ make
# make install

設定ファイルの生成

/<インストール先>/bin/cfgmakerを用います。

# ./cfgmaker [email protected] > mrtg.cfg

設定

最低限、実行した結果を書き出す場所を指定する「WorkDir」を設定する必要があります。Webで外部に公開するのでしたら、以下のようになるかと思います。

WorkDir: /home/httpd/html/mrtg

実行確認

# ./mrtg mrtg.cfg

cronで5分ごとに自動実行させる

# crontab -e
*/5 * * * * /usr/local/mrtg-2/bin/mrtg /usr/local/mrtg-2/bin/mrtg.cfg

ディレクトリやファイル名はご自分の環境に合わせて適宜書き換えて下さい。

インデックスページの生成

<インストール先>/bin/indexmakerを用います。

# ./indexmaker --columns=1 mrtg.cfg > /home/httpd/html/mrtg/index.html

### CPU Load Avalage
Target[cpu]: 1.3.6.1.4.1.2021.10.1.5.2&1.3.6.1.4.1.2021.10.1.5.3:[email protected]
MaxBytes[cpu]: 2000
Title[cpu]: CPU Load Avalage
PageTop[cpu]: <h1>CPU Load Avalage</h1>
Options[cpu]: nopercent, integer, gauge, absolute, withzeroes, growright
YLegend[cpu]: Load Avalage (%)
ShortLegend[cpu]: %
Legend1[cpu]: 5 min CPU Load Avalage
Legend2[cpu]: 15 min CPU Load Avalage
LegendI[cpu]: 5min
LegendO[cpu]: 15min

### Free Memory
Target[mem]: 1.3.6.1.4.1.2021.4.6.0&1.3.6.1.4.1.2021.4.4.0:[email protected]
MaxBytes1[mem]: 64000
MaxBytes2[mem]: 256000
Title[mem]: Free Memory
PageTop[mem]: <h1>Free Memory</h1>
Options[mem]: gauge, absolute, growright
YTicsFactor[mem]: 0.001
Factor[mem]: 0.001
YLegend[mem]: Mem Free[MBytes]
ShortLegend[mem]: MBytes
Legend1[mem]: Real Memory
Legend2[mem]: Swap Memory
LegendI[mem]: Real
LegendO[mem]: Swap
参考文献:
google
google

PM-790PT(USBプリンタ)を使う

エプソンコーワ提供の「Photo Image Print System」を利用します。

ドライバと一緒に公開されている「readme790.txt」に書かれた手順通りにインストール・設定すれば、特に問題なく印刷可能になると思います。

関連事項?:
http://vinelinux.org/errata/25x/20031218-2.html

[windows95/98(SE)]fdiskが64GBを越えるHDDのサイズを誤認識する

以下を参照してください。

http://support.microsoft.com/default.aspx?scid=http://www.microsoft.com/japan/support/kb/articles/JP263/0/44.asp