OpenBlocksS(オープンブロックス)でサーバを作る

OpenblocksS上で色々なサーバを構築して遊んだ際のメモです。

※このページは自分が構築する際にエラーが出たときに苦労したので
 エラーが起きた状況もそのまま掲載しています。
 従って、これを見て構築する場合は最後まで呼んでから構築しないと
 とんでもない目に遭いますw

環境編
binutilsインストール/gccインストール/topインストール/viインストール/lynxインストール/
OpenSSHインストール/
WWWサーバ編
apacheインストール/Analogインストール/
Perl編
perlインストール/
NTPサーバ編
ntpインストール/
FTPサーバ編
ProFTPDインストール/
ルータ編
iptables設定/
DHCP編
dhcpインストール/
PROXY編
squidインストール/

環境編 -binutils-

OpenBlocksはmakeが通らないことが良くあります。
そこで、コンパイル環境を強化してみます。

関連サイト:
http://www.gnu.org/software/binutils/

###ソースをダウンロード###
wget http://ftp.gnu.org/gnu/binutils/binutils-2.16.tar.gz


###展開###
tar zxfv binutils-2.16.tar.gz

###移動###
cd binutils-2.16

###環境設定###
./configure

###コンパイル###
make

これもOpenBlocksSでは相当時間がかかりますZZZZZZzzzzzzzz.

###インストール###
make install

###旧バージョン/usr/bin/ldを見に行くので新バージョン/usr/local/bin/ldからシンボリックリンクを張る###
mv /usr/bin/ld /usr/bin/ld.org
ln -s /usr/local/bin/ld /usr/bin/ld


ld -v
GNU ld version 2.16


###旧バージョン/usr/bin/ldを見に行くので新バージョン/usr/local/bin/ldからシンボリックリンクを張る###
mv /usr/bin/as /usr/bin/as.org
ln -s /usr/local/bin/as /usr/bin/as


as -v
GNU assembler version 2.16 (powerpc-unknown-linux-gnu) using BFD version 2.16


###結局GCCのコンパイル時にうまくいかなかったので、/usr/powerpc-unknown-linux-gnu やら /usr/powerpc-obbs-linux-gnu に
  上と同じ様にシンボリックリンクをかけたwww;;###

上へ トップページへ

環境編 -gcc-

関連サイト:http://gcc.gnu.org/
     :http://sources.redhat.com/newlib/


Openblocksのような組み込み系のマシンでコンパイルするためのCライブラリ「newlib」と
言うものが必要なようなので、ダウンロード


###ソースをダウンロード###

wget ftp://sources.redhat.com/pub/newlib/newlib-1.13.0.tar.gz
wget ftp://ftp.ring.gr.jp/pub/GNU/gcc/gcc-3.4.4/gcc-3.4.4.tar.bz2


###展開###
tar zxfv newlib-1.13.0.tar.gz
bzcat gcc-3.4.4.tar.bz2 | tar xfv -

###移動###
cd gcc-3.4.4

うわっ、README空けたらHTML読めって・・・。

lynxをインストール


###環境設定###
ln -s ../newlib-1.13.0/newlib
./configure --with-newlib


###コンパイル###
make

gccがgccをコンパイルするってどんな気持ちだろw
予想通り時間がかかる・・・・・・・ZZZZZZZZZzzzzzzzzzz.

あまりにも長いのでプロセスの状態でも見てみる。
topコマンドが使えないのでインストール

別ターミナルでログインして

###インストール###
make install

こいつは、インストールにまで時間がかかる。
もし、これを見てやろうと思うなら、朝「make」->会社->晩「make install」にしたほうが良いね。

うぉぉぉぉぉぉーーーーーミスってるぅぅぅぅーーーーーーーー!!

make[1]: Leaving directory `/home/root/gcc-3.4.4/gcc'
make[1]: Entering directory `/home/root/gcc-3.4.4/fastjar'
make[1]: *** No rule to make target `install'. Stop.
make[1]: Leaving directory `/home/root/gcc-3.4.4/fastjar'
make: *** [install-fastjar] Error 2


fastjar とはjavaで使うアーカイブのあれですか・・・・・。
とくにいらねぇ;;

よく見るとgcc-3.4.4の中にfastjarがある。
単体でインストールしてみる

cd fastjar
./configure
make
make install


できた・・・・・、なんで失敗したん???

cd ..
make install


今度はこれ

/bin/sh: cd: powerpc-unknown-linux-gnu/libstdc++-v3: No such file or directory

cd libstdc++-v3/
./configure
configure: error: cannot find install-sh or install.sh in ./../..


だめだ・・・。
coreだけにしよう。

###ソースをダウンロード###
wget ftp://ftp.ring.gr.jp/pub/GNU/gcc/gcc-3.4.4/gcc-core-3.4.4.tar.bz2


###展開###
bzcat gcc-core-3.4.4.tar.bz2 | tar xfv -

###移動###
cd gcc-3.4.4


###環境設定###
ln -s ../newlib-1.13.0/newlib ../newlib-1.13.0/libgloss ../newlib-1.13.0/COPYING.NEWLIB ./
./configure --with-newlib --with-gnu-as --with-gnu-ld

↑ココで悪戦苦闘、次回はスムーズに行いたいです。
「newlibできないよ。」 見たいな事を言われたので不安


###コンパイル###
make

・・・・・・・待つ・・・・・・出かける・・・・・。

###インストール###
make install

できたのかな??

gcc -v
gcc version 2.95.3 20010315 (release)

前のままか・・・。

whereis gcc
gcc: /usr/bin/gcc /usr/local/bin/gcc /usr/local/lib/gcc /usr/man/man1/gcc.1


/usr/local/bin/gcc -v
Reading specs from /usr/local/lib/gcc/powerpc-unknown-linux-gnu/3.4.4/specs
Configured with: ./configure : (reconfigured) : (reconfigured) ./configure --prefix=/usr/powerpc-u
nknown-linux-gnu : (reconfigured) ./configure --prefix=/opt --target=powerpc-unknown-linux-gnu --wit
h-newlib : (reconfigured) ./configure --with-newlib : (reconfigured) ./configure --with-newlib --wit
h-gnu-as --with-gnu-ld
Thread model: posix
gcc version 3.4.4


おぉ、ここにあったか・・・。

mv /usr/bin/gcc /usr/bin/gcc.org
ln -s /usr/local/bin/gcc /usr/bin/gcc

