デビアンな生活 2012年02月

デビアンな生活

日本語コンソールベースのDebianTIPS集として始めたが、結局LXDEになってしまった。

squid3

Proxyサーバのsquidをsquid3にバージョンアップ。
/etc/squid3/squid.confを編集して、アクセス制限を解除。
acl localnet src 192.168.xx.xx/24
http_access allow localnet
このままでも使えるが、同じフォワードプロキシとして使用しているapache2に比較して、遅いような。
また、よく見ると起動時に警告が出ている。
Creating Squid HTTP Proxy 3.x cache structure ... (warning).
さらに/etc/squid3/squid.confを編集して
#cache_dir ufs /var/spool/squid3 100 16 256をコメントアウト
squid3を再起動して、ディスクキャッシュディレクトリを作成する。
ディレクトリを作成後に再び警告が出現。
WARNING cache_mem is larger than total cache space!
cache_memのdefaultは256MBなので、当然。
とりあえず、ハードディスクには困っていないので、disk spaceを1000MBに拡張する。
cache_dir ufs /var/spool/squid3 1000 16 256
再起動すると、apache2とそん色ないスピードとなった。
USENのスピードテストでは、約10Mbpsから28Mbpsに改善して、とりあえずハッピー。
maximum_object_sizeを大きくしても速度はあまり変わらず。
range_offset_limit -1 KBにすると先読みが効いて少し高速化。
via off, forwarded_for transparentを設定すると情報漏れが防げる。
このオプションで、header_accessの設定はいらなさそう。
これらの設定に、digest認証を追加して使用しているが、パスワードファイルは平文なのが寂しい。
スポンサーサイト

samba再び

カーネルを再構築したりすると、タイミングが変わるのか、sambaの起動順を後回しにしても、nmbdが正常に働かないようになった。
解決できないので、とりあえず、ネットワークがきちんと働くまで、ウェイトを入れるスクリプトをつくった。
etc/init.d/sambaを編集して、startセクションのnmbdの前で以下のスクリプトを呼び出すようにした。
#!/bin/sh
# wait for the network interface
CNT=0
while test $CNT -lt 10 ; do
ping -c 1 localhost >/dev/nul 2>&1
if test $? -eq 0 ; then
break
fi
CNT=`expr $CNT + 1`
sleep 1
done
exit 0

とりあえずは何とかなったが、根本的な解決が分かれば嬉しい。

ユーザ管理

useraddやadduserがあり混乱するが、汎用性があるのは動詞が後ろにつくタイプだが、便利なのは前につくタイプなので、新規ユーザを作るときは、adduserの方が便利。
suのwheel限定は、/etc/login.defsではなく、/etc/pam.d/suで行う。
auth required pam_wheel.soをコメントアウト。
# groupadd wheel
# gpasswd -a USER wheel
これで、suを使用できるユーザを制限できる。
usermodでもグループを追加できるが、まずidですべてのグループを確認して、補助グループをすべて同時に指定しないとダメ。
# id USER
# usermod -G windows,wheel USER

ダイナックDNS

ダイナミックDNSの更新に、noip2を使用していたが、squeezeではパッケージがなくなっているため、no-ipのサイトからダウンロードして、インストール。
ddns.nu用のddns3-clientは、listコマンドをサイトが受付ずtimeoutでエラーになるので、/etc/init.dと/etc/cron.dailyのスクリプトのlist部をコメントアウト。

grub

Grub 1.98になって、update-grubですべてのパーティションをスキャンしてくれる。
UIDDによって、アロケーションするので、HDDのデバイス名が変わっても問題ないが、
起動時にinitrdを使用しない場合は、UIDDが使用できない。
設定は、/etc/default/grubを編集することによって行う。
GRUB_DEFAULT=saved
GRUB_SAVEDEFALUT=true
前回、起動メニューをデフォルトにするためには、上記の2つが必要。
後者により、起動メニュー項目に、savedefaultが挿入される。

コンソール

まずは、カーネル再構築
make menuconfigで、フレームバッファを有効にする。
i915GMのドライバもありそうだが、X11を使用しないなら関係なさそうなので、intelfbを使用する。
ディスプレイのリフレッシュレートの標準が70Hzだとなぜか表示できないので、
/usr/src/linux/drivers/video/intelfb/intelfb.hを編集
PREFERED_MODE 1024x768-32@70 -> 60
あとは、通常通り
/etc/kernel-img.conf
/etc/keneel-pkg.conf

make-kpkg clean
make-kpkg kernel-image
cd ..
dpkg -i linux-xx.deb

