サーバを入れ替える。

自宅にあるこのwebサーバ(道楽サーバ?)ですが、Celeron300MHz/128MBで動いているマシンから、Pentium3 450MHz/320MBに入れ替えてみました。

HDDはそのまま引っこ抜いてなんとか動くだろう…ぐらいの甘い考えだったのですが、以下のような問題にぶち当たりました。

[/boot/loader.conf] hw.ata.ata_dma=”0″ ;HDDのDMA転送を無効にする。

…よくやるのです。。。これ。(上記を一時的に指示するには、起動する前に set hw.ata.ata_dma=0 をして boot でも可能です。)
ちなみに、FreeBSD4系の時は、起動時にHDDのDMA転送がうまくいかないとき、3回ほどDMA転送ができるか試した後に、PIO4とか切り変わるのですが、FreeBSD5系からは自分で明示的に指示しないとだめなようです。

なんだろうなぁ…。
あとは、ネットワークアダプタも若干変更があったため、インターフェースにあわせて書き換えます。

[/etc/rc.conf] #ifconfig_fxp0=”inet 192.168.1.1 netmask 255.255.255.0″ ifconfig_xl0=”inet 192.168.1.1 netmask 255.255.255.0″

Linuxと違って、1つのファイルにこうやって書けるのはありがたいなぁ、と思う今日この頃です。

で、今回なんでサーバを入れ替えたかといいますと、『MovableTypeでエントリーを投稿したとき、再構築がもうちょっと早くならないん?』というのがきっかけでして、ここに至る次第でございます。

しかし、入れ替えましたものの…気持ちホンワカ少しだけ早く…なったような気がします。。。

RTA55i VPNの注意事項

過去のメモです。

[拠点1]
LAN(Private) 192.168.10.0/24
LAN(global) 111.222.120.128/29 (129-134)
NATに使うアドレス 111.222.120.137

[拠点2]
LAN(Private) 192.168.12.0/24
LAN(global) 111.222.51.136/29 (137-142)
NATに使うアドレス 111.222.51.142

1側 
  LAN1          +---------+     LAN2(111.222.120.129) 
----------------|  RTA55i |-------------- 
192.168.10.0/24 +---------+ 111.222.120.128/29 
                                      | 
                                      | 
                                      |(ここをPPTPで接続) 
                                      | 
2側 
  LAN1          +---------+     LAN2(111.222.51.137) 
----------------|  RTA55i |-------------- 
192.168.12.0/24 +---------+ 111.222.51.136/29

※注意事項
まず、お互いのフィルタを必ず通すこと。
拠点1がサーバなら、拠点2の 111.222.51.136/29 をpassにする。
なぜなら、PPTP(VPN)クライアントはNATで使用するアドレスから接続しようとするから!
ip lan1 secondary のアドレスではない!!!

あとはwebからのかんたん設定で大丈夫。
なお、かんたん設定にて設定されると、configは以下のようになる。

(拠点1側)
ip lan1 address 192.168.10.1/24
ip lan1 secondary address 111.222.120.129/29
ip lan1 routing protocol none
ip lan1 rip listen none
ip lan1 secure filter in 100000 100001 100002 100003 100004 100005 100006 100007 100099
ip lan2 routing protocol none
ip lan2 rip listen none
ip route 192.168.12.0/24 gateway tunnel 1 metric 1
ip route default gateway pp 1 metric 1
nat descriptor type 1000 masquerade
nat descriptor address outer 1000 111.222.120.134
nat descriptor address inner 1000 192.168.10.1-192.168.10.254
nat descriptor masquerade static 1000 1 192.168.10.1 tcp 1723
nat descriptor masquerade static 1000 2 192.168.10.1 gre *