gcc -v
Reading specs from /usr/local/lib/gcc/powerpc-unknown-linux-gnu/3.4.4/specs
Configured with: ./configure : (reconfigured) : (reconfigured) ./configure --prefix=/usr/powerpc-u
nknown-linux-gnu : (reconfigured) ./configure --prefix=/opt --target=powerpc-unknown-linux-gnu --wit
h-newlib : (reconfigured) ./configure --with-newlib : (reconfigured) ./configure --with-newlib --wit
h-gnu-as --with-gnu-ld
Thread model: posix
gcc version 3.4.4


こんなやり方じゃ、うまく入ってないと思うので、まねしないでねw。

上へ トップページへ

環境編 -glibc-

関連サイト:http://www.gnu.org/software/libc/libc.html
     :http://www.gnu.org/software/texinfo/
     :http://www.gnu.org/software/autoconf/
     :http://www.kernel.org/

これがないと、実際色々コンパイル出来るようにしたいと言う
当初の目的が果たせないので、入れてみる

linuxカーネルのヘッダが要るらしいので用意

###ソースをダウンロード###
wget http://www.kernel.org/pub/linux/kernel/v2.4/linux-2.4.29.tar.gz

###展開###

tar zxfv linux-2.4.29.tar.gz

###移動###
cd linux-2.4.29

###Makefileを編集###
#ARCH := $(shell uname -m | sed -e s/i.86/i386/ -e s/sun4u/sparc64/ -e s/arm.*/arm/ -e s/sa110/arm/)
ARCH := ppc

CROSS_COMPILE = powerpc-unknown-linux-

###ヘッダを使えるように###
make config
make dep


###ソースをダウンロード###
wget
http://ftp.gnu.org/pub/gnu/glibc/glibc-2.3.5.tar.gz

###展開###
tar zxfv
glibc-2.3.5.tar.gz

###移動###

cd glibc-2.3.5


INSTALLを読んで見たらこんなことが書いてあった↓