sambaの設定

sambaの設定には悩んだ。
いままで同様に/etc/samba/smb.confを編集
[global]に文字コードなどを追加
dos charset = CP932
unix charset = UTF8
display charset = UTF8
interfaces = eth0
security = user

共有設定の追加
[share]
comment = Windows Public
path = /home/windows
browseable = yes
read only = no
create mask = 0660
directory mask = 0770
valid users = @windows
force group = windows

ユーザの追加
# adduser xx
# pdbedit -a xx

testparm /etc/samba/smb.confでrlimit-max: rlimit_max (1024) below minimum Windows limit (16384)のエラーが表示されるので、オープンファイルの上限を拡張する。
# ulimit -n 16384

これでエラーはなくなるので、ほんとはinitスクリプトに追加すべきと思うが、
/etc/security/limits.confを編集して、root - nofile 16384を追加

これでよいはずであるが、マシンの再起動後に動いていない。
sambaのチェックリストで調べても、原因がわからない。
とにかくなぜか、nmbdが正しく動いていない。
しかし、sambaを再起動すると、正常に動いている。
# nmblookup -S `hostname`
querying xx on xx.xx.xx.xx
name_query failed to find name xx
# /etc/init.d/samba restart
# nmblookup -S `hostname`
querying xx on xx.xx.xx.xx
xx.xx.xx.xx xx<00>
Looking up status on xx.xx.xx.xx

結局sambaの起動時にnetworkの準備ができていないためと勝手に結論づけた。
とりあえず、initスクリプトのLSBタグを変更し、起動順を変更した。
/etc/init.d/sambaを編集して、# Required-Start:タグの最後に$allを追加
# update-rc.d samba defaults

最近はinsservを使うらしい。

ネットワークの設定

基本はいままで通り。
squeezeのインストール段階で、eth1はDHCPにしているので、DHCPクライアントはisc-dhcp-clientがインストール済み。

/etc/network/interfacesを編集して、eth0にLANの設定を追加。
ネットワークやブロードキャストアドレスは不用
auto eth0
iface eth0 inet static
address 192.168.xx.xx
netmask 255.255.255.0

dnsmasqをインストールして、/etc/dnsmasq.confを編集。
interface=eth0
domain=localnet
dhcp-range=192.168.xx.xx,192.168.xx.xx,255.255.255.0,24h
dhcp-host=winname,192.168.xx.xx
dhcp-ignore=tag;!known

/etc/dhcp/dhclient.confで
pretend domain-name-servers 127.0.0.1;をコメントアウトして
resolv.confに自分自身を加えるように変更。
/etc/hostsにローカルなホスト名を追加

以上で、ネットワークインターフェースとDNSキャッシュとDHCPサーバがセット完了。

ついにsqueezeに移行

lennyのセキュリティアップデートも終わるかもしれないし、mediatombの0.12が使いたかったので、遅れること1年ついにsqueezeに移行した。
とりあえず、イントール用CDをダウンロードして、ネットワーク経由でインストール。
initrdなしのカーネルを再構築して、iptablesをセットして、sambaをセットして、とりあえず完成した。
いろいろ変わっているようなので、新規にインストールしたが、手がかかったので、lennyとのダブルブートにして正解であった。
ファイルサーバとしての速度はあまり変わらず、ルーターとしてのピーク速度は低下した。
しかし、アプリのバージョンアップで便利になった。
HDDをIDEからSATAに変更したら、BIOSのIDEアサインが変更されて、bootできず苦労した。
grubが1.98になって、HDDのアロケーションがUUIDでできるようになり、update-grubで全HDDとパーティションをスキャンするようになった。でもinitrdを使わないと、起動時はUIDDが使用できない。
fstabでは、UUIDが使えるので、ハードディスクの接続順が変わっても大丈夫。
apache2.2.16になって、なぜかproxyが通らなかったyahooのキャッシュにアクセスできるようになった。
squidもsquid3.1.6にバージョンアップしたが、なぜか、httpsにアクセスできなかった。
/var/log/squid3/cache.logをみると、comm_open: socket_failure: (97) Address family not supported by protocolとなっている。いろいろググった結果、Squidはipv4とipv6のhybrid socketを開くので、kernelでipv6を無効にしていたのが原因だったようです。
でも、digest認証をしていると、windows updateが通らないのは、イヤだ!
no-ipのIP更新パッケージがなくなっているので、別にダウンロードが必要だ。
結局、sambaの設定に一番苦労した。

FC2Ad