(拠点2側)
ip lan1 address 192.168.12.1/24
ip lan1 secondary address 111.222.51.137/29
ip lan1 routing protocol none
ip lan1 rip listen none
ip lan1 secure filter in 100000 100001 100002 100003 100004 100005 100006 100007 100099
ip lan2 routing protocol none
ip lan2 rip listen none
ip route default gateway pp 1 metric 1
ip route 192.168.10.0/24 gateway tunnel 1
nat descriptor type 1000 masquerade
nat descriptor address outer 1000 111.222.51.142
nat descriptor address inner 1000 192.168.12.1-192.168.12.254
nat descriptor masquerade static 1000 1 192.168.12.1 tcp 1723
nat descriptor masquerade static 1000 2 192.168.12.1 gre *

 

IP電話とPBX。

つい最近、我が家に050番号のIP電話を導入してみました。

会社の人と通話して…それで今のところ終わっていますが、なかなか便利な時代になったものです。

それと、OpenSource PBXというもので、Asteriskというものがありますが、まだ遊んでません…。
(SIPも立ててみたいので、partySIPも入れてみるものの、時間がなさげ…。)

プロバイダの変更。

今まで使用していたプロバイダを解約し、Interlinkの接続だけになったとたん、我が家のクライアントPCが一斉にネットへでれなくなりました。まいったなこりゃ。(泪

原因を探ってみると、2つありました。

1つはゲートウェイ。
今までデフォルトゲートウェイの設定は個別にしてました。

ip route default gateway pp 1 filter 501060 gateway pp 2 filter 501050 gateway pp 1
ip filter 501050 pass [サーバのIP] * * * *
ip filter 501060 pass [ルータのIP] * tcp,udp * smtp,pop3
※pp1がDTI、pp2がInterlink接続

こうすることで、「501060」つまりサーバ以外ははpp1、サーバはpp2を経由してネットに行きなさい、というようなルーティングができるようです。私がやってしまったのは、pp1を消しちゃってるのに、pp1へ行きなさいと言っている(矛盾した)設定でした。これでは意図したとおり動かないわけですね。。。

2つめはDNS。
我が家のサーバはDNSサーバも兼ねており、ルータでDNSポートへのNAT割り当てをしています。ということは、DNS要求は全てサーバでやらなくちゃいけないということ?
あと、今まではpp1でDNSを外へ聞くことができたからうまくいっていたのかも?なかなかむずかしいですね。
はいはいということで、我が家のクライアントは全て自前のDNSを参照するようにしてみました。

勉強になりますよ。もぅ。

chflagsでアキレス腱解消!!

前回、アキレス腱であるファイルを消してしまい、とんでもない事態に陥りましたが、そのアキレス腱を打破すべく以下のコマンドを使ってみました。

コマンド : chflags

フラグの設定 フラグの解除 フラグの内容 必要な権限
arch noarch archived root
opaque noopaque opaque 所有者またはroot
nodump nonodump nodump 所有者またはroot
sappnd nosappnd system append-only root
schg noschg system immutable root
sunlnk nosunlnk system undeletable root
uappnd nouappnd user append-only 所有者またはroot
uchg nouchg user immutable 所有者またはroot
uunlnk nouunlnk user undeletable 所有者またはroot

なんだかはよくわかりませんが、immutableは変更不可、undeletableは削除不可なのだそうです。

ということは…。

# chflags schg /libexec
# chflags schg /libexec/ld-elf.so.1
#
#
# mv ld-elf.so.1 ld-elf.so.1.1
mv: rename ld-elf.so.1 to ld-elf.so.1.1: Operation not permitted
#

とりあえず移動やリネームによるアキレス腱は消えました。
そして、肝心の削除ですが、

# rm ld-elf.so.1
override r-xr-xr-x root/wheel schg for ld-elf.so.1? y
rm: ld-elf.so.1: Operation not permitted

消せなくなりました。よかったー。(^^;

PostgreSQLのDBバックアップ&復旧方法

PostgresのDBをバックアップし、その後復旧する方法です。
(._.) φ メモメモ

バックアップ方法
(postgresqlは起動した状態にしておく)

% pgdumpall > backup.db

復旧方法
(postgresqlを起動し、initdbだけしておく)

% psql -e template1 < backup.db

復旧時の注意点は、やっぱり -e をつけないとだめなようです。

恐ろしきかなld-elf.so.1の罠。

なんとなく会社でFreeBSDにantivirをインストールしていたarakawaさんが、こんな事を言いました。

「ELF interpreter /libexec/ld-elf.so.1 not found」 が出るのですよ。

そういえばうちのサーバくんでも出たっけ。

そのときはとりあえずしのぎで、/usr/libexec/ld-elf.so.1 を /libexec/ld-elf.so.1 にコピーして終了。
その後なんとなく気持ち悪いので、以下のコマンドを入れてシンボリックリンクにでもしたいなぁ、と思いやってしまいました。

# cd /libexec
# mv ld-elf.so.1 ld-elf.so.1.orm (ormではなくorgのタイプミス…今後オルムファイルと呼びましょう。)

そして、シンボリックリンクでも張ろうと思った矢先、

# cd /
# mv libexec libexec.orm
ELF interpreter /libexec/ld-elf.so.1 not found
Aborted.

なぬ……………………………………………………。

これ、とんでもなく大事なファイルなんですね。(泪
調べたら、ld-elf.so.1さんはFreeBSDのバイナリを実行するのにとても大事そうなファイルなんだそうです。

おかげで、cpもlsもmvもなにもできないし、新たにsshでログインしてもまるでダメ。
あーあ、CD起動でなおさなくちゃいけないのかなぁとか思った矢先、そうだlinx_baseがたしか入っていたな、FreeBSDのELFバイナリじゃなければ…ということで、以下のコマンドを入れてみるわけです。

# /compat/linux/bin/bash
bash#

助かった…。ありがとうLinuxカーネルさん。あんたにちょっとだけ感謝するよ。

その後、慣れないbashでなんとかシンボリックリンクを作って逃げました。

うーん、これとても驚異ですね。。。まさしく「アキレス腱」です。

BIND8

昔の記事をblog側に持ってきて編集してみました。
書いた当初からずいぶん時間が経っているので、ちょっとおかしなところがあるかもしれません。

ドメインを取得・申請したので、ネームサーバを立ててみます。

今回はよく使われている(と思われる)bind8を、FreeBSDに入れてみましょう。
bind8のソースプログラムは、Internet Software Consortium (ISC)から持ってきます。

まずは、ダウンロードをして、展開、コンパイルまでしましょう。

> fetch ftp://ftp.isc.org/isc/bind/src/8.4.1/bind-src.tar.gz Receiving bind-src.tar.gz (1432277 bytes): 100%
> tar xzf bind-src.tar.gz
(カレントにsrcというディレクトリができます。)

> cd src
> make
Making /usr/home/kentaro/src/.systype
Making .settings
/usr/home/kentaro/src/include
…あとは気長に待ちましょう(^^;

コンパイルが無事完了したら、インストールします。この場合では、/etc/namedb以下にインストールされます。
(Linuxはどうなのでしょう…?/var/namedとか?)

>su Password:(rootになりましょう)
# make install
mkdir -p /usr/local/bind/include/arpa
set -x; for x in inet.h nameser.h nameser_compat.h; do install -c -m 444 $x /usr/local/bind/include/arpa/$x; done
+ install -c -m 444 inet.h /usr/local/bind/include/arpa/inet.h
……………

インストールが終わりましたら、設定ファイルを書きます。

[ /etc/namedb/named.conf ]options {
directory “/etc/namedb”;
};

zone “.” {
type hint;
file “named.root”;
};

zone “localhost” {
type master;
file “localhost”;
allow-query { any; };
};

zone “0.0.127.IN-ADDR.ARPA” {
type master;
file “localhost.rev”;
};

//
// kenti.jp
zone “kenti.jp” {
type master;
file “db/kenti.jp.zone”;
allow-update { none; };
};

設定で注意するのは、赤字にしたところです。/etc/namedbをホームとして、それぞれのファイルを参照する形になります。今回、kenti.jpはそこにディレクトリを作成し、kenti.jp.zoneというゾーンファイルを作成する形となりますので、さらに以下のファイルを作成しました。
(名前→IPを表す正引きファイル)

[ /etc/namedb/db/kenti.jp.zone ]$ORIGIN kenti.jp.
$TTL 3600
@ IN SOA ns.kenti.jp. postmaster.kenti.jp. (
2002120801 ;serial
10800 ;refresh
3600 ;retry
604800 ;expiry
86400 ) ;minimum
;
IN NS ns.kenti.jp.

;
IN MX 10 mx.kenti.jp.
* IN MX 10 mx.kenti.jp.
;
;
; KENTI ZONE
;
ns IN A 61.206.126.90
www IN A 61.206.126.90
mx IN A 61.206.126.90

なにやら不可思議な記述が書いてありますが、順に説明すると以下のようになります。

$ORIGIN
ゾーンセクション。この場合kenti.jp.となる。
$TTL
有効時間。秒単位で指定するので、この場合3600秒=1時間。
@
$ORIGINで指定されたもの(ここでは、kenti.jp.)を指す言葉になります。
SOA
SOAの後ろの@は、ns.kenti.jpのようにホスト名で書き換えます。次にあるpostmasterは、自分のメールアドレス(ユーザ名+ドメイン名)を指定します。何かあった場合、このアドレスに対して問い合わせがくるようになります。注意点は、メールアドレスの@を、「.」(ピリオド)に直して書くことです。
;
セミコロンの後は、コメントになります。
;serial
シリアルナンバー。内容を更新したら、かならずこの数値を変化させて、変更があったことを他DNSサーバへ知らせます。シリアルは、1,2,3…と適当な数字で増やしていってもいいのですが、上記のように日付+2桁の数字、で入れておくと管理しやすいです。
;refresh
リフレッシュ時間。このゾーンを確認する間隔を指定。この場合10800秒=180分=3時間。
;retry
上のリフレッシュ時間において、ゾーン確認に失敗した場合の再試行までの待ち時間。この場合3600秒=1時間。
;expiry
このファイルで定義されている内容の有効期限。この場合604800秒で7日(1週間)。
;minimum
ファイル自体の有効期限。この場合86400秒=24時間。
NS
NSレコード(ネームサーバ)の指定。
ここでは、一般的にこのDNSサーバの名前を指定しています。
MX
MXレコード(メールサーバ)の指定。
メールサーバの名前を指定します。なお、サーバ名の前にある「10」はメールサーバの優先度を指定しています。複数メールサーバがあれば、20,30といったように記述することも出来ます。
A
Aレコードの指定。
この場合、ns.kenti.jp.のIPアドレスはいくつか、を指定しています。これが設定できてないと、www.kenti.jpはどのIPなのか、といった参照が出来ません。
ほかに、mailにもAレコードが指定してあります。これがないと、MXで指定した名前のIPがわからなくなってしまうからです。
CNAME
今回は出てきませんが、別名という意味で使われます。
ftp IN CNAME www
とすれば、ftp.kenti.jpはwww.kenti.jpの別名だよ、と指定することが出来ます。
※トラブルの原因になるので、なるだけAレコードで書いた方が良いと思われます。特に、MXはCNAMEで書きますとトラブルの元になります。
PTR
これも今回は出てきません。IPから名前を表す、逆引きに使用するレコードです。
61.206.126.90 IN PTR ns.kenti.jp.
という具合で書きます。
kenti.jpで使用しているIPは、プロバイダから既に逆引きの名前が割り当てられており、変更することが出来ないので逆引きのゾーンは作成しませんでした。

設定ファイルが出来たので、namedを起動します。

# /usr/sbin/ndc start
new pid is 708

起動後、/var/log/messageなどを見て、エラーが出てないことを確認しましょう。(^_^)v
動いているようであれば、以下のように名前が解決できるようになります。

# nslookup www.kenti.jp Server: localhost Address: 127.0.0.1Name: www.kenti.jp
Address: 61.206.126.90

また、OS起動時(この場合は、FreeBSD)にnamedを起動させるようにするには、以下の方法があります。

[ /etc/rc.conf ] 以下の2行を追加するnamed_enable=”YES”
named_program=”/usr/sbin/named”

Linuxのような起動方法として、FreeBSDでは以下のスクリプトを書いてあげれば自動起動してくれます。
(パーミッションの設定は755としておくといいのかな…。)

[ /usr/local/etc/rc.d/named ] 新規に作成します#!/bin/sh

case “$1” in

start)
if [ -x /usr/sbin/named ]; then
echo named
/usr/sbin/ndc start
fi
;;
stop)
/usr/sbin/ndc stop
;;
*)
echo “$0 start|stop”
;;
esac

とりあえず、そんなこんなで一段落といったところでしょうか。(^^;

ネットワーク管理・サーバ管理はどうあるべきか。

職場から家に帰ってくると、なんともPCの電源をいれるのがかったるい今日この頃です。

なんとも最近は、仕事にたいして憂鬱というかなんというか、すべてに対してかったるいです(笑)。
私のやっている仕事はネットワーク管理・サーバ管理なのですが、そもそも本来どういう仕事なのでしょうか。

(今日はちょっと愚痴っぽい表記です。笑)

ネットワーク管理者の仕事として、一般的には

・ネットワークトラフィックの監視

・ネットワーク機器状態の把握、設定情報の把握

・クライアントに対する接続設定などのサポート

・情報セキュリティへの機敏な対応

というのがあげられるだろうと思います。
一方、サーバ管理者の仕事として、

・サーバ動作の監視

・ハッキング、クラック、ウィルス対策

・サーバ内におけるユーザ情報の把握

・サーバ内で動作しているソフトウェアの把握

・クライアントへの利用方法などの徹底

等があげられると思います。なんでこんなことを今自分が書いているのかというと、本来のネットワーク管理・サーバ管理とはかけ離れた業務をしていたり、いろんな事情もありますが前任者からの引き継ぎもうまく出来ていなかったり、いつのまにか面倒なことに巻き込まれていたり(笑)することが多いなぁ…と思うのです。
(まぁ、それはそれで退屈するよりも幸せですが。)

話はそれますが、ある案件を処理するのに、

・客先への訪問

・提案してみる

・見積をだす

・注文を受ける

・場合によっては外注処理をする

・クライアント対応
・請求書を出す

・入金の確認をする

・場合によっては集金してくる

・外注したものの支払い手続きを済ます

というような内容が必要になってくると思います。また、これは日頃から考えなくちゃいけないのですが、どうやったら顧客拡大ができるだとか、売り上げを伸ばそうだとか、そういう問題もあります。

正直、なんだか自分は一人で会社をやっているような認識をしてしまうので、最近はとても疲れたような気がします…。

そんなわけで、今日はもう寝まーす。

FreeBSD5.3Rを入れてみる。その2(Apache2とPHP5)

Apache2をインストールしたときの記録です。

# ./configure –enable-so –enable-ssl

あとはmakeして普通にインストール。

次は、PHP5をインストールしたときの記録です。
(pgsqlは既に入れたものとします。)

./configure \
–with-apxs2=/usr/local/apache2/bin/apxs \
–with-xml –enable-mbstr-enc-trans –enable-mbstring \
–with-pgsql=/usr/local/pgsql –with-tsrm-pth

ここで、./configure時に、XML2がないぞとかエラーが出まして、進めませんでした。
いろいろ調べた結果、libxml2とlibxsltが必要です。

私の場合、

/usr/ports/textproc/libxml
/usr/ports/textproc/libxslt

を入れて進めてしまいました。いいのかなぁ(^^;