GNU `make' 3.79 or newer
GCC 3.2 or newer
GNU `binutils' 2.13 or later
GNU `texinfo' 3.12f
GNU `awk' 3.0, or some other POSIX awk
Perl 5
GNU `sed' 3.02 or newer
GNU `autoconf' 2.53 or higher
GNU `gettext' 0.10.36 or later

ハードル高!!

###現在の環境###
make 3.79
gcc 3.4.4
binutils 2.16
texinfo なし
awk 3.0.4
Perl 5.9.2
sed 3.03
autoconf 2.13
gettext 0.10.38
###############

おっ、結構クリアしてる

簡略化させてもらいます。
wget http://ftp.gnu.org/gnu/texinfo/texinfo-4.8.tar.gz
tar zxfv texinfo-4.8.tar.gz
./configure
make
make install
mv /usr/bin/texi2dvi /usr/bin/texi2dvi.org
ln -s /usr/local/bin/texi2dvi /usr/bin
mv /usr/bin/texindex /usr/bin/texindex.org
ln -s /usr/local/bin/texindex /usr/bin
ln -s /usr/local/bin/texi2pdf /usr/bin
texi2dvi -v
texi2dvi (GNU Texinfo 4.8) 1.34


wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.59.tar.gz
tar zxfv autoconf-2.59.tar.gz
cd autoconf-2.59
make
make install
mv /usr/bin/autoconf /usr/bin/autoconf.org
ln -s /usr/local/autoconf-2.59/bin/autoconf /usr/bin/
mv /usr/bin/autoheader /usr/bin/autoheader.org
ln -s /usr/local/autoconf-2.59/bin/autoheader /usr/bin/
ln -s /usr/local/autoconf-2.59/bin/autom4te /usr/bin/
mv /usr/bin/autoreconf /usr/bin/autoreconf.org
ln -s /usr/local/autoconf-2.59/bin/autoreconf /usr/bin/
ln -s /usr/local/autoconf-2.59/bin/autoscan /usr/bin/
mv /usr/bin/autoupdate /usr/bin/autoupdate.org
ln -s /usr/local/autoconf-2.59/bin/autoupdate /usr/bin/
mv /usr/bin/ifnames /usr/bin/ifnames.org
ln -s /usr/local/autoconf-2.59/bin/ifnames /usr/bin/
autoconf -V
autoconf (GNU Autoconf) 2.59
Written by David J. MacKenzie and Akim Demaille.


さて構築の続きをはじめます。

###glibcに追加で以下もダウンロード###
wget http://ftp.gnu.org/gnu/glibc/glibc-linuxthreads-2.3.5.tar.gz
tar zxfv glibc-linuxthreads-2.3.5.tar.gz
wget http://ftp.gnu.org/gnu/glibc/glibc-crypt-2.1.tar.gz
tar zxfv glibc-crypt-2.1.tar.gz


###環境設定###
./configure

###コンパイル###
make

###インストール###
make install


上へ トップページへ

環境編 -topコマンド-

関連サイト:http://procps.sourceforge.net/

OpenBlocksSにはtopコマンドがなかったのでインストールしよう。
procps と言うプロジェクトで「ps,top,vmstat,sysctl,w,kill,skill,nice,snice,pgrep,free,tload,uptime,watch」コマンドが
まとめて入っているようだ。

###ソースをダウンロード###
wget http://procps.sf.net/procps-3.2.5.tar.gz

###展開###
tar zxfv procps-3.2.5.tar.gz


###移動###

cd procps-3.2.5


###環境設定###
./configure

###コンパイル###
make

###インストール###
make install

上へ トップページへ

環境編 -vi-

関連サイト:http://www.vim.org/

僕はRedHat6ぐらいからLinuxを触り始めたんですが、OpenBlocksのviがなんか
使いにくい、INSERTモードでの移動が不便です。
これもアップグレードしちゃいましょう。


###ソースをダウンロード###
wget ftp://ftp.vim.org/pub/vim/unix/vim-6.3.tar.bz2

###展開###
bzcat vim-6.3.tar.bz2 | tar xfv -


###移動###
cd vim63


###環境設定###
気に入らないバージョンだったらやばいので、インストール先変更
./configure --prefix=/usr/local/vim63

###コンパイル###
make

###インストール###
make install


###旧バージョンをバックアップ###
mv /usr/bin/vi /usr/bin/vi.org

###新バージョンをシンボリックリンク###
ln -s /usr/local/vim63/bin/vim /usr/bin/vi

vi -v

VIM - Vi IMproved

version 6.3
by Bram Moolenaar et al.
Vim is open source and freely distributable

できた!!・・・・あれっ、使い勝手が変わってない。

###環境設定オプションを変更してみる
./configure --prefix=/usr/local/vim63-2 --with-features=big --enable-gui
make
make install
変わらず・・・。

なんと、viには各ユーザに設定ファイルが設置でき、viは起動時に設定ファイルを読み込み
色々カスタマイズできるようである。

まず行番号を表示してみます。

vi .vimrc
【.vimrc】の中身
set number

ZZで上書き終了
で、もっかい起動

vi .vimrc
【.vimrc】の中身
1 set number

出ましたw、色々設定して使いやすくしましょう。

1 set nocompatible <- vimをviと非互換にする
2 set number <- 行番号を表示する
3 syntax enable <- 構文に色やアンダーバーをつける
4 set encoding=japan <- 言語を日本語に設定
5 set fileencodings=iso-2002-jp,utf-8,euc-jp,cp932 <-左から順番に、エンコード文字を自動調査
6 set listchars=tab:>-,trail:- <- タブを「>----」で表示(しかし、表示されなかった;;)
7 set visualbell <- ビープ音を抑制
8 behave xterm <- なんかマウスが使えるようになるらしいがTera Term Proでは無理

上へ トップページへ

環境編 -lynx-

関連サイト:
http://lynx.browser.org/

gccインストール中に説明書がHTML形式だったんでインストール。
テキストブラウザってどういう風に見えるのか前から興味あったんですが
どんなもんでしょう。

###ソースをダウンロード###
wget http://lynx.isc.org/release/lynx2.8.5.tar.gz


###展開###
tar zxfv lynx2.8.5.tar.gz

###移動###
cd lynx2-8-5

###環境設定###
./configure

###コンパイル###
make

これまた、予想外に時間かかる・・・・・。

make install-help
make install-doc
make install

lynx gcc-3.4.4/INSTALL/index.html とかで見れる。

上へ トップページへ

環境編 -OpenSSH-

関連サイト:http://www.openssh.com/

実は、ずっと前にOpenSSHを導入しようと思ったんですが、どうもうまく
インストールできずに、2年間ぐらいただのTelnet接続を許可すると言う
暴挙に出ていたのですw

ちょっとは成長したのか試すために、再度試みてみます。

INSTALLをのぞいてみる
#########################################################################
You will need working installations of Zlib and OpenSSL.

Zlib 1.1.4 or 1.2.1.2 or greater (ealier 1.2.x versions have problems):
http://www.gzip.org/zlib/

OpenSSL 0.9.6 or greater:
http://www.openssl.org/
#########################################################################

と言うことで、まずZlibをインストールします。
なぜかミラーサイトに飛ばされました・・・http://www.gzip.org/zlib/ −>  http://www.zlib.net/

###ソースをダウンロード###
wget http://www.zlib.net/zlib-1.2.3.tar.gz

###展開###
tar zxfv zlib-1.2.3.tar.gz

###移動###
cd zlib-1.2.3.tar.gz

###コンパイル###
make

###インストール###
make install

スパッと終わりました!!
続いてOpenSSLをインストールします。

###ソースをダウンロード###
wget http://www.openssl.org/source/openssl-0.9.8.tar.gz

###展開###
tar zxfv openssl-0.9.8.tar.gz

###移動###
cd openssl-0.9.8

###コンパイル###
make
make test

###インストール###
make install

結構長かったなぁ・・・・。

さていよいよ、目的のOpenSSHです。

###ソースをダウンロード###
wget http://openssh.hostingzero.com/portable/openssh-4.2p1.tar.gz

###展開###
tar zxfv openssh-4.2p1.tar.gz

###移動###
cd openssh-4.2p1

###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/openssh-4.2p1

#########################################################################################
OpenSSH has been configured with the following options:
User binaries: /usr/local/openssh-4.2p1/bin
System binaries: /usr/local/openssh-4.2p1/sbin
Configuration files: /usr/local/openssh-4.2p1/etc
Askpass program: /usr/local/openssh-4.2p1/libexec/ssh-askpass
Manual pages: /usr/local/openssh-4.2p1/man/catX
PID file: /var/run
Privilege separation chroot path: /var/empty
sshd default user PATH: /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/openssh-4.2p1/bin
Manpage format: cat
PAM support: no
KerberosV support: no
Smartcard support: no
S/KEY support: no
TCP Wrappers support: no
MD5 password support: no
libedit support: no
IP address in $DISPLAY hack: no
Translate v4 in v6 hack: yes
BSD Auth support: no
Random number source: OpenSSL internal ONLY

Host: powerpc-unknown-linux-gnu
Compiler: gcc
Compiler flags: -g -O2 -Wall -Wpointer-arith -Wuninitialized -Wsign-compare -std=gnu99
Preprocessor flags: -I/usr/local/ssl/include
Linker flags: -L/usr/local/ssl/lib
Libraries: -lresolv -lcrypto -lutil -lz -lnsl -lcrypt
#########################################################################################

なんかnoが多すぎて気にくなわないw
INSTALLに書いてあるものはインストールしておこう。

###戻って###
cd ..

###ソースをダウンロード###
wget http://www.kernel.org/pub/linux/libs/pam/pre/library/Linux-PAM-0.80.tar.gz

###展開###
tar zxfv Linux-PAM-0.80.tar.gz

###移動###
cd Linux-PAM-0.80

###環境設定###
./configure

###コンパイル###
make

support.c: In function `_unix_run_helper_binary':
support.c:573: error: storage size of 'rlim' isn't known
support.c:584: warning: implicit declaration of function `getrlimit'
support.c:584: warning: nested extern declaration of `getrlimit'
support.c:584: error: `RLIMIT_NOFILE' undeclared (first use in this function)
support.c:584: error: (Each undeclared identifier is reported only once
support.c:584: error: for each function it appears in.)
support.c:573: warning: unused variable `rlim'
make[2]: *** [dynamic/support.o] Error 1
make[2]: Leaving directory `/home/root/Linux-PAM-0.80/modules/pam_unix'
make[1]: *** [all] Error 1
make[1]: Leaving directory `/home/root/Linux-PAM-0.80/modules'
make: *** [modules] Error 2


無理みたいです。

###移動###
cd openssh-4.2p1

###コンパイル###
make

###インストール###
make install

Generating public/private rsa1 key pair.
Generating public/private dsa key pair.
Generating public/private rsa key pair.
ここで結構待ちます・・・・。

/usr/local/openssh-4.2p1/sbin/sshd -t -f /usr/local/openssh-4.2p1/etc/sshd_config
Privilege separation user sshd does not exist
make: [check-config] Error 255 (ignored)

