ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
検索
オンライン状況
33 人のユーザが現在オンラインです。 (1 人のユーザが ニュース を参照しています。)

登録ユーザ: 0
ゲスト: 33

もっと...
投稿者: f-otake 投稿日時: 2017-11-3 1:53:18 (1153 ヒット)
Linux (サーバー制作)

ここにあるように、不注意(部品の問題も多々あり)でホストが壊れたので、早速バックアップ用のホストを作って行きますが、オリジナルのホストはBACULAでバックアップを取っているので、最初からインストールするのではなく、baculaからリストアーします。
実はもっと簡単な方法があります。運用中のホストを停止出来れば、サブホストに付けるSSD(HDD)をUSBでアタッチしてddコマンドでディスクを丸ごとコピーしてしまえばよい(私は250GBのSSDなので結構時間がかかるが)。あるいはサブホストだけならクローンを作る手もある(サブホストの停止が必要だが)ただ、ダブリが出てくるのでその対処が必要。
まずは、バックアップ用のホストに使用するSSDを初期化します。
このSSDを運用中のホストにUSBで継ぎ、
# parted /dev/sdc
(私の場合はsdcだが、皆さんの環境で違う)。
今ある領域を全部消す(rm 領域ナンバー)
その後、今運用中のホストと同じ順序、サイズで、新規にパーティションを作る(mkpart、詳しくはgoogle先生に聞いて)
その後、sdc1をフォーマット
# mkfs.ext4 /dev/sdc1
私はさらに領域2と3もあり、ここはlvmにしているが、この辺はCentOSが動いてから手当てする
ここで出来たsdc1をマウントする
# mount /dev/sdc1 /test1
test1は以前に作成済み。また、親ホストは /bootも含め すべてsda1(この場合はsdc1)にしている
ここでbaculaの出番、bacula-dir.confにリストアーする場所を指定するが、今回はこれを変更し、
restore jobに where = /test1 とし、baculaを再起動してからリストアをする。しばらくすると終わるので、
# umount /test1
で取り外し、バックアップ用のサーバーに接続する。
この辺の作業はここを参照してください
****ここからは バックアップ用サーバーでの作業****
まずはブートしてみるが、うんでもなければすんでもない、多分MBRがチャンとリストアーされていないと思う。
なので、CentOS 6.8 (実際は6.9になっているが)のインストール CDからブートし、LINUX RESUCURE を選ぶ、言語をJapaneseにしてキーボードをjp106を選び、
ネットワーク設定は不要で、続いて、続行(Contiue)を選ぶとSHELLが表示されるので
sda1は /mnt/sysimage にマウントされているので、これを / のするため
bash-4.1# chroot /mnt/sysimage
GRUBを走らす
bash-4.1# grub
rootの指定
grub> root=(hd0,0)
MBRを修正する(ここに詳しくある
grub> install (hd0,0)/boot/grub/stage1 d (hd0) (hd0,0)/boot/grub/stage2 p (hd0,0)/boot/grub/grub.conf
grub> quit
でGRUBを終了し、
bash-4.1# exit
で再起動する
無事、起動するがエラーがいっぱいだー。これはコピーをしているので、hostname, 固定IPアドレス等などがダブっているからだ
38:バックアップ用のホストを作り直す(2)に続く


投稿者: f-otake 投稿日時: 2016-6-14 11:43:31 (7144 ヒット)
Linux (サーバー制作)

KVMを使用して普通にサブホストを作ると、領域1(イメージファイルやLVM)の中にさらに領域2を作って(複数の領域を作れるようにする為?、ルートやスワップなどの複数の領域為?)しまいます。画像0
ここで一番問題になるのはバックアップの方法です。私はbaculaを使用し、サブホストをバックアップしていますが、これでは完全なバックアップになりません。というのもこのバックアップは領域1の中の領域2をバックアップしているので、baculaでリストアしてもそのリストアしたデーター(領域2)をさらに領域1の中に入れ込まなければ、完全なサブホストのバックアップになりません。私はその方法が解りません(ddコマンドで作れそうですが??)
なので、一度作成したサブホストを、カーネルイメージから直接起動する様に変更しました。これでbaculaでリストアされたサブホストもそのままリストアできます。(領域の中に入れ込まなくてもよい)
只,わたしはKVMを正式に勉強したわけではなく、又、真剣にググった訳でもないので、かなりいい加減です(でもちゃんと動いています)
その過程の中で疑問に思ったのが、
仮想マシンマネージャーで、サブホストを指定し、開くアイコンをクリックし、開いたウィンドウの電球アイコンをクリックし、左ペインの Boot Options をクリックし、さらに右ペインで、Direct kernel boot をクリックすると展開された中に Kernel path:、initrd path:、kernel auguments: があり、最初の二つには Browse アイコンがあります。画面1。そこで、それらを選べますが、
ここで問題!この時点での作業はメインのOSでしているので、ブラウズ出来るのはメインの中だけです(サブホストはマウントされてない)でもサブホストの指定だよなー?
と言う訳で実験
1:メインのホストとサブホストに同じバージョンを入れる
 例:Kernel path: /boot/vmlinuz-2.6.32-642.el6.x86_64
   Initrd path: /boot/initramfs-2.6.32-642.el6.x86_64.img
   Kernel arguments: root=/dev/vda
 ブートOK
2:メインのホストにはあるがサブホストにはない場合
 例:Kernel path: /boot/vmlinuz-2.6.32-573.el6.x86_64
   Initrd path: /boot/initramfs-2.6.32-573.el6.x86_64.img
   Kernel arguments: root=/dev/vda
 途中で could not load /lib/modules/2.6.32-573.el6.x86_64/modules.dep: No such file or directory
 と表示されログイン出来る状態だが、まともに動かない筈。どういう事か、最初のブートではメインの/bootを見て,途中からサブホストの/libを見にいくが、サブホストにはないのでエラーとなっている。

3:サブホストにはあるがメインのホストにはない場合
 例:Kernel path: /boot/vmlinuz-2.6.32-642.1.1.el6.x86_64
   Initrd path: /boot/initramfs-2.6.32-642.1.1.el6.x86_64.img
   Kernel arguments: root=/dev/vda
 ブートすらしない。
 Errot starting domain: unable to set user and group to '107:107' on '/boot/vmlinuz-2.6.32-642.1.1.el6.x86_64': No such directory
 と表示されブートが止まる。

ということは最初はメインのOSの /bootを見て、途中からサブホストを見ていることになると思う。
と言う訳でここから作業
まず、サブホストのvdaに指定される領域(私はLVM)をddコマンドでバックアップ
# dd if=vdaに指定されている領域 of=バックアップを保存する領域
サブホストのルート領域をマウントしますが、前に触れたようにこの中にさらに領域を作っているので
# lesetup -f
で使える最初のloop番号を調べる。何もしていなければloop0の筈
# losetup /dev/loop0 ddでバックアップされた領域
# kpartx -a /dev/loop0
# ls /dev/mapper
で展開された領域を調べる、loop0p1やloop0p2 等がある筈、私はここにはルート領域のみしか作っておらず、スワップや他の領域は別のlvでマウントしているので、あるのはloop0p1だけ
# mount /dev/mapper/loop0p1 /test1 ← 私はテスト用にこのdirectoryを作っている
これでサブホストのルート領域が/test1にマウントされた。私は/bootは別の領域にせず全部ここに入っている。
次にサブホストに使っている領域をフォーマット(私はLVM)
# mkfs.ext4 /dev/VG名/LV名
これで、このままではサブホストを二度と起動で出来ない!
# mount /dev/VG名/LV名 /test2 ← 私はテスト用にこのdirectoryを作っている
# cd /test1
# cp -pr ./ /test2
これで、しばらくするとコピーが終わるので、後処理
# cd
# umount /test1
# umount /test2
# kpartx -d /dev/loop0
# losetup -d /dev/loop0
これで準備が出来たので、前項の 1:メインのホストとサブホストに同じバージョンを入れる と同じように(もちろんカーネルバージョン等は自分にあわせる)Direct kernel boot を設定する。
尚、Kernel arguments: にvda になっているのは、DISK1 に VirtIOを指定している為、ここがIDEだと違うはず、/etc/libvirt/qemu/サブホストxml を見れば指定が解る。
これでサブホストを起動すれば問題ない。
2016ー6ー16追記:大嘘を言っていました。このままでは起動できません。と言うのもフォーマットをするとディスクのUUIDが変わり、grub.confにあるブートdiskが古いUUIDのままだからです。と言う訳でgrub.confを修正しますが、この際UUIDでなく、ディスク(vda)の指定にします。と言うのもサブホストのルートのディスクはVirtIOを使用し、素直に作ると、必ずvda になるからです。ですので再度マウントし、編集します。
# mount /dev/VG名/LV名 /test2
# gedit /test2/boot/grub/grub.conf

抜粋
default=0
timeout=5
splashimage=(hd0,0)/boot/grub/splash.xpm.gz
hiddenmenu
title CentOS (2.6.32-642.1.1.el6.x86_64)
 	root (hd0,0)
	kernel /boot/vmlinuz-2.6.32-642.1.1.el6.x86_64 ro 本当はここから次のタイトルの前までは1行
    root=UUID=467a31a2-d8b5-4b05-8878-0d65d0015be4/dev/vda ここを変更する
        rd_NO_LUKS LANG=ja_JP.UTF-8 rd_NO_MD SYSFONT=latarcyrheb-sun16
        crashkernel=auto  KEYBOARDTYPE=pc KEYTABLE=jp106 rd_NO_LVM rd_NO_DM rhgb quiet
        enforcing=0 	initrd /boot/initramfs-2.6.32-642.1.1.el6.x86_64.img
title CentOS (2.6.32-573.26.1.el6.x86_64)
以下省略、注:root=の指定は他にもあるので全部変更する

もう一つ変更しなくてはならないファイルがある。fstabです。
どうも私はディスクの指定にUUIDを使うのに抵抗がある。確かにsda1等を使うと、認識の順序が変更になると問題がありますが、LVMを使えばこの問題はなくなりますし、
今回の様に仮想化もvdaを使えばいいのです。ともかくfstabを修正
# gedit /test2/etc/fstab
抜粋
UUID=467a31a2-d8b5-4b05-8878-0d65d0015be4/dev/vda     /	ext4    defaults        1 1 UUID=...... を /dev/vda に修正
tmpfs                   /dev/shm                tmpfs   defaults        0 0
そして保存後、umountし、起動すればよい

PS:/etc/libvirt/qemu にある .xmlファイルの抜粋を参考の為に下記に示します。
普通にサブホストを作った時
  <os>
     <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
     <boot dev='hd'/>
   </os>

カーネルイメージからサブホストを直接起動する設定の時
  <os>
     <type arch='x86_64' machine='rhel6.5.0'>hvm</type>
     <kernel>/boot/vmlinuz-2.6.32-642.el6.x86_64</kernel>
     <initrd>/boot/initramfs-2.6.32-642.el6.x86_64.img</initrd>
     <cmdline>root=/dev/vda</cmdline>
     <boot dev='hd'/>
   </os>
この様にDirect kernel bootで指定した"kernel, initrd, kernel argumenyts(cmdline)"が追加されています。
2016ー6ー16追記:今日sambaの入っているサブホストを同じようにやっている時、cp -pr ./ /test2 の所で、
cp: preserving permissions for `/test2/./var/lib/samba/sysvol/kinryokai.net/scripts': サポートされていない操作です
cp: preserving permissions for `/test2/./var/lib/samba/sysvol/kinryokai.net/Policies/
{31B2F340-016D-11D2-945F-00C04FB984F9}/USER': サポートされていない操作です 本当はこの行は上の行と同じ行です。
以下省略
とエラーがいっぱい出ていた。エラーの所を見ると
# ls -la /test1/var/lib/samba/sysvol/
合計 20
drwxr-xr-x+ 3 root    root    4096 12月 17 17:52 2015 .
drwxr-xr-x. 7 root    root    4096  1月 30 22:18 2015 ..
drwxrwx---+ 4 3000017 3000000 4096  6月 27 20:50 2014 kinryokai.net
ちょっと見にくいが + が付いているのでACLが効いているので、エラーになった見たい。でも /test1 と /test2 を比較しても、パーミッション、オーナー、ファイルの数やサイズを見てもまったく同じであるので正しくコピーされている見たい。それでこのサブホストを起動しWindowsからファイルサーバー(アクティブディレクトリーを使用したsamba)をテストしたが問題ない見たい。
でもコピーされた方にはACLの設定がなされてない見たい。これは問題、色々ググったらcpはACLに対応していないそう。Starと言うのが対応しているみたいなので、近日この項に結果を書きます。
2016-6-19追記:色々トライしてみましたが、getfact, setfaclを使用するのが簡単だった
まずはオリジナルのvdaをマウントするが、例によって領域の中に領域なので
# losetup /dev/loop0 ddでバックアップされた領域
# kpartx -a /dev/loop0
でloop0に本来ルート領域をマウントする(画像0の領域2)
# ls /dev/mapper/
でマッパーを見るとloop0p1等がある。
# mount /dev/mapper/loop0p1 /test1
で/test1にマウントして、
# cd /test1/var/lib/samba/
で該当個所に移動
# getfacl -R * > /root/acl-backup
でACLをバックアップ。
次に使用しているvdaをマウントしますが、ACLの設定をするので
# mount -o rw,acl /dev/VG名/LV名 /test2 私はLVMを使用
でオプションで ACLなどを指定し/test2にマウント
# cd /test2/var/lib/samba/
で該当個所に移動
# setfacl --restore=/root/acl-backup
でリストアする。
ACLの確認
# ls -la sysvol/kinryokai.net/
合計 32
drwxrwx---+ 4 3000017 3000000 4096  6月 27 20:50 2014 .
drwxr-xr-x+ 3 root    root    4096 12月 17 17:52 2015 ..
drwxrwx---+ 4 3000017 3000000 4096  6月 27 20:50 2014 Policies
drwxrwx---+ 2 3000017 3000000 4096  6月 27 20:50 2014 scripts

他のディレクトリーも調べたがOKだった。
あと、ACLの設定をしたので fstabを変更する(変更しないで起動するとACLの設定が反映されていなかった)
でも、領域の中に領域を作った(つまりオリジナル)vdaで起動すると fstab にはACLの設定が無いが、ACLの設定は反映している!
何で!!ともかくfstabの変更
# gedit /test2/etc/fstab
抜粋
/dev/vda   /          ext4       defaults,acl   0 0 ← ,aclを追記
保存後、後始末
# cd
# umount /test1
# umount /test2
# kpartx -d /dev/loop0
# losetup -d /dev/loop0
でもって、起動すればOK
2016-6-21追記
色々調べると、現在は tarも--aclオプションがあり対応しているようですので、その方法
サブホストの領域をフォーマットするまでは同じですが、これをマウントする所からが違います。
# mount -o rw,acl /dev/VG名/LV名 /test2
でオプションで ACLなどを指定し/test2にマウントしておきます。
次に/test1にマウントしたルート領域を tarで保存します。
# cd /test1
# tar --acls -cvf /tmp/subroot.tar ./
この様に --aclsオプションを付けて保存します。私はこのtarファイルが7GB弱になりましたので、保存場所(この場合は/tmp)の空き容量に注意してください。
これを復元します。
# cd /test2
2018-9-5追記:
今日 bacula でバックアップしたサブホストのルートファイルシステムをリストアして boot すると
according to mtab, /dev/vda is already mounted on sysroot と表示されカーネルパニックで起動できない。google先生に聞くと
ここに回答があった
/proc と /sys が無いのが原因。考えてみれば、この二つのディレクトリーはバックアップしていない、だがディレクトリー自体は作っておかないといけない。
これらを作成後は起動できたが、mysqld のスタートに失敗する。ログを見ると /tmp にディレクトリーを作ろうとして失敗している。/tmp のオーナーは root でアトリビュートは755でmysqld はrootメンバーでは無いので、少しセキュリティー的には弱くなるが777にしちゃえ。


投稿者: f-otake 投稿日時: 2016-4-28 5:01:13 (2093 ヒット)
Linux (サーバー制作)

今のサーバーはバックアップも取っていますが、まったく同じサーバーをもう一台製作し、rsyncで同期をして、何かあればすぐに予備サーバーに切り替えられる様にします。ただし予備のサーバーは普段は電源を落としておき、一日1回タイマーで立ち上げ同期を取ってシャットダウンします。
方針:予備のサーバーは一日1回UEFI(BIOS)のタイマーを使い立ち上げて、その後シャットダウンをする(省エネ化)
問題:予備のサーバーをシャットダウンするタイミングはどうするか?
 現状では名案が無いので、時間を見計らってシャットダウンする。
rsyncを走らすタイミング
 UEFI(BIOS)のタイマーで立ち上げった時、KVMホスト、全てのサブホストを起動し、起動時にスクリプトを走らすことが出来る /etc/rc.d/rc.local に起動スクリプトを記入していく。

まずは、現状のサーバーと同じサーバーを作ります。そして予備サーバーの設定をしていきます。
最初はUEFI(BIOS)の設定
 私の場合はマザーボードにASRockのAM1HーITXを使っていますので、設定は当然このマザーボードのもので。まず電源を入れDELキーでEUFIの設定画面を出し、Advanced → RTC Alarm Power On → Enble と選び、新しいウィンドウが開きますので、Every day をクリック後、時間:分:秒 を設定したらOKをクリックし、さらに設定を保存しEUFIを抜けます。
次にサブホストのシャットダウン時の設定
 ここを Resume にしていると、KVMホストが起動してもサブホストが起動では無く、Resumeしてしまい。起動スクリプトが走ってくれませんので、KVMホストがシャットダウンする時サブホストもシャットダウンする設定をします。この設定は /etc/init.d/libvirt-guests で設定します。
このスクリプトの

ON_SHUTDOWN=shutdown ← ホストがシャットダウンしたらゲストもシャトダウンする

にした。参考にした中には SHUTDOWN_TIMEOUT や START_DELAY を変更しているのもあったが、私はデフォルトのまま。これでホストをシャットダウンしたらゲストもシャットダウンする。又、ON_BOOT=start にしていると、ホストがシャットダウンするときに走っていたコンピューターがホストが起動するとゲストも起動するようになる。ここを参照
これで起動とサブホストのシャットダウンはうまくいく。
今度は本チャンのコンピューターとの同期である。これにはrc.local を使いrsyncで同期する。
rsyncの書式は rsync [option] SOURCE [SOURCE]... DEST でソースは複数指定できる。
(rsyncの設定はここを参照)
早速rsyncの設定をしていく。rsyncはリモートからリモートへの同期は出来ないので、各ホスト毎に設定が必要になる。まずはバックアップ元(SOURCE)でrsyncをデーモンで走らせておく(この方が何かとやりやすかったので)
最初にrsyncd.confの設定(この設定を全ての同期元のサーバー全部に設定していく)
# gedit /etc/rsyncd.conf
# Global options
uid           = root
gid           = wheel
use chroot    = yes
log file      = /var/log/rsyncd.log
pid file      = /var/run/rsyncd.pid
hosts allow   = 192.168.XX.XX/24
hosts deny    = *
dont compress = *.gz *.tgz *.zip *.pdf *.sit *.sitx *.lzh *.bz2 *.jpg *.gif *.png

# Module options
[Thunderbird]
         comment      = rsync server
         path         = /Thunderbird
         auth users   = root
         secrets file = /etc/rsyncd.secrets
         read only    = no
[Download]
 	 comment      = rsync server
         path         = /Download
         auth users   = root
         secrets file = /etc/rsyncd.secrets
         read only    = no
この設定の意味はrsyncをrootユーザーで走らして、chrootを可能にし、ローカルネットワーク(一部伏せ字)からのみRQを受付、圧縮しない拡張子を指定し、バックアップされる部分を指定している。注意するのはrsyncで指定するのは[ ]で指定した文字列になること。例えば
[abc]
     path=/XXX/YYY/CCC
としたらCCCディレクトリーの指定は abc になる。又、ここにある /etc/rsyncd.secrets に ユーザー名:パスワード の書式でを設定しておく。又、複数のユーザーが可能だが一行毎に記入しておく。大事なのはこのファイルのパーミッションを600にしておかないとエラーになる。そしてrsyncをデーモンモードで起動する。
# rsync --daemon --config=/etc/rsyncd.conf これはCentOS6の時
# systemctl start rsyncd これはCentOS7の時
これらを同期したい全てのサーバーに指定して置く。

次はバック先のホストの設定
先ずは予備のKVMホストの設定だが、rsyncdにパスワードを設定してあるのでそのファイルを作る。
/etc/rsync.passwd にバックアップ元で指定したパスワードのみを記入しておく(ユーザーはrsyncコマンドの中で指定する)。このファイルもパーミッションを600にしておかなければならない。
/etc/rc.d/rc.localに下記を追記
freshclam ← 予備のコンピューターはいつもは電源が入っていないのでVirusデーターのアップデートをする
rsync -a --delete --password-file=/etc/rsync.passwd rsync://root@192.168.XX.XX/Thunderbird/ /Thunderbird
rsync -a --delete --password-file=/etc/rsync.passwd rsync://root@192.168.XX.XX/Download/ /Download
私の場合は /Thunderbird (メールのデーター)と /Download(色々なダウンロードした物の置き場所)を同期した。--delete でバックアップ先にあってバックアップ元に無い物はdeleteされる(完全に同期)。パスワードファイルを指定し、rsync://root@ でユーザーを指定している。大事なのはバックアップ元の最後の / の指定、これが無いとバックアップ先のディレクトリーの下にバックアップ元のディレクトリーを作ってしまう。
これと同じように全てのバックアップ先のホストで指定する。
これで一様同期する筈だが、このままではシャットダウンしない。色々試したが、全ての同期に一時間もいらないので(毎日同期しているので)メインのホストでcron.dに設定を入れる。
# Shutingdown after All Sub Host rsync maybe ended
10 3 * * * root shutdown -h now
この設定は毎日午前3時10分にシャットダウンする(UEFIで午前2時に起動する設定をしている)
これを /etc/cron.d に Shutdwn(オーナーはroot、わざとshutdownにしていない)として保存する。
これで午前2時にEUFIのタイマーで起動し、午前3時10分にシャットダウンする筈。
あれ!シャットダウンしないぞ、何でだ??原因調査中
エラーメールが着ていた。内容は
/bin/sh: shutdown: command not found
だと!スペル間違えてないよなー、shutdownは確か/sbinにあったと思うので、/etc/cron.d/Shutdwnを下記に変更
# Shutingdown after All Sub Host rsync maybe ended
10 3 * * * root /sbin/shutdown -h now
。テストの為に今の時間の5分後に変更して試すと。無事シャットダウンしてくれたので、時間を戻し、保存。


投稿者: f-otake 投稿日時: 2014-11-13 5:00:11 (3508 ヒット)
Linux (サーバー制作)

現行のサーバーのバックアップ用にもう一台同じ仕様のサーバーを作っている時、ネットワーク越しにDDコマンドが使えるか探すとここに回答があった。
考え方は dd コマンドの出力側と受け側に分け、間を nc コマンドでつなぐ見たいになっている。
まずは現行のサーバーの方で
# dd if=/dev/Kvm/web4 | nc 192.168.XX.XX 12345
if=の後ろは例によって領域(device)の指定。私はLVMでサブホストのルート領域を作っているのでこんな風になっている。普通なら /dev/sda1 とかかな
パイプ(|)の後は nc コマンド(netcat)の略らしい。その後のIPアドレスはバックアップ用のサーバーのIPアドレス、次の数字が使用するポート番号
ーーーーーーーーーーーーーーーーーーー
バックアップ用サーバーに移って
# nc -l 12345 | dd of=/dev/Kvm/web5
-l で nc をリッスンモードにし、同じポート番号にして、パイプの後は dd コマンドの後ろの設定
同じホスト間での dd だったら、上記は dd if=/dev/Kvm/web4 of=/dev/Kvm/web5 となるが、これを出力側(if)と受け側(of)に分けている。
ネットワークはギガビットだが思ったより早く終了した。多分同じホスト間より早いくらい。
これには理由がある。私はサブホストのルート領域、データー部分などを1台のSSDの押し込めているので(サーバーを小さく作りたい)出力側も受け側も同じディスクを指定する事になるからだと思う。
おまけ:いつも忘れる、ddの進捗状況を表示する を忘れるので
新しくターミナルを開いて
# watch -n 60 pkill -USR1 dd
とすると、60秒毎に何メガコピーしたか表示される。
追記:重要
CentOS7でやったらエラーが出る

Ncat: Connection refused.
google先生に聞いても中々回答がない、ふとリッスンを先にしたら難無く繋がった
つまり、受け側
# nc -l 12345 | dd of=/dev/Kvm/web5を先にやってから
送り側
# dd if=/dev/Kvm/web4 | nc 192.168.XX.XX 12345 )ということ
うーん、CentOS 7だからかNcatのバージョウンが変わったか、それとも私の勘違いで最初からだったのか???


投稿者: f-otake 投稿日時: 2014-6-15 2:05:10 (926 ヒット)
Linux (サーバー制作)

先日、Redhat Enterprise Version 7 がリリースされ、CentOS 7 も間もなくとのアナウンスがあった。RedHatのリリースを読むと(ほんの一部分だけだが)、デフォルトのファイルシステムが ext4 から XFS に変更になり、MySQLがMariaDBに変更され、Microsoft Active Directory (AD) support(この意味がよくわからないが、sambaのバージョン4は既にアクティブ・ディレクトリーがサポートされている。デフォルトではバージョン3の様だったのでそのせい?)がサポートされるそうだ。
ここまで変更されると、このサーバーはCentOS7を待って、作り直した方が良さそうなので、製作を一時中断します。
2014ー07ー10追記:先日、CentOS バージョン7がリリースされた。早速製作しようと思ったが、少し調べてみる。
バージョン6からのアップグレードがサポートされているようだ。その場合ファイルシステムは?(ext4:XFS)、データーベースは?(mysql:mariaDB)。特にmysqlはそこら中のプログラムで使っており、変に変更されても困る(多分変更されないと思うが)。また新規に作っていくとデフォルトのDBはmariaDBなので多分互換性はかなりあるとは思うがどうなのか?mysqlを使っているのは、postfix, xoops, bacula, phpmyadmin, webmail(roundcube)
もう少しすればWEBに諸先輩方が参考になるコンテンツをアップしてくれると思うので、他人任せだが、もう少し様子見。


投稿者: f-otake 投稿日時: 2014-6-12 2:45:04 (1068 ヒット)
Linux (サーバー制作)

参考URL:https://www.kinryokai.net/modules/news/article.php?storyid=162
 http://centossrv.com/postfix-targrey.shtml
現時点(2014-06-12)ではpostfixとpostgreyのバージョンは参考URLの前者と同じです。
2014年9月8日にやっと本運用になりました。今の所不具合はありませんが、何かありましたらここで発表します。
遅延応答したら即座にSMTPプロセスを終了するパッチを施行したPOSTFIX (rpm):ここをクリック
targreyパッチをあてたpostgrey (rpm): ここをクリック
ここからは、上の二つのファイルをrootにダウンロードした前提で進めます。
まずはpostfixのインストール
# rpm -Uvh --force /ダウンロードしたdirectory/postfix-2.6.6-2.2.el6_1.x86_64.rpm
インストールの確認
# rpm -qa|grep postfix
postfix-2.6.6-2.2.el6_1.x86_64 と表示されればOK
次にpostgreyですがその前に必要なパッケージのインストール
# yum -y install postgrey && rpm -e postgrey
注:2014-08-02:今日テストしたらエラーが出た。本来はEPELのミラーに在る筈だが、無くなっているみたい。私の場合はEPELのミラーはftp,iij.ad.jpに設定されているが、ここには無くなっている。試しにftp,riken.jpもチェックしたがやはり無い。でも本家のhttp://dl.fedoraproject.org/pub/epel/6/x86_64/repoview/postgrey.htmlには置いてある。どうなっているんだ!!ともかくこれは付随してインストールが必要なパッケージのためのコマンドなので、無視して直接次に進んでもよい。但し環境によっては、必要なパッケージをインストールしろと言われるかも?必要なのは色々な下記のperlのパッケージなど」
これは perl-BerkeleyDB perl-IO-Multiplex perl-Net-DNS perl-Net-Server をインストールするため
# wget apt.sw.be/redhat/el6/en/i386/rpmforge/RPMS/perl-Parse-Syslog-1.10-1.el6.rf.noarch.rpm
# rpm -ivh perl-Parse-Syslog-1.10-1.el6.rf.noarch.rpm
でpostgreyのインストール
# rpm -Uvh /ダウンロードしたdirectory/postgrey-1.34-1.rf.noarch.rpm
/etc/postfix/main.cfの設定

smtpd_recipient_restrictions = 
    permit_mynetworks,
    permit_sasl_authenticated,
    permit_auth_destination,
    reject_unauth_destination,
−−追加(ここから)−−
    check_recipient_access hash:$config_directory/whitelist_recipient
    check_client_access    hash:$config_directory/whitelist_client
    check_client_access    regexp:$config_directory/permit_client_nots25r
    check_policy_service   inet:60000
    permit

smtpd_data_restrictions =
    permit_mynetworks
    permit_sasl_authenticated
    reject_unauth_destination
    check_recipient_access hash:$config_directory/whitelist_recipient
    check_client_access    hash:$config_directory/whitelist_client
    check_client_access    regexp:$config_directory/permit_client_nots25r
    check_policy_service   inet:60000
    permit
−−追加(ここまで)−−

taRgrey用Postfix設定ファイルダウンロード
# wget http://k2net.hakuba.jp/spam/postfix.conf.2.tar.gz
解凍
# tar zxvf postfix.conf.2.tar.gz
各ファイルをコピー
# cp postfix.conf.2/whitelist_recipient /etc/postfix/
# cp postfix.conf.2/whitelist_client /etc/postfix/
# cp postfix.conf.2/permit_client_nots25r /etc/postfix/
# rm -fr postfix.conf.2/
# rm -f postfix.conf.2.tar.gz
whitelist_recipientのDB化
# postmap /etc/postfix/whitelist_recipient
whitelist_clientのDB化
# postmap /etc/postfix/whitelist_client
/etc/rc.d/init.d/postgreyの設定
#OPTIONS="--unix=$SOCKET" ←コメントアウト
OPTIONS="--dbdir=$DBPATH --inet=127.0.0.1:60000 --tarpit=125 --targrey --retry-count=2 --delay=3600" ←追記

postgreyの起動、postfix再起動など
# service postgrey start
# chkconfig postgrey on
# service postfix restart
その後メールのテストをする
postfixにパッチを当てているため、自動アップデートを無効にする。
# yum -y install yum-versionlock
# sed -i 's/enabled = 0/enabled = 1/g' /etc/yum/pluginconf.d/versionlock.conf
# touch /etc/yum/pluginconf.d/versionlock.list
# rpm -q postfix >> /etc/yum/pluginconf.d/versionlock.list
# rpm -q postgrey >> /etc/yum/pluginconf.d/versionlock.list
postfixのアップデートがあったらメールで知らせてくれるスクリプトの作成。もっともソースもアップデートされていなけば出来ないが
# gedit /etc/cron.daily/yum-check-update
#!/bin/bash

# versionlockパッケージアップデートチェックスクリプト

YUMTMP=$(mktemp)
for pkg in `cat /etc/yum/pluginconf.d/versionlock.list`
do
    chkname="$chkname `rpm -qi $pkg|grep Name|awk '{print $3}'`"
done
yum --noplugins check-update $chkname > $YUMTMP
[ $? -eq 100 ] && cat $YUMTMP
rm -f $YUMTMP

# chmod +x /etc/cron.daily/yum-check-update
アップデート検知時はroot宛にメール通知されるので、最新版で再インストールする


投稿者: f-otake 投稿日時: 2014-6-7 1:11:12 (1028 ヒット)
Linux (サーバー制作)

一通り設定が終わったので、再度見直しておきます。エラーの殆どは設定ファイルのスペルミスとか記入漏れです。
このメールサーバーは本チャンで動いているサーバーと同じネットワーク・レンジにあり、ルーターの設定は本チャンのメールサーバーに転送する設定ですので、外部からはテスト出来ません。このホストはKVMのサブホストとして動いていますので、とりあえず親ホストにthunderbirdをインストールし、設定して行きます。マイグレーションを簡単にするためにホスト名は現在本チャンのサーバーと被っていますので、thunderbirdのホストの/etc/hostsにこのメールサーバーを登録しておきホスト名で問い合わせ時にこのサーバーのIPアドレスを返すようにしておきます。
次にpostfixadminでドメインやメアドを作り、それをthunderbirdに設定して送受信をテストします。その際外のメアドには発信が出来ますので、自分のISPのメアドにもコピーを入れメールが来るのを確かめておきます。うまくいかない時は /var/log/maillog にログがありますので参考にします。
テストが終わったら暗号化をしていきます。
 *サーバー証明書作成
参考URL:http://centossrv.com/postfix-tls.shtml
# cd /etc/pki/tls/certs/
# make mail.pem

前略
Country Name (2 letter code) [GB]:JP ← 国名応答
State or Province Name (full name) [Berkshire]:Tokyo ← 都道府県名応答
Locality Name (eg, city) [Newbury]:Shinjuku ← 市区町村名応答
Organization Name (eg, company) [My Company Ltd]:centossrv.com ← サイト名応答(なんでもいい)
Organizational Unit Name (eg, section) []: ← 空ENTER
Common Name (eg, your name or your server's hostname) []:mail.centossrv.com ← メールサーバー名応答※
Email Address []:postmaster@centossrv.com ← 管理者メールアドレス応答

# cd
 main.cfの変更、下記のコードのコメントを取って有効化
# gedit /etc/postfix/main.cf
前略
# SMTPS
smtpd_use_tls = yes
smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache

 master.cfの変更、下記のコードのコメントを取って有効化
# gedit /etc/postfix/master.cf
前略
smtps     inet  n       -       n       -       -       smtpd
  -o smtpd_tls_wrappermode=yes
  -o smtpd_sasl_auth_enable=yes
  -o smtpd_client_restrictions=permit_sasl_authenticated,reject
  -o milter_macro_daemon_name=ORIGINATING
後略

参考URLではtlsmgrのコメントを取っていましたが、デフォルトで外れていました。
ここで、postfixと念のためdovecotも再起動
# service postfix restart
# service dovecot restart
再度一連のテストをやって確かめておく。


投稿者: f-otake 投稿日時: 2014-6-6 12:18:19 (1681 ヒット)
Linux (サーバー制作)

参考URL:http://e-garakuta.net/techinfo/doku.php/linux/postfix-virtual
mysql関連のドライバーのインストール
27:メールサーバーの設定:前提条件でインストールしましたが、やっていなければphp-imapとdovecot-mysqlをインストールしておきます。
/etc/dovecot/conf.dにある設定ファイルを設定していく
# gedit /etc/dovecot/conf.d/10-auth.conf

変更箇所のみ記載
disable_plaintext_auth = no ← プレーンテキストのパスワードを扱うので no に変更
auth_mechanisms = cram-md5 plain login ← 右辺変更
#!include auth-system.conf.ext ← システムの認証は使わないのでコメントアウト
!include auth-sql.conf.ext ← mysqlで認証するので
# gedit /etc/dovecot/conf.d/10-mail.conf
変更箇所のみ記載
mail_location = maildir:/Mail/%d/%n ← 右辺の変更、これはドメイン/ユーザー名
first_valid_uid = 10000
first_valid_gid = 10000
maildir:/Mail/%d/%nの最後を%uにするとメアドになる。postfixadminで設定したものと合わせる事
gedit /etc/dovecot/conf.d/10-master.conf
変更箇所のみ記載
service auth {
中略
  # Postfix smtp-auth
  unix_listener /var/spool/postfix/private/auth { ←コメントを外す
    mode = 0666 ←コメントを外す
  } ←コメントを外す

gedit /etc/dovecot/conf.d/20-imap.conf
変更箇所のみ記載
imap_client_workarounds = delay-newmail tb-extra-mailbox-sep ← コメントを外す

gedit /etc/dovecot/conf.d/20-pop3.conf
変更箇所のみ記載
pop3_client_workarounds = outlook-no-nuls oe-ns-eoh ← コメントを外す

dovecot-sql.conf.extの作成
/usr/share/doc/dovecot-2.0.9/example-config/にサンプルがあります。
gedit /etc/dovecot/dovecot-sql.conf.ext
driver = mysql
connect = host=localhost dbname=postfix user=postfix password=xxxxxxxx
default_pass_scheme = PLAIN
user_query = select concat('/Mail/', maildir) as home, 10000 as uid, 10000 as gid FROM mailbox WHERE username = '%u' AND active = '1';
password_query = SELECT password FROM mailbox WHERE username = '%u' AND active = '1';
dovecotをスタートする
# service dovecot start
# chkconfig dovecot on
やっと終わったので次はテストと暗号化を行う


投稿者: f-otake 投稿日時: 2014-6-6 10:31:58 (1781 ヒット)
Linux (サーバー制作)

参考URL:http://e-garakuta.net/techinfo/doku.php/linux/postfix-virtual
今まではlocalのメールはaliasesでkinryokai.netに転送出来ていましたが。localメールもvirtualを使用するようにしたので、転送出来なくなりますので、localのメールはISPのメアドに転送するようにします。
私はメールソフトはthunderbirdを使用しておりますので、フィルターの設定で、そのサーバー用のディレクトリーを設定していますので問題はありません。
# gedit /etc/aliases

前略
root: ISPのメアド

# newaliases
次にvirtual専用のユーザーを作ります
# groupadd -g 10000 vuser
# useradd -g vuser -u 10000 -s /sbin/nologin vuser
 *postfixの設定ファイルの編集(抜粋)
# gedit /etc/postfix/main.cf
変更箇所のみ
myhostname = mail.kinryokai.net ← 自分のホスト名
mydomain = kinryokai.net ← 自分のドメイン
myorigin = $mydomain ← 変更
inet_interfaces = all ← 変更
inet_protocols = ipv4 ← ipv4しか扱わない
mydestination = ← 右辺は必ずブランク
home_mailbox = Maildir/ ← #を取り有効化
header_checks = regexp:/etc/postfix/header_checks ← #を取り有効化
smtpd_banner = $myhostname ESMTP unknown ← #を取り右辺変更
#ここから下を追記
message_size_limit = 52428800
mailbox_size_limit = 9663676416
virtual_mailbox_limit = 9663676416

disable_vrfy_command = yes
smtpd_helo_required = yes
smtpd_sender_restrictions = reject_unknown_sender_domain

# Virtual Domains with MySQL
#local_transport = local
local_transport = virtual
#virtual_transport = virtual :デフォルト見たい
virtual_mailbox_base = /Mail
virtual_alias_maps = mysql:/etc/postfix/mysql_virtual_alias_maps.cf
#virtual_alias_domains = $virtual_alias_maps :デフォルト見たい
virtual_mailbox_domains = mysql:/etc/postfix/mysql_virtual_domains_maps.cf
virtual_mailbox_maps = mysql:/etc/postfix/mysql_virtual_mailbox_maps.cf
virtual_minimum_uid = 10000
virtual_uid_maps = static:10000
virtual_gid_maps = static:10000

# SMTP AUTH
smtpd_sasl_auth_enable = yes
smtpd_sasl_security_options = noanonymous
smtpd_sasl_type = dovecot
smtpd_sasl_path = private/auth
smtpd_sasl_local_domain = $myhostname
smtpd_client_restrictions =
    permit_mynetworks,
    reject_non_fqdn_sender,
    reject_non_fqdn_recipient,
    reject_unknown_client,
    reject_rbl_client all.rbl.jp,
#    reject_rbl_client zen.spamhaus.org,
#    reject_rbl_client bl.spamcop.net,
    check_client_access hash:/etc/postfix/access,
    permit
smtpd_recipient_restrictions = 
    permit_mynetworks,
    permit_sasl_authenticated,
    permit_auth_destination,
    reject_unauth_destination,
    reject

# SMTPS
#smtpd_use_tls = yes
#smtpd_tls_cert_file = /etc/pki/tls/certs/mail.pem
#smtpd_tls_key_file = /etc/pki/tls/certs/mail.pem
#smtpd_tls_session_cache_database = btree:/var/lib/postfix/smtpd_scache
SMTPSは全部コメントアウトしていますが、テスト後有効にするために記入して置きます。reject_rbl_clientはあまり多くすると遅くなるので、様子を見ながら有効化します。
smtpd_client_restrictions=に check_client_access hash:/etc/postfix/access,がありますが、デフォルトでは全てコメントアウトして存在しています。書式は文中に記入がありますが
IPアドレス REJECT で拒否するIP
IPアドレス OK でアクセプトするIPです。
又、IPを 1.2.3 のように記入すればIPレンジになります。
運用後に設定すればいいでしょう。

 *mysql関連の三つのファイルを作成
# gedit /etc/postfix/mysql_virtual_alias_maps.cf
user = postfix
password = xxxxxxx
hosts = localhost
dbname = postfix
table = alias
select_field = goto
where_field = address

# gedit /etc/postfix/mysql_virtual_domains_maps.cf
user = postfix
password = xxxxxxx
hosts = localhost
dbname = postfix
table = domain
select_field = domain
where_field = domain
additional_conditions = and active = '1'

# gedit /etc/postfix/mysql_virtual_mailbox_maps.cf
user = postfix
password = xxxxxxx
hosts = localhost
dbname = postfix
table = mailbox
select_field = maildir
where_field = username

header_checksの編集
# gedit /etc/postfix/header_checks
/^From:.*<#.*@.*>/ REJECT
/^Return-Path:.*<#.*@.*>/ REJECT

を最後にでも追記
main.cfに check_client_access hash:/etc/postfix/access, と設定しているので、そのDBを作ります。
# postmap /etc/postfix/access
このアクセスリストの記入方法はhttp://www.postfix-jp.info/trans-2.2/jhtml/access.5.htmlに説明があります。自分でこのリストを変更したら、必ず上記のコマンドでDBを更新して置きます。
次はdovecotの設定です


投稿者: f-otake 投稿日時: 2014-6-6 4:59:32 (5218 ヒット)
Linux (サーバー制作)

参考URL:http://e-garakuta.net/techinfo/doku.php/linux/postfix-virtual
http://sourceforge.net/projects/postfixadmin/files/latest/downloadから最新版のpostfixadminをダウンロード(2014-06-04現在はpostfixadmin-2.91.tar.gz)
ダウンロードしたディレクトリーに移り
# tar zxvf postfixadmin-2.91.tar.gz
出来たディレクトリーを自分のWEBのルートにコピーし、名前をpostfixadminに変更しておく。
mysqlにデーターベースを作り、パスワードなどを設定
# mysql -p
パスワードを入力後
mysql> CREATE DATABASE postfix;
mysql> CREATE USER 'postfix'@'localhost' IDENTIFIED BY 'パスワード';
mysql> GRANT ALL PRIVILEGES ON `postfix` . * TO 'postfix'@'localhost';
mysql> quit
注:ある時テスト中に CREATE USER をするとエラーが出た

ERROR 1396 (HY000): Operation CREATE USER failed for 'postfix'@'localhost'
これはpostfix userをした後に行ったら出たエラー。ここに理由があった。ここによるとdeleteしただけでは完全に消去されず、DROP USER をするとよい。
次にインストールしたpostfixadminの下にあるconfig.inc.phpの設定(変更箇所のみ抜粋)
$CONF['configured'] = true; ← trueに変更
$CONF['default_language'] = 'ja'; ← jaに変更
$CONF['database_password'] = '設定したパスワード';
$CONF['encrypt'] = 'cleartext'; ← cleartextに変更
$CONF['show_password'] = 'YES'; ← YESに変更
$CONF['page_size'] = '50'; ← 50に変更
$CONF['default_aliases'] = array (
    'abuse' => 'abuse@kinryokai.net', ← ドメイン部分を変更
    'hostmaster' => 'hostmaster@kinryokai.net', ← ドメイン部分を変更
    'postmaster' => 'postmaster@kinryokai.net', ← ドメイン部分を変更
    'webmaster' => 'webmaster@kinryokai.net' ← ドメイン部分を変更
$CONF['aliases'] = '0'; ← 0に変更
$CONF['mailboxes'] = '0'; ← 0に変更
$CONF['maxquota'] = '0'; ← 0に変更
$CONF['domain_quota_default'] = '0'; ← 0に変更
$CONF['vacation_domain'] = 'autoreply.kinryokai.net'; ← ドメイン部分を変更
$CONF['header_text'] = ':: kinryokai.net ::'; ← 右辺を変更
$CONF['footer_text'] = 'Return to kinryokai.net'; ← ドメイン部分を変更
$CONF['footer_link'] = 'http://kinryokai.net'; ← ドメイン部分を変更
$CONF['emailcheck_resolve_domain']='NO'; ← NOに変更
$CONF['create_mailbox_subdirs_prefix']=''; ← ""に変更
保存後ブラウザから localhost/postfixadmin/setup.php にアクセスすると
Error: Smarty template compile directory templates_c is not writable.
Please make it writable.
If you are using SELinux or AppArmor, you might need to adjust their setup to allow write access.

Warning: Depends on: IMAP functions - NOT FOUND
To install IMAP support, install php5-imap
Without IMAP support, you won't be able to create subfolders when creating mailboxes.

と二つのエラーが表示された。一つ目はtenplates_cが書ける様になっていないと。又SELINUX等を使っていたら調整が必要だと。SELINUXは使っていないので、書き込めるようにするが、この際グループも変更しておこう。pwdをWEBのルートのディレクトリーに変更したら
# chown -R .apache postfixadmin
# chmod 770 postfixadmin
二つ目はphp5-imapをインストールしろとあるが、CentOSは
# yum install php-imap
変更したら再度アクセス、すると画面1が表示される。下の方にある Change setup password の下のパスワードのBOXは config.inc.php に設定するパスワードだが入力後は暗号化された分が表示される。
設定したいパスワードを2ヶ所に入れ、generate pasword hash をクリックすると
$CONF['setup_password'] = 'ホニャララ';
と表示がある筈。
config.inc.php にある $CONF['setup_password'] = 'changeme'; のchangemeの代わりにホニャララを設定し再度アクセスすると、画面2が表示されます(画面上部はカッとしてあります)
Setup password には今設定したパスワード、管理者にはメアドを設定しますが、メールサーバーはまだ出来ていませんのでISPのメアドでも入れ、パスワードを2回入力後、管理者追加をクリックします。再度同じような画面が表示されますが、これはさらに管理者を追加出来る為です。又、以前のバージョンでは setup.phpは消去しなくてはなりませんでしたが、必要なくなりました。今後の管理者の追加をする時の為にそのままにしておきます。
ブラウザから locahost/postfixadmin にアクセスすると画面3が表示され、今設定した管理者(メアド)とパスワードを入力し、ログインをクリックすると画面4が表示されます。
ここではこれ以上の説明は行いませんが、ドメインやメアドを作っていくのはそんなに難しくありません。それぞれの所をクリックすれば見当がつくと思います。
又、一般ユーザーは自分のパスワードを変更できますので、WEBのURL/postfixadmin/users/login.php を知らせておきます。
postfixadminからドメインやユーザーを削除してもデーターベースからは削除されますが実態であるディレクトリーなどは削除されません。私はドメインやユーザーの削除はほとんど無いので万が一あった場合はマニュアルで削除する事にしましたが、自動で行いたい時はhttp://e-garakuta.net/techinfo/doku.php/linux/postfix-virtualの”削除処理”に方法が記載されています。又、アクセスした時にお知らせが表示されるのですが、昔は別のファイル(motd.txt, motd-user.txt)で設定していたのですが、これらのファイルはなくなっており、config.inc.phpに$CONF['motd_user'] = '';等と設定がり、ここに記入するようになった見たいです。
次はpostfixの設定:https://www.kinryokai.net/modules/news/article.php?storyid=236





(1) 2 3 4 5 »
テーマ選択

(4 テーマ)
ピックアップ画像
2007-09-18-17鐚
最近の画像
IMG_0004.jpg (2023-3-17)
IMG_0004.jpg
IMG_0003.jpg (2023-3-17)
IMG_0003.jpg
IMG_0010.jpg (2023-3-17)
IMG_0010.jpg
IMG_0013.jpg (2023-3-17)
IMG_0013.jpg
IMG_0007.jpg (2023-3-17)
IMG_0007.jpg
IMG_0005.jpg (2023-3-17)
IMG_0005.jpg
IMG_0002.jpg (2023-3-17)
IMG_0002.jpg
IMG_0011.jpg (2023-3-17)
IMG_0011.jpg
IMG_0009.jpg (2023-3-17)
IMG_0009.jpg
IMG_0008.jpg (2023-3-17)
IMG_0008.jpg
人気画像
ゴーキョピー... (6004 hits)
ゴーキョピー...
ギャチュンカ... (5866 hits)
ギャチュンカ...
ばあちゃんミ... (5766 hits)
ばあちゃんミ...
ヒマラヤ壁 (5674 hits)
ヒマラヤ壁
タムセルク残... (5481 hits)
タムセルク残...
Powered by Xoops2 Theme Modified by F-Otake
copyright (c) 2006 All rights reserved.