エラー出てしまいました。
どうもデフォルトでsshdをrootから分離する設定になっており
それを実現するためには、インストール前にsshdユーザを作成しておく必要があるようです。

###ユーザ追加###
useradd sshd

###もう一回インストール###
make install

###既存ファイルをバックアップ###
mv /usr/sbin/sshd /usr/sbin/sshd.org
mv /usr/bin/scp /usr/bin/scp.org
mv /usr/bin/sftp /usr/bin/sftp.org
mv /usr/bin/slogin /usr/bin/slogin.org
mv /usr/bin/ssh /usr/bin/ssh.org
mv /usr/bin/ssh-add /usr/bin/ssh-add.org
mv /usr/bin/ssh-agent /usr/bin/ssh-agent.org
mv /usr/bin/ssh-keygen /usr/bin/ssh-keygen.org
mv /usr/bin/ssh-keyscan /usr/bin/ssh-keyscan.org

mv /usr/local/bin/scp /usr/local/bin/scp.org
mv /usr/local/bin/sftp /usr/local/bin/sftp.org
mv /usr/local/bin/slogin /usr/local/bin/slogin.org
mv /usr/local/bin/ssh /usr/local/bin/ssh.org
mv /usr/local/bin/ssh-add /usr/local/bin/ssh-add.org
mv /usr/local/bin/ssh-agent /usr/local/bin/ssh-agent.org
mv /usr/local/bin/ssh-keygen /usr/local/bin/ssh-keygen.org
mv /usr/local/bin/ssh-keyscan /usr/local/bin/ssh-keyscan.org


###シンボリックリンクを張る###
ln -s /usr/local/openssh-4.2p1/sbin/sshd /usr/sbin/sshd
ln -s /usr/local/openssh-4.2p1/bin/scp /usr/bin/scp
ln -s /usr/local/openssh-4.2p1/bin/sftp /usr/bin/sftp
ln -s /usr/local/openssh-4.2p1/bin/slogin /usr/bin/slogin
ln -s /usr/local/openssh-4.2p1/bin/ssh /usr/bin/ssh
ln -s /usr/local/openssh-4.2p1/bin/ssh-add /usr/bin/ssh-add
ln -s /usr/local/openssh-4.2p1/bin/ssh-agent /usr/bin/ssh-agent
ln -s /usr/local/openssh-4.2p1/bin/ssh-keygen /usr/bin/ssh-keygen
ln -s /usr/local/openssh-4.2p1/bin/ssh-keyscan /usr/bin/ssh-keyscan

ln -s /usr/local/openssh-4.2p1/bin/scp /usr/local/bin/scp
ln -s /usr/local/openssh-4.2p1/bin/sftp /usr/local/bin/sftp
ln -s /usr/local/openssh-4.2p1/bin/slogin /usr/local/bin/slogin
ln -s /usr/local/openssh-4.2p1/bin/ssh /usr/local/bin/ssh
ln -s /usr/local/openssh-4.2p1/bin/ssh-add /usr/local/bin/ssh-add
ln -s /usr/local/openssh-4.2p1/bin/ssh-agent /usr/local/bin/ssh-agent
ln -s /usr/local/openssh-4.2p1/bin/ssh-keygen /usr/local/bin/ssh-keygen
ln -s /usr/local/openssh-4.2p1/bin/ssh-keyscan /usr/local/bin/ssh-keyscan

設定ファイルを変更
vi /usr/local/openssh-4.2p1/etc/sshd_config


デフォルトでは、公開鍵方式以外に通常のパスワード方式も有効になっていますので、無効に
#PasswordAuthentication yes
PasswordAuthentication no


ルートによるログインを禁止します、ルートの認証がネットワーク上に流れるのを防ぎます。
#PermitRootLogin yes
PermitRootLogin no


起動時に設定ファイルを読むように、変更します。
vi /etc/rc.d/rc.sysinit

if [ -f /usr/sbin/sshd ]; then
  echo "starting sshd..."
  #/usr/sbin/sshd
  /usr/sbin/sshd -f /usr/local/openssh-4.2p1/etc/sshd_config
fi


さて使ってみましょう。
まず、キーを作成したいユーザにログインします。
su hoge
ホームディレクトリに移動
cd ~
キー作成
ssh-keygen -t rsa1

Generating public/private rsa1 key pair.
Enter file in which to save the key (/home/hoge/.ssh/identity):

どこに保存する?(/home/hoge/.ssh/identity←ここで良い?):
このままでいいので、Enter

Enter passphrase (empty for no passphrase):

パスフレーズを入力します。

Enter same passphrase again:

もう一度パスフレーズを入力します。

Your identification has been saved in /home/hoge/.ssh/identity.
Your public key has been saved in /home/hoge/.ssh/identity.pub.

できました。

サーバ側のキーを使えるように名前を変更します。
cp -p .ssh/identity.pub .ssh/authorized_keys

ユーザ側のキーidentityは持ち歩きます(なくさないでね^^;)。
これで、ようやくファイヤーウォールのTelnetポートを防ぐことが出来ます^^

運用開始数時間後・・・・・・・・もうアタック来てるorz.

sshd_attacked.txt <− アタックログ

これじゃぁ、CPU動作が極めて遅いOpenBlock200Sでは、DoSアタックではないものまで、DoSになってしまう。
と言うわけで、ポートを変更してポート22へのアタックはファイヤーウォールに処理してもらうことにする。

#Port 22
Port 29xxxx  <−xは適当な数字に置き換えてください。



上へ トップページへ

WWWサーバ編 -apache-

関連サイト:
http://www.apache.org/

恒例のWWWを構築しましょう。

###ソースをダウンロード###
wget http://archive.apache.org/dist/httpd/httpd-2.0.52.tar.gz

###展開###
tar zxfv httpd-2.0.52.tar.gz

###移動###
cd httpd-2.0.52

###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/httpd-2.0.52

###コンパイル###
make

###インストール###
make install


【/httpd.conf】を変更

OpenBlocksSはメモリが少ないので、起動数を絞る

<IfModule prefork.c>
StartServers     2>
MinSpareServers   2>
MaxSpareServers   5>
MaxClients     50>
MaxRequestsPerChild 0>
</IfModule>

<IfModule worker.c>
StartServers     2
MaxClients     50
MinSpareThreads   5
MaxSpareThreads   25
ThreadsPerChild   10
MaxRequestsPerChild 0
</IfModule>

<IfModule perchild.c>
NumServers      5
StartThreads     2
MinSpareThreads   2
MaxSpareThreads   5
MaxThreadsPerChild 10
MaxRequestsPerChild 0
</IfModule>

自分のサーバが他に迷惑かけたときの為にServerAdminは必ずメールが届くようにしよう。 ServerAdmin root@localhost

サーバ名
ServerName hoge

デーモンのバージョンは変わってもコンテンツが変更することはめったに無いのでここ
DocumentRoot "/home/httpd/html"

下のどっちかでSSIを有効に。
#Options FollowSymLinks IncludesNOEXEC ExecCGI
Options FollowSymLinks Includes

ユーザ公開ディレクトリ
UserDir public_html

ユーザにもCGIを許可(危険なので自分でポリシーを決めて正しく設定が吉)
<Directory "/home/*/public_html/cgi-bin">
    AllowOverride None
    Options FollowSymLinks IncludesNOEXEC ExecCGI
    Order allow,deny
    Allow from all
</Directory>


「/」でアクセスしたときのデフォルト
DirectoryIndex index.html index.htm index.cgi index.html.var

「.htaccess」もあり(危険なので自分でポリシーを決めて正しく設定が吉)
AccessFileName .htaccess

ログでアクセスしてきたドメイン名が見れたらいいなぁって人は
HostnameLookups On

エラーログもデーモンのバージョンによって分ける理由も無いので
ErrorLog /var/log/httpd/error_log

アクセスログに余計なデータが混ざりすぎて、HTMLのアクセス状況が分かりにくいので
入らないアクセスを分離
SetEnvIf Request_URI default\.ida warmlog
SetEnvIf Request_URI Admin\.dll warmlog
SetEnvIf Request_URI \.exe warmlog
SetEnvIf Request_URI \.ini warmlog
SetEnvIf Request_URI \.gif warmlog
SetEnvIf Request_URI \.jpg warmlog
SetEnvIf Request_URI \.png warmlog
SetEnvIf Request_URI \.css warmlog
SetEnvIf Request_URI \.ico warmlog


CustomLog /var/log/httpd/access_log common env=!warmlog
CustomLog /var/log/httpd/warm_log common env=warmlog

ドメイン本体のcgi設定
<Directory "/home/httpd/cgi-bin">
  AllowOverride None
  Options None
  Order allow,deny
  Allow from all
</Directory>


日本語をAddLanguageの先頭に(なんとなく)
AddLanguage ja .ja

言語の選択順序???(適当)
LanguagePriority ja en da nl et fr de el it ko no pl pt pt-br ltz ca es sv tw

標準文字コードをoffに。
色々やったけど、ユーザが「META」で記述したものに沿うようにoffにした
#AddDefaultCharset ISO-8859-1
#AddDefaultCharset ISO-2022-JP
AddDefaultCharset off
#AddDefaultCharset UTF-8

文字コードを追加してみた。すでにあるかもしれないがISO-xxxx-xではわからないので・・・。
AddCharset UTF-8    .utf8
AddCharset shift_jis  .sjis
AddCharset EUC-JP    .euc-jp


CGIファイルの拡張子
AddHandler cgi-script .cgi

SSIが使えるファイル
AddType text/html .html
AddOutputFilter INCLUDES .html
<Files *.html>
    ForceType text/html
    SetOutputFilter INCLUDES
</Files>


こんなものでしょうか?
実際に設定するときは各ディレクティブの機能を良く調べて設定してください。

WWWの場合設定ファイルも世代を残したほうが助かることがあるので
/usr/local/httpd-2.0.52/bin/httpd -f /usr/local/httpd-2.0.52/conf/httpd.conf」でhttpd.confを指定して起動。

上へ トップページへ

WWWサーバ編 -analog-

関連サイト:http://www.analog.cx/

WWWサーバを構築したら、管理者はそのログを閲覧し、アクセス状況(負荷)や不都合が起こっていないか
監視しなければいけません。・・・・・と言うかどんなアクセス状況かみたいですね^^

そこで、Apacheログ解析ソフトanalogをインストールしてみます。

###ソースをダウンロード###
wget http://www.analog.cx/analog-6.0.tar.gz

###展開###
tar zxfv analog-6.0.tar.gz

###移動###
cd analog-6.0

###コンパイル###
あれっReadme.txtにdocs/indx.htmlを見ろって書いてあるから見たのに
インストール方法載ってない!?
う〜んMakefileはあるので、取り合えずmakeしてみるか・・・。
make


動いたみたい^^;

ls
Licence.txt README.txt analog-data.dtd analog.man anlgform.pl examples images logfile.log
Makefile analog analog.cfg anlgform.html docs how-to lang src

analogが出来ています。

###設定###
設定ファイルは「analog.cfg」これかな?
取り合えずバックアップ。
cp analog.cfg analog.org

ログファイルと出力レポートだけ設定して試してみます。
LOGFILE /home/root/analog-6.0/logfile.log
OUTFILE /home/httpd/html/Report.html


Apacheが使っているログを同時アクセスするのは怖いので、まずコピーしてきます。
cp /var/log/httpd/access_log ./logfile.log

###実行###
./analog

http://machtype.com/Report.html

あらまぁ、簡単に出来るのね^^
おっと、画像がでていない

cp -R images/ /home/httpd/html/

【analog.cfg】をちゃんと設定する

#サーバ名レポートのタイトルに使われる
HOSTNAME "[machtype.com]"

#拡張子を追加変更。圧縮ファイルを同じ出力でまとめ、大文字小文字も同じ出力でまとめます。
#ない拡張子があればそのつど追加
TYPEALIAS .gz "[Gzip compressed files]"
TYPEALIAS .tar.gz "[Compressed archives]"
TYPEALIAS .lzh "[Compressed archives]"
TYPEALIAS .JPG ".jpg [JPEG graphics]"
TYPEALIAS .MPG ".mpg [MPEG movie]"
TYPEALIAS .swf ".swf [Flash movie]"

#Webmailのログが大量に挙がって邪魔なので、除外
FILEEXCLUDE /cgi-bin/sqwebmail*

#出力言語を日本語のUTF8に
LANGUAGE JAPANESE-UTF
LANGFILE jpu.lng

#IPアドレスをドメインに変換
DNSFILE dnscache
DNSLOCKFILE dnscache.lock
DNS WRITE

#メモリ節約(obbs200なので^^;)
HOSTLOWMEM 2

再実行

./analog

まぁまぁいい感じになってきました。
しかしまだ警告が出ているので解決しましょう。

./analog: Warning R: Turning off empty Search Word Report
./analog: Warning R: Turning off empty Operating System Report

検索サイトの検索文字と、OSの種類がないよ!!と言われています。

apacheのログをデフォルト(標準)のままだと

218.222.142.238 - - [06/Sep/2004:20:04:44 +0900] "GET /~flesh_gogo/ HTTP/1.1" 200 1038

↑こういうログが出力されます。
OS名も、どこからリンクしてきたかもまったく分かりません。

【httpd.conf】の↓の部分の「common」を「combined」に変更しましょう。
CustomLog /var/log/httpd/access_log common env=!warmlog

旧ログと新ログが混ざっているとanalogは上のほうにある古いフォーマットを基準にするので
ログファイルを新しくしましょう。
mv /var/log/httpd/access_log /var/log/httpd/access_log.back
touch /var/log/httpd/access_log


apacheを再起動しないと、新しいログファイルに書き込まないので再起動してください。

準備は整いました。
Googleで検索してみましょう。



確認します。
vi /var/log/httpd/access_log

60.5.111.219.st.bbexcite.jp - - [25/Aug/2005:20:02:00 +0900] "GET /~flesh_gogo/ HTTP/1.1" 200 21415
"http://www.google.com/search?client=firefox-a&rls=org.mozilla%3Aja-JP%3Aofficial_s&hl=en&q=%E3%83%9
5%E3%83%AC%E3%83%83%E3%82%B7%E3%83%A5%E3%82%B4%E3%83%BC%E3%82%B4%E3%83%BC&btnG=Google+Search" "Mozil
la/5.0 (Windows; U; Windows NT 5.1; ja-JP; rv:1.7.10) Gecko/20050717 Firefox/1.0.6"

↑出てますね^^
cp /var/log/httpd/access_log ./logfile.log
./analog


で、レポートを見てみると「%E3%83%9
5%E3%83%AC%E3%83%83%E3%82%B7%E3%83%A5%E3%82%B4%E3%83%BC%E3%82%B4%E3%83%BC」
見事に文字化けします。

http://machtype.com/Report.html#searchw

なぜ化けてるかと言うと、URLは2バイト文字や記号に弱いので、16進数に変換して%をつけます。
これをURLエンコードと言うのですが、今回の場合それを戻す、URLデコードしなければなりません。

Perlが入っているのと、Perlしかしらないので、Perlで変換スクリプトを作りました。

【urldecode.cgi】
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ
#!/usr/bin/perl

use Jcode;

$boolDecodeFlg = 0;

open INFILE, "/home/httpd/html/Report.html";
 open OUTFILE, "> /home/httpd/html/ReportDeco.html";
 while(<INFILE>)
 {
  #print jcode($_)->euc;
  #print "デコードフラグ=" . $boolDecodeFlg;
  if(index(jcode($_)->euc, "name=\"searchw\"") > 0)
  {
   $boolDecodeFlg = 1;
  }
  elsif(index(jcode($_)->euc, "name=\"os\"") > 0)
  {
   $boolDecodeFlg = 0;
  }

  if($boolDecodeFlg eq 1)
  {
   $strResult = $_;
   $strResult =~ tr/+/ /;
   $strResult =~ s/%([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg;
   print OUTFILE $strResult;
  }
  else
  {
   print OUTFILE $_;
  }
 }
 close(OUTFILE);
close(INFILE);
ZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ

perl urldecode.cgi

http://machtype.com/ReportDeco.html#searchw


出来ました。

実行スクリプト
【analog.sh】
cp /var/log/httpd/access_log /home/root/analog-6.0/logfile.log
perl /home/root/analog-6.0/urldecode.cgi

実行権限与えて
chmod +x analog.sh

クローンにて1時間に1回実行(クーロンと呼ぶ人もいる「日本」)
crontab -e

0 * * * * /home/root/analog-6.0/analog.sh


上へ トップページへ

Perl編 -perl-

関連サイト:http://www.cpan.org/

信じられないことに、最後のほうでエディタが落ちたので、簡略化さしてもらいます。

###ソースをダウンロード###
wget http://search.cpan.org/CPAN/authors/id/R/RG/RGARCIA/perl-5.9.2.tar.gz

###展開###
tar zxfv perl-5.9.2.tar.gz

###

###移動###
cd perl-5.9.2

rm -f config.sh Policy.sh
mkdir /usr/local/perl-5.9.2
sh Configure -Dprefix=/usr/local/perl-5.9.2


質疑応答開始
最初「y」, そんなディレクトリけどいいの?の時「y」後はそのまま「Enter」キーです。
    ・
    ・
    ・

って簡略しすぎだろっ!!おいw
本当に疲れたんです、長々と書いていたんです、許してください。

make

質疑応答開始
そんなディレクトリけどいいの?の時「y」,gethostname()使う?の時「y」後はそのまま「Enter」キーです。
なんかmakeで./configureしてる気分になります(雑談)
すごい進んだ段階で[/usr/bin/less]ってなこと聞かれても分かりませんのでそのまま「Enter」
上で削除したconfig.sh Policy.shがここで作られ

Run make depend now? [y]

で、本当のmakeが始まるみたい?
何でこんなに複雑にしたんだろ??

make test
cflagsってもので、ちゃんとコンパイルできたかチェック(テスト)します。
OpenBlocksSでやるとこれが長い・・・・・ZZZZzzzzzz.

make install
これまた長い・・・・・ZZZZzzzzzz.
なんでこんなにマニュアルのインストールに時間がかかるんだろ??
HDDの回転が遅すぎるのかそれとも、マニュアルの展開配置の処理がややこしいのか・・・。

perl -v
This is perl, v5.9.1 built for ppc-linux


狙い通り旧バージョンのまま

名前を変更して旧バージョンをバックアップ
mv /usr/bin/perl /usr/bin/perl-5.9.1

シンボリックリンクをはる
ln -s /usr/local/perl-5.9.2/bin/perl5.9.2 /usr/bin/perl

確認
ls -la /usr/bin/perl
/usr/bin/perl -> /usr/local/perl-5.9.2/bin/perl


perl -v
This is perl, v5.9.2 built for ppc-linux


CGIも動かしてみる・・・・エラーorz

Can't locate Jcode.pm in @INC

どうやらモジュールが見えなくなった模様><

モジュールのパスを調べる
perl -le 'print for @INC'

/usr/local/perl-5.9.2/lib/5.9.2/ppc-linux
/usr/local/perl-5.9.2/lib/5.9.2 make/lib/site_perl/5.9.2/ppc-linux make/lib/site_perl/5.9.2 make/lib/site_perl
Jcode.pm探してみる
find / | grep Jcode.pm

/usr/local/lib/perl5/site_perl/5.9.1/ppc-linux/Jcode.pm


安易にコピーする
cp /usr/local/lib/perl5/site_perl/5.9.1/ppc-linux/Jcode.pm /usr/local/perl-5.9.2/lib/5.9.2//ppc-linux/

しかし今度はJcode.pmが参照しているモジュールが見当たらない・・・@INCの参照先を追加したほうがよさそうだ
    ・
    ・
    ・
う〜ん、Perlスクリプト内での追加やPerlの構築しなおしで可能らしい、もうちょっと旧モジュールディレクトリを調べてみる・・・。
あった!!Jcodeフォルダ^^

これをコピーして
cp -Rf /usr/local/lib/perl5/site_perl/5.9.1/ppc-linux/Jcode /usr/local/perl-5.9.2/lib/5.9.2/
再びCGI実行・・・・OK!

結論
Perl・モジュールのインストール先は計画的に!!

ついでに、Encodeの説明もしておきます。

どうやら、Perl本体に文字コード変換モジュールが組み込まれたようです。
それがEncodeモジュールです。

Jcode.pm自体もperl-5.8.1からは、Encodeのインターフェースとして動作するようなので
今後Encode.pmを使おうと思います。

実は、これを使ってEUC-JPをUTF8に変換しようとしたときに壁にぶち当たったので、使い方の説明をのせます。
まず、CPANに書かれているとおりやったのですが、エラーが出てしまいました。

「Wide character in print at ...」

どうやら、UTF8にはUTF8フラグなるものがあるらしく、Encodeで変換するとそれが付く。
しかし、そのフラグをそぎ落とすこともできる。

use Encode qw/encode decode/;

$strData = "あああ";
print decode("euc-jp", $strData);




Wide character in print at ...

euc-jpをutf8に変換した後、utf8をutf8にエンコードするとフラグが落ちるみたいです。

use Encode qw/encode decode/;

$strData = "あああ";
print encode("utf8", decode("euc-jp", $strData));


関数が二つ重なり、ややこしいので一つにまとめるのも手です。

use Encode qw/encode decode/;

$strData = "あああ";
print funcEUC2UTF8($strData);

sub funcEUC2UTF8
{##utf8フラグなるものを落とすために、変換が長くなるので、ここでまとめる
 my $strMoji;
 ($strMoji) = @_;

 return (encode("utf8", decode("euc-jp", $strMoji)));
}



上へ トップページへ

NTPサーバ編 -ntp-

関連サイト:
http://www.ntp.org/
     :http://www.jst.mfeed.ad.jp/
     :http://www.wakwak.com/

取り合えずNTPサーバを作って、福岡大学に集中するアクセスを回避してみよう。
サーバの構築を志す方は、ぜひ公開NTPサーバを立てて、アクセスの一点集中を防ぎましょう。

インターネットマルチフィードのNTPサーバ「ntp.jst.mfeed.ad.jp」を親サーバとする。
予備の為にWAKWAKのNTPサーバも参照

###ソースをダウンロード###
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.2.0.tar.gz
###展開###
tar zxfv ntp-4.2.0.tar.gz
###移動###
cd ntp-4.2.0
###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/ntp-4.2.0

###コンパイル###
make

むむっ!!opensslがないのでwarning連発!!
サーバ間接続にopensslを使っているのだろうか???

make[2]: *** [ntp_io.o] Error 1

make[1]: *** [install-recursive] Error 1
失敗orz
僕は中途半端Linux野郎なので、バージョンダウンしてみる。

###ソースをダウンロード###
wget http://www.eecis.udel.edu/~ntp/ntp_spool/ntp4/ntp-4.1/ntp-4.1.2.tar.gz
###展開###
tar zxfv ntp-4.1.2.tar.gz
###移動###
cd ntp-4.1.2
###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/ntp-4.1.2

###コンパイル###
make

###インストール###
make install

【/etc/ntp.conf】を作成

server ntp.jst.mfeed.ad.jp
server ntp1.wakwak.com
driftfile /var/log/ntp.drift


実行する。
/usr/local/ntp-4.1.2/bin/ntpd

確認する
ntpq -p

*ntp3.jst.mfeed. ote-ntp1.jpnap. 2 u  28  64  17  17.669  -3.389  1.435
+ntp1.wakwak.com ntp1.xephion.ne 3 u  25  64  17  17.159  -3.129  1.175


*は同期中 +はスタンバイ

*が無いときは少し待ってみる・・・・・・。
これで、できあがり。

上へ トップページへ

FTPサーバ編 -ProFTPD-

関連サイト:http://www.proftpd.org/

ずいぶん前「wu-ftpd」のセキュリティーアラートラッシュだった頃、ProFTPDが推奨されていたので
使っている。
2005年現在ProFTPDもセキュリティーアラートが上がりだしたようだが・・・。

しかし、新しいデーモン覚えるなら違う役割のデーモンを覚えたいのでこのままいく。

###ソースをダウンロード###
wget http://www.proftpd.de/files/proftpd-1.3.0rc1.tar.gz

###展開###
tar zxfv proftpd-1.3.0rc1.tar.gz

###移動###
cd proftpd-1.3.0rc1

###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/proftpd-1.3.0rc1

###コンパイル###
make

###インストール###
make install

###移動###
cd /usr/local/proftpd-1.3.0rc1/etc/

###初期設定ファイルバックアップ###
cp proftpd.conf proftpd.conf.org

【proftpd.conf 変更】
###ログイン時に表示する自サーバ名###
ServerName "ProFTPD HogeHoge Server"

###起動方法を単独常駐型に(メモリ節約の為inetdにしようとしたが、遅かったのでやめ)###
#ServerType inetd
ServerType standalone

###1.2の時にlsの付加オプションとしてaを追加していたが、このディレクティブが使えなくなったのでコメントアウト###
#LsDefaultOptions "-a"

TimesGMT off

###レジューム機能をオン###
AllowStoreRestart on
AllowRetrieveRestart on


###ログイン後のフォルダをUserDirに###
DefaultRoot ~/

###ホームページ公開専門にするときはこれ
#DefaultRoot ~/public_html

###Anonymous ユーザ拒否###
<Anonymous ~ftp>

 <Limit LOGIN>
  DenyAll
 </Limit LOGIN>



rc.localに
/usr/local/proftpd-1.3.0rc1/sbin/proftpd

こんなものでしょうか?
ん? binフォルダに「ftpdctl」というものがある。
実行してみよっと
./ftpdctl start
ftpdctl:
Controls support disabled.
Please recompile proftpd using --enable-ctrls


ふ〜ん、今度暇なときやってみよっと。

上へ トップページへ

ルータ編 -iptables-

BBルータが壊れたので、OpenBlocksをルータにする。
Webからの管理画面のマスカレード設定をするがうまくいかないので
iptablesを使うことにした。

プロバイダからはDHCPで割り振られるので指定をインターフェース「eth1」にする。
このOpenBlocksはHDDを搭載していないので 【/etc/rc.d/rc.sysinit を編集】(rc.localを編集しても消える)

基本設定ポリシー

iptables -P INPUT ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP 現在のフィルタをクリア

iptables -F FORWARD
iptables -F INPUT
iptables -F OUTPUT

INPUTルール
iptables -A INPUT -i eth1 -d 0.0.0.0/0 -p udp --dport 0:1023 -j DROP
iptables -A INPUT -i eth1 -d 0.0.0.0/0 -p tcp --dport 0:1023 -j DROP
iptables -A INPUT -i eth1 -p tcp --syn -j DROP
iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p icmp --icmp-type echo-request -j DROP
iptables -A INPUT -i eth1 -d 0.0.0.0/0 -p udp --dport 0:1023 -j DROP
iptables -A INPUT -i eth1 -d 0.0.0.0/0 -p tcp --dport 0:1023 -j DROP
iptables -A INPUT -i eth1 -p tcp --syn -j DROP
iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p icmp --icmp-type echo-request -j DROP

iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -i eth0 -j ACCEPT

上へ トップページへ

DHCP編 -dhcp-

DCHPでIPが割り振られると、ノートPCユーザやジャンクPCつくりまくりな人には とっても便利です。
しかし、いまいち魅力を感じなかった・・・・・が仕事の面で大活躍 人が次々入れ替わる会社、
社の方針により部署解体・創設が激しい会社 IPの変更をシステム管理者のみしかできない場合などに重宝します。

関連サイト:http://www.isc.org/

###ソースをダウンロード###
wget ftp://ftp.isc.org/isc/dhcp/dhcp-3.0.2.tar.gz

###展開###
tar zxfv dhcp-3.0.2.tar.gz

###移動###
cd dhcp-3.0.2

###READMEをみてもprefixの記述がないのでそのまま###
./configure

###コンパイル###
make

###インストール###
make install

###【/etc/dhcp.conf】を作成###

#サーバ名
server-identifier hogehoge.machtype.com;

#認証しない
not authoritative;

#DDNSに割り振ったアドレスを登録(登録しないときadd-hoc)
ddns-update-style interim;

#リリースタイム(ネットワーク構成が安定するまでは5分に1回再割り当て)
default-lease-time 300;   #5minute
max-lease-time   604800; #1week


#ログレベル
log-facility local7;

#自分のドメイン名
option domain-name "machtype.com";

#DNSサーバのプライマリとセカンダリをカンマ区切りで
option domain-name-servers hoge1.machtype.com, hoge2.machtype.com;

#NTPサーバ(対応しているPCは自動で時刻あわせなるのかな?
option ntp-servers ntp.machtype.com;

#時間を+9時間に
option time-offset 32400;

#DDNSサーバに対してNSUPDATEを行う
zone x.168.192.in-addr.arpa. {
  primary 192.168.x.x;
}

#DDNSサーバに対してNSUPDATEを行う
zone machtype.com. {
  primary 192.168.x.x;
}


#割り当てるネットワークを定義
subnet 192.168.x.0 netmask 255.255.255.0 {
     #割り当てる範囲
     range 192.168.x.240 192.168.x.250;
     #デフォルトゲートウェイ
     option routers 192.168.x.1;
     # ブロードキャストアドレス
     option broadcast-address 192.168.x.255;


     #PC毎に設定      
     host hoge-pc1 {
       #DNS登録ホスト名を設定
       option host-name "hoge-pc1.machtype.com";
       #任意MACアドレスには固定でIPを割り当て(FW超えの通信をするときIPが変わると困る時)
       hardware ethernet 08:00:37:**:**:**;
       fixed-address 192.168.x.15;

     }

     #ゲートウェイの切替や、切り分けをしたいときはこんなこともできる。
     host hoge-pc2 {
       option host-name "hoge-pc2.machtype.com";
       hardware ethernet 00:E0:18:**:**:**;
       fixed-address 192.168.x.66;
       #option routers 192.168.x.1;
       option routers 192.168.x.2;
     }
}



上へ トップページへ

PROXY編 -squid-

ネットサーフィンをしていて、重いサーバにあたったとき、戻るを押したときに
また長々とファイルを読み込んでいる。
こんなときにイライラしませんが?
そんなときはプライベートプロキシを作りましょう。

関連サイト:http://www.squid-cache.org

###ソースをダウンロード###
wget http://www.squid-cache.org/Versions/v2/2.5/squid-2.5.STABLE7.tar.gz

###展開###
tar zxfv squid-2.5.STABLE7.tar.gz

###移動###
cd squid-2.5.STABLE7

###新しいバージョンを上書きして、起動しなくなるのを防ぐためになるべく「prefix」は変更する###
./configure --prefix=/usr/local/squid-2.5

###コンパイル###
make

###インストール###
make install

###実行###
/usr/local/squid-2.5/sbin/squid
FATAL: Could not determine fully qualified hostname. Please set 'visible_hostname'

Squid Cache (Version 2.5.STABLE7): Terminated abnormally.
CPU Usage: 0.060 seconds = 0.050 user + 0.010 sys
Maximum Resident Size: 0 KB
Page faults with physical i/o: 260
Aborted

'visible_hostname'を設定しろって言われたので
/usr/local/squid-2.5/etc/squid.conf を編集】

visible_hostname proxy.machtype.com
↑DNSに登録されている自分のドメイン名を記述

デフォルトポートは3128ですが、3128と8080はよく使われていて、なんか嫌なので9981に変更
http_port 9981

###実行###
/usr/local/squid-2.5/sbin/squid

なんか突然終了している。
/var/log/message を見てみると
ディレクトリに権限与えろとか、「-z」オプションで、キャッシュディレクトリ構築しろとか言われているので

/usr/local/squid-2.5/sbin/squid -z

###実行###
/usr/local/squid-2.5/sbin/squid

よし、ブラウザのproxy設定をして、いざアクセス!!

あらっ「Access Denied」って、デフォルトセキュリティ高いのね^^;

/usr/local/squid-2.5/etc/squid.conf を編集】
http_access allow all

###実行###
/usr/local/squid-2.5/sbin/squid

やっといけたよ^^

上へ トップページへ