You can read this blog in any language using google translate as follows:

Goto http://translate.google.com/
Paste URL in the box and select "Japanese for From Language" and "To Language". Then click "Translate".

English translated pages are here:
http://bit.ly/xPuXoy

你可以閱讀這個博客,在任何使用“Google”的語言翻譯

本ブログのアクセス統計: 60万アクセスを達成しました。ご訪問ありがとうございました。

60万アクセスまでの経過

2009年12月に始めた本blog。2011年7月ごろに10万アクセスを達成し、2011年12月13日には15万アクセスを達成。
その後、私も更新しておらず、アクセスは少し減りましたが、3月1日には18万アクセス。2012/4/18に20万アクセス、2012/8/21に25万アクセス、2013/1/18に30万アクセス、2013/12/17に40万アクセスを達成しました。しばらく見ていなかったら、2015/5/1に50万2584アクセスになっていました。またまた、しばらく更新しないうちに、2017/6/11に60万7197アクセスになっていました。2018/7/7 .. おお七夕 .. には63万0656アクセスになっていました。久しぶりに更新しました。

2013年1月5日土曜日

自宅にLinuxサーバを構築した

ATOM利用のNAS(Network Attached Storage)のHP Data Vaultを購入した。これは、Windows Home Severなのだが、なんどやっても追加HDDを認識しない。
注) NASとは、Ethernet上にdiskを付けてファイルを共有するもの。

そこで、有休品であった、Intel Core duoのdisktopマシンに、Linux (CentOS 6.3) をインストールして自宅サーバに改造した。以下、その作業を報告する。

早速役に立った)
東京に一時帰国して、米国の自宅NAS(Network Attached Storage)に保存されていた昨年の年賀状・クリスマスカードの住所録をftpで転送することが出来た。早速役に立った。

関連する作業と掲載予定のblog)
  1. HP Data Vault奮闘記 - 今後別投稿する
  2. Desktopマシンの改造 - ファン交換による静音化 - 今後別投稿する
  3. Linuxサーバ化: 以下に記載する

Linuxサーバ化)
行った作業を列挙しておく。記事が長くなるので、それぞれの作業には、以下の項目からリンクを張ることにする。
  1. Desktopマシンのハードウェア構成
  2. Linux(ディストリビューション)とは
  3. CentOS 6.3 x64 isoイメージの取得
  4. インストールDVDの作成
  5. CentOSのインストールと初期設定
  6. yumの有効化
  7. daemonの設定
  8. automountの設定
  9. samba serverの有効化 NASとしてMacへのmountのさせ方
  10. boot sectorが壊れたので、Grubを再設定
  11. iptables(firewall)の設定
  12. sshdの設定、port番号を変更してport scan 対策
  13. ftpの有効化
  14. miniDNSとDiCEを用いたDDNS化
  15. mdadmを用いたsoftware RAID化(RAID1) - 一旦実施したが壊れて、再設定した
  16. apacheによるwebサーバ化 
  17. ビデオ配信サーバ化 - 試行中
  18. squidによるproxyサーバ化
  19. ビデオ録画サーバ化 - 未実施
  20. sendmailのインストールと障害情報メイルの転送 - 未完了
  21. netに繋がらなくなった
  22. yumの修正とCentOS6.6への更新
  23. rsync/cronを用いた自動バックアップ
  24. Dropboxの更新
  25. RAIDの修復
  26. RAIDデバイス名の修正
  27. Keyboardタイプの変更とremount
  28. UPSを用いたGrace shutdownと再立ち上げの制御
  29. lm_sensorsを用いたFan制御 (Motherboardが対応していないため失敗)

Desktopマシンのハードウェア構成
  • CPU: Core2 duo 3GHz  : LGA775 (Wolfdale E8400 45nm) FSB 1333MHz L2 6MB  TDP 65W ( x86_64bitに対応したCPU )
  • MB:  Foxconn G31MX 46GMX
  • RAM: PC2-6400 666 1GB x 2 (2slotのみ)
  • SSD: corsair 60GB 2.5inch SSD SATA3
  • HD1: WD2.5TB 64MB cache 3.5"HDD WD25EZRX
  • HD2: Seagate Barracuda 1.5TB 7200RPM SATA HDD  ST315000341AS
  • Graphic: Geforce 8400 GS PCIe 256MB DDR2 HDMI DVI

Linux(ディストリビューション)とは
wiki: http://ja.wikipedia.org/wiki/Linux にあるにLinuxとは、フィンランド人のLinus Benedict Torvalds http://bit.ly/Z4kzb8 が開発し、1991年に一般公開した無料のunix OSである。
DHCP Client設定: http://red.ht/1n4PL6e

無料であるばかりでは無く、GPLという改造した場合でもソース公開の義務を負うライセンス形態(copy left) で提供されており、全世界のボランティアにより、急速に進化を続けているOSS(Open Source Software)である。ここでいうFreeは、無料という意味のFree (Free as in beer: 無料のビール)の意味ではなく、自由という意味のFree (Free as in speech : 言論の自由)という意味である。http://en.wiktionary.org/wiki/free_as_in_beer

蛇足: 日本語には、折角、「無料」と「自由」という2つの単語があるのに、「フリーソフト」と安易にカタカナ訳をしてしまったのは、もったいない話しである。

Linuxでは、ベースとなるKernelに、さまざまなツールを追加して、即使える環境にしてリリースしている。これをディストリビューションという。どのディストリビューションも基本的には無料であり、ネットからダウンロードできる。

ベースカーネル)LinuxのOS (Kernel)は、2.x.yとか3.x.y の版番号を持ち、大きくなるほど最新である。この第2桁の数字xが偶数のものが安定版、奇数のものが実験版になる。現在の主流は、2.6系が多い。

ディストリビューション)
wiki : http://bit.ly/MpEdOI に比較がある。ディストリビューションによって、使えるツール環境やGUI(グラフィック・ユーザインターフェース)に違いがある。Desktopで有名なのは、Ubuntu (ウブントゥ)であるが、今回はサーバなので、商用で使われる一番メジャーなDistributionである、Red Hat Linuxの無料版CentOS(セント・オーエス)を用いることにする。2012/12月において、この最新安定版は、Kernel 2.6.32ベースの CentOS 6.3である。

(目次に戻る)

CentOS 6.3 の画面スクリーンショット)
サーバ用といっても、立派なGUIと環境を備えている。おまけに、Macやwindowsと比べてかなり安定しているし、カスタマイズがしやすい。

CentOS 6.3 (Linux 2.6.32-276.el6.x86_64)
GNOME 2.28.2
である。

CentOS 6.3のGUI画面

CentOS 6.3 x64 isoイメージの取得)
ダウンロード: http://matome.naver.jp/odai/2134702905977575401 などに情報あり。

から、
ファイル名                                        サイズ   日付
CentOS-6.3-x86_64-bin-DVD1.iso 4.0 GB      7/6/12 12:00:00 AM
CentOS-6.3-x86_64-bin-DVD2.iso 1.4 GB      7/6/12 12:00:00 AM
の2つをダウンロード。

上記にあるRikenのミラーから取得すると、40Mbps位でているCableのinternetで早朝4時頃に作業したところ、30分くらいでダウンロードされる。ダウンロードする時間や自身のエリアにあわせてミラーサイトを切り替えると良いと思う。

(Pemtium 4では) Core2よりも前の世代のx86プロセッサでは、64bit OSは走らないので、x86_64 の部分がi386 となっている32bit版のイメージをダウンロードする必要がある。

(目次に戻る)

CentOSのインストールDVDの作成)
ISOイメージを (CD|DVD) に焼く
http://blog.thingslabo.com/archives/000009.html の (Mac OS X) を参照して行った。以下の手順。
  1. Finderから、「移動」-> 「ユーティリティ」で、「ディスクユーティリティ」を開く
  2. メニュー行にある、ディスクを作成   をクリックして、ダウンロードした isoイメージファイルを選択。今回は、NASにおいたが、共有ディスク上のファイルも指定できる。
  3. ブランクのDVD-Rを挿入して、ディスクを作成ボタンを押す。
  4. しばらく掛かるが、MacbookProの場合には、内蔵のSuperDrive からDVD-Rがイジェクトされ、以下のダイアログボックスが表示される。

CentOS 5.5 を USBからインストールというのもある。

CentOSのインストールと初期設定)
インストールは言語設定を日本語にして行うことができる。

Hard Diskのフォーマット)
LinuxではXFS, ext4など様々なdiskフォーマットが選べる。今回は、実績のあるext4を選択した。

インストール後、設定はGUIツールからできる。メニューバーにあるSystem->Preferencesにあるツールから以下が設定できる。
  1. Keyboad:  LayoutにあるLayout optionsからCapslockとControl keyのswapなど:
    メニューバーの システム→設定→キーボード→レイアウトタブ にある、「レイアウトのオプション」ボタン から設定できる。
    -「Ctrlキーの位置」で、Caps LockとCtrlの位置を入れ替えた。
    - MacのAlt-V(ペースト)などのキー操作がCtrl-Vとして認識されるように「Alt/Winキーの動作」でAlt(MacでのCommand key)をCtrlに2重マップした。
  2. Input Method: 日本語入力IMEとしての、Anthyの選択や、かな漢字変換mode on/offのキーの選択。(私は、どのマシンでもCtrl-Jを使っている):
    メニューバーの システム→設定→入力メソッドから
    - IMを有効
    - IBusの設定から、切り替えに、Ctrl+Jを追加
インストールと表示文字を日本語にしたところ、キーボードも日本語キーボードになってしまっており、記号が打てないので、以下の様に、英語キーボード(Microsoft Eliteのエルゴノミック)に入れ替えた。日本語キーボードのレイアウトを削除しないと上にある日本語設定が有効になっていた。



(目次に戻る)


Yumのインストール)
参考リンク) http://www.aconus.com/~oyaji/centos/yum_centos.htm

rpm --import http://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6

をやる。ここにあるような、Riken サイトへの変更をしなくてもYumは使える。
逆に32bit版CentOSの時には、この設定では使えない。

 nkfのinstall:  yum -y install nkf

Yumを用いてinstallしたソフトウェアとOSを以下のように更新できる。
# yum update

(目次に戻る)

Daemonの設定)
参考リンク) http://www.aboutlinux.info/2006/04/enabling-and-disabling-services-during_01.html
を参照。起動されるdaemonのことは、サービスとも言われる。

[root@Linux01 apcupsd]# chkconfig apcupsd --add
[root@Linux01 apcupsd]# chkconfig apcupsd on
[root@Linux01 apcupsd]# chkconfig --list apcupsd
apcupsd         0:off 1:off 2:on 3:on 4:on 5:on 6:off

Daemonが起動時に立ち上がってなければ、以下のようになるし。
[root@Linux01 apcupsd]# service apcupsd restart
Shutting down UPS monitoring:                        [失敗]
Starting UPS monitoring:                                   [  OK  ]

起動時に立ち上がってれば以下のようになる。
[root@Linux01 apcupsd]# service apcupsd restart
Shutting down UPS monitoring:                        [  OK  ]
Starting UPS monitoring:                                   [  OK  ]

以下に起動時に起動されるサービスの意味・変更・表示法がかかれている。
一部引用すると、
chkconfig --list で、Run levelごとに立ち上がるサービスの一覧が表示される。

PC起動時のランレベルは、
/etc/inittab にかかれている。デフォルトでは以下のように5になっている。
# Default runlevel. The runlevels used are:
#   0 - halt (Do NOT set initdefault to this)
#   1 - Single user mode
#   2 - Multiuser, without NFS (The same as 3, if you do not have networking)
#   3 - Full multiuser mode
#   4 - unused
#   5 - X11
#   6 - reboot (Do NOT set initdefault to this)
#
id:5:initdefault:
(目次に戻る)

Automountの設定)
参考リンク)
autofsを使ってsambaを自動マウント 3月 11th, 2008 Leave a comment | Trackback
http://ambiesoft.ddo.jp/blog/archives/120 の手法をつかう。すなわち、
/etc/auto.masterを編集以下の行を追加
/mnt /etc/auto.smb
rootで mkdir /mntしてchmod 777  /mnt
さらに、chmod 755 /etc/auto.smb

/etc/init.d/autofs restart は、CentOSの場合、serviceコマンドを使って、
# service autofs start
となる。

sftp,scpの使い方: http://watermans-linuxtips.blogspot.com/2008/09/sftp.html

ただし、NECのAtermのDNSはnslookupに答えないので、マウントには装置名ではなく、ipadress指定が必要になる。このipアドレスを調べるのが実は大変面倒である。

たとえば、IO DataのLandiskはlandisk-01として、BBrouterに名前を与えてあるので、cd /mnt/landisk-01 とやると、NASのファイルが見える。それでは面倒なので、/home/importというdirectoryを作り、そこから /mnt/landisk-01にシンボリックリンクをはることで、どういうsambaのマウントポイントがあるのかわかりやすくした。

(目次に戻る)

samba serverの有効化)
参考リンク)
標準でnfsがあるが、これでは、PC/MACからマウントできなかった。
# /etc/rc.d/init.d/nfs start
# vi /etc/fstab
# ps -ael |grep nfs
そこでSambaをインストール。実行したコマンドとスクリプトは以下。
pdbeditの使い方: http://www.searchman.info/fedoracore4/sev1070.html
単にpdbeditと打つと、コマンド一覧のヘルプが出る。
# /etc/rc.d/init.d/nfs stop
# yum -y install samba
# vi /etc/samba/smb.conf
# pdbedit -a samba
new password:
retype new password:
Unix username: samba
NT username:
Account Flags: [U ]
User SID: S-1-5-21-9..........
Primary Group SID: S-1-5-21-987........
Full Name: samba
Home Directory: \\linux01\samba
HomeDir Drive:
Logon Script:
Profile Path: \\linux01\samba\profile
Domain: LINUX01
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: 水, 06 2月 2036 07:06:39 PST
Kickoff time: 水, 06 2月 2036 07:06:39 PST
Password last set: 金, 23 11月 2012 07:31:57 PST
Password can change: 金, 23 11月 2012 07:31:57 PST
Password must change: never
Last bad password : 0Bad password count : 0Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
# service smb restart
SMB サービスを停止中: [ OK ]
SMB サービスを起動中: [ OK ]
# vi /etc/sysconfig/iptables
# service iptables restart
iptables: ファイアウォールルールを消去中: [ OK ]
iptables: チェインをポリシー ACCEPT へ設定中nat mangle filt[ OK ] iptables: モジュールを取り外し中: [ OK ]
iptables: ファイアウォールルールを適用中:
 Bad argument `RH-Firewall-1-INPUT'Error occurred at line: 33
 Try `iptables-restore -h' or 'iptables-restore --help' for more information. [失敗]
# vi /etc/sysconfig/iptables
# service iptables restart
iptables: ファイアウォールルールを消去中: [ OK ]
iptables: チェインをポリシー ACCEPT へ設定中filter [ OK ]
iptables: モジュールを取り外し中: [ OK ]
iptables: ファイアウォールルールを適用中: [ OK ]
iptables: 追加のモジュールを読み込み中:nf_conntrack_ftp nf_conntrack_netbios_ns nf_conntrack_tftp [ OK ] 
sambaサーバのテスト方法)
http://www.samba.gr.jp/project/translation/Samba3-HOWTO/install.html にまとめがある。
http://www.ne.jp/asahi/hishidama/home/tech/unix/samba.html#smb.conf
にも設定とテストのやり方のメモがある。

http://d.hatena.ne.jp/language_and_engineering/20110820/p1 にも、まとめがある。
後者を利用してデバッグした。

smbclient -L //192.168.1.65 でマウント名一覧を表示しようとして、passwordをいれると、
Server requested LANMAN password (share-level security) but 'client lanman auth' is disabled
というエラーになる。
/etc/samba/smb.confを修正して
[global] sectionに
  client lanman auth = Yes
を書き込めば治ったが、その前に以下の3つをやった。これにより、local server上でも、Macからでも、passwordに対して Control-D ないしはそのままreturnでも、機能する。すなわちpasswordなしでも動くらしいことを確認。

1. smbclientを実行すると、ログインユーザで実行されるので、
pdbedit -a hoge   で、ログインユーザを作成した。-U <ユーザ名> でユーザ名を指定してもよいが。。また、guestというuserも作成した。pdbeditでは、パスワードもログインユーザと同じものをつけた。

2. そのユーザのドメインがsmb.confにかかれているドメイン HOMEと食い違うので、以下のコマンドで合わせた。
pdbedit -u hoge --domain=HOME
ルータのfirewallは開けてないので、MiniDNSのドメインからはアクセスできない。

3. /etc/samba/smb.confの下の方に、以下のsecurty文があったので、コメントアウトした。
# ----------------------- Standalone Server Options --------------
#
# Scurity can be set to user, share(deprecated) or server(deprecated)
  (コメント略)
;       security = user
;       passdb backend = tdbsam
Mac側でのテスト)
Mac OS-Xにはsmbclientがないので、mount_smbfsを使う。以下に説明がある。
http://apple.stackexchange.com/questions/697/how-can-i-mount-an-smb-share-from-the-command-line
これを使って、ipアドレスでマウントするとpasswordなしでmountできた。

つまり/mntを作って、
mount_smbfs //HOME\;guest@192.168.1.65/home /mnt
/shareなら以下のようになる

   mount_smbfs //HOME\;guest@192.168.1.65/share /mnt

でマウントできた。当然ながらリモートでのシンボリックリンクの先は見えない。これらコマンドは、ユーザ権限で実行できる。
マウントできると他のNAS同様に、desktopにアイコンが表示される。

http://centossrv.com/samba.shtml のやりかたで、smb.confを設定し、名前解決をするnmbを起動。

ないしは、Marveriks等では https://support.apple.com/ja-jp/HT5884 のやり方で接続できる、FinderのGo(移動) > Connect to Server (サーバへの接続) から、smb://< ホスト名 or IP address >でよい。

Marveriksからは、SMB2, AFPの順になり、SMBは使わないので、接続元がOS--X 以外の場合には問題がでることもあるらしい。http://news.mynavi.jp/column/osxhack/110/ にある

あとは、http://useyourloaf.com/blog/2011/01/24/using-the-mac-os-x-automounter.html
にしたがい、MacのAutomounterを設定すれば、/Volumesにmountされるのか。。
ないしは、smbがbroadcastしていないのだろうか。。

sambaの名前解決?)
http://bit.ly/1fxzvXO をみて対策した。
1. smb.confの[global] sectionで、name resolve orderにhostsを追加し、wins proxyとdns proxyの設定をyesに変えた。が、まだMacはautomountしない。

< name resolve order = wins lmhosts hosts bcast
---
> name resolve order = wins lmhosts bcast
85,86c82
< wins proxy = yes
< dns proxy = yes
---
> dns proxy = no

2. linuxの名前解決  上記1でlmhostsがあるし、/etc/resolv.confに、DNSとしてBBrouter 192.168.1.254が指定してあるので、sambaも名前解決できるはずである。
Macやlocal マシンから dig [マシンの’IPアドレス] をいれてみたが、逆引きできていない。大丈夫なのだろうか。。

3. /etc/samba/lmhosts に、以下を追加してsmbをリスタートしてみたが変わらない。
192.168.1.65 linux02

4. 少なくともMacからでもLinuxからでも、以下のようにnslookupで自マシン名が見つかるし、Macのファインダでremote desktop接続が表示されssh/tftpも動くので、Linuxとしての名前解決は問題はなそうである。
$ nslookup linux02
Server: 192.168.1.254
Address: 192.168.1.254#53
Name: linux02.gateway.2wire.net
Address: 192.168.1.65
MacのFinderで設定して上手くいった)
https://engineering.purdue.edu/ECN/Support/KB/Docs/MacOSXConnectingToSMB
に従い以下の手順で行った。
  1. FinerのMenuバーにある、Go->Connect to Serverから、smb://linux02  を指定する。
  2. 2つあるマウントポイントのうちhomeを指定
  3. user指定かguestか聞いてくるのでguestにしてpasswordなし
  4. すると、Sharedとして、linux02のsambaが表示されるようになった。Macをrebootしたらどうなるのかは知らないが。。
Wins側の設定)
とりあえずこちらもやってみた。
1. smb.confの[global] sectionにwins serverのIPとしてBBrouterを設定。

wins server = 192.165.1.254
2. 以下では名前解決しない。ひょっとして、自マシンがwins serverかとも思い、以下のように -U 192.168.1.65に変えてもダメ。smb.confの該当行を変えてもダメ。
 $ nmblookup -U 192.164.1.65 -R 'linux02'
(略)
querying linux02 on 192.164.1.65
name_query failed to find name linux02
3. うまくいかないので、smb.confにある、以下の行をコメントアウトした。
; wins server = 192.165.1.254 # BBrouter
; wins server = 192.165.1.65
; wins support = yes
; wins proxy = yes
(目次に戻る)

Grubの再インストール)
停電でいきなり電源が落ちると、Linuxが立ち上がらなくなる。これは、以下の理由であった。
  1. 以下写真(BIOSのブートデバイス選択メニュー)のように、/bootがあるSSDがCh3 Masterであり、BIOSはCh2 Slaveを先に立ち上げようとして、MBR (Master Boot Record)が見つからず、CD ROMから立ち上げるよう、プロンプトを出していた。この状態でも、電源投入時にESCを打ち込んで、BIOSのブートデバイス選択メニューからCh3 Mを選択すれば起動する。
  2. 上記1をMBRが壊れたと勘違いし、Grubを設定し、逆にMBRを壊してしまった。その修正法は後述する。

BIOSのブートデバイス選択メニュー
Grubの使い方)
  1. DVD-Rか上記のboot menuからlinuxを修復コマンドで立ち上げる。
     DVD-Rから立ち上げた場合には、http://wiki.centos.org/TipsAndTricks/ReinstallGRUB
    に解説があるように、chrootが必要
  2. /boot/grub/grub.conf に、/boot/vmlinuxの場所が正しく記載されているか確認する。通常は壊れていないはず。
  3. こわれていて書き直すときには、/bootはroマウントされているので、mount コマンドでデバイス名を調べ、mount -o remount,rw /dev/sdb1 等のようにrwマウントし直す。
  4. http://d.hatena.ne.jp/silenvx/20120725/1343169224 にあるように、grubをインタラクティブで立ち上げて、find  /boot/grub/grub.conf  を実行。すると、(hd1,0)にこれがあることがわかる。ここは、/dev/sdb に相当するSSD (ch3 Master)。以後以下のようにコマンドを実行する。
  • grub> find /grub/grub.conf

    (hd1,0)
  • grub> root (hd1,0)
  • grub> setup (hd1)
  • grub> reboot  ... これは上手くいかないので、shに戻って、sync;sync; init 
(目次に戻る)


iptables(firewall)の設定
参考リンク)
設定結果)
[root@Linux01 ~]# vi /etc/sysconfig/iptables
[root@Linux01 ~]# service smb restartSMB サービスを停止中:                                      [  OK  ] SMB サービスを起動中:                                      [  OK  ][root@Linux01 ~]# service iptables restart
iptables: ファイアウォールルールを消去中:                  [  OK  ]
iptables: チェインをポリシー ACCEPT へ設定中filter         [  OK  ]
iptables: モジュールを取り外し中:                          [  OK  ]
iptables: ファイアウォールルールを適用中:                  [  OK  ]
iptables: 追加のモジュールを読み込み中:nf_conntrack_ftp nf_conntrack_netbios_ns nf_conntrack_tftp                                                  [  OK  ]
[root@Linux01 ~]#
(目次に戻る)

sshdの設定、port番号を変更してport scan 対策

ping, tracerouteはSPAMやwormや踏み台になり危険なのでoffにした。
ssh: http://www.obenri.com/_ntp_sshserver/sshdconfig501.html
  http://d.hatena.ne.jp/midori_kasugano/20100125/1264426486
などに解説がある。
設定して、 service sshd restart でdaemonを起動。

デフォルトのポート22だと、怪しいサイトが激しくポートスキャンしてくる。
たとえば、119.6.245.66 というipアドレス、いろいろなuser名でloginを試みている。その数、1時間の間に444回。 
このipアドレスをブラウザでアクセスしてみると、「网络视频监控系统 Network Surveillance System」という中国の会社。
Surveillanceといいつつ、不正ログインを試みている。相変わらず中国のやることは、けしからん。。
こういう輩がいるので、BBrouterのポートを空けるときには慎重に。。
不正アクセスはファイアウォール iptables がはき出す、/var/log/secureを見れば分かる。

対策として、
  1. 分かりにくいパスワードにする
  2. PGP鍵ペアを用いた認証にする。(つまりPGPの秘密鍵のあるマシンからしかloginできない)
  3. 標準のポート番号22を、違う番号に変える。
上記1, 2でも安全性は十分だろうが、ポートスキャン(login)を試みられると、余計なネットワーク負荷とCPUパワーを食われるので、上記3の対策をした。同時に冒頭に書いたように不要なポートは閉じた。

sshdで、ポート番号を変更する方法は、
http://d.hatena.ne.jp/MonteCut/20111112/1321075650 などに記載されている。

loginする側でのsshの使い方は、ssh --helpで出るが、代表的なものは以下である。
  • -p port : ポート番号の指定
  • -v : verbose : デバッグ情報等を表示
  • -l login_name : 指定したuser名でlogin
X11のforward)
XプロトコルのSSH転送をするためにはあらかじめsshdに以下の設定をしておく必要がある。
/etc/ssh/sshd_config を編集し以下を入れる。最初、このX11DisplayOffsetが入っていなくて動かなかった。を10にすると、DISPLAY変数がlocalhost:10.0 から先に設定される。
X11Forwarding yes
X11DisplayOffset 
Linux側の/etc/sysconfig/iptables に以下の行を入れておかないと、起動したXのアプリへの入力がX11 Client (linux) 側に送られない。

-A INPUT -i eth1 -m state --state NEW,ESTABLISHED  -p tcp --dport 6000:6005 -j ACCEPT

ssh -Y -p <ポート>  <ホスト名>

注意)sshd_config とssh_config を間違えて編集して、ssh clientが動かなくなった。

(目次に戻る)

ftpの有効化
関連リンク:
  http://centossrv.com/vsftpd.shtml
 設定法: http://www.aconus.com/~oyaji/ftp/vsftpd_rpm.htm  (ユーザ限定、passiveなしで)
   設定法にしたがって証明書をmakeしておくこと。
 再起動: http://web.mit.edu/rhel-doc/4/RH-DOCS/rhel-rg-ja-4/s1-ftp-vsftpd-start.html
 passiveだとlsが利かないが、passiveにしなくても普通に動いた。入力のcompletionも利く。

  vsftp.confとuser_list をbackupしておく。
外部からのアクセスに成功(以下)
ftp> get foo.pdf
local: foo.pdf remote: foo.pdf
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for foo.pdf (1642685 bytes).
100% |****************************|  1604 KiB  179.41 KiB/s    00:00 ETA
226 Transfer complete.
1642685 bytes received in 00:08 (178.86 KiB/s)
ftp> quit
221 Goodbye.
(目次に戻る)

miniDNSとDiCEを用いたDDNS化
Dynamic DNS (以下DDNS) を用いて、プロバイダからDHCPで提供され動的に変化するIPアドレスにたいして、ドメイン名を与えて、固定ドメイン名でアクセスできるようにする。
DDNSには無料のminiDNS http://www.minidns.net/index.php を利用した。が、2013年末時点では、ここは新規受付を終了し、従来サービスもそのうち終了とのことである。理由は、迷惑メイル業者の踏み台にされるから(以下スクリーンショット)とのことであり、スパムにも困ったものである。

CentOSへのDiCEの登録法はココに出ている: http://centos.server-manual.com/centos5_dice.html
ここにあるsetarchコマンドの意味は、http://ufuso.seesaa.net/article/139985477.html に出ている。

http://www.iwate-oss.net/modules/pico/index.php?content_id=35 を参考にinit.dを作った。
/etc/init.d/diced start で起動する。コードは以下のとおり。exec-shieldが効かないようにして起動するということらしい。
#!/bin/sh
#
#chkconfig: 35 99 99 # description: DiCE
#
# diced: /usr/local/bin/DiCE/diced
diced="/usr/local/DiCE/diced"
[ -f "$diced" ] || exit 0
case "$1" in
start)
# Start daemons.
if [ ! -f /var/lock/diced ] ; then
echo "Starting DiCE."
setarch `uname -m` "$diced" -d -l > /dev/null
touch /var/lock/diced
else
echo "DiCE is Already Started."
fi
;;
stop)
# Stop daemons.
echo "Shutting down DiCE."
PID=`/bin/ps -aefw | grep "$diced" | awk '{print $2}'`
if [ ! -z "$PID" ] ; then
/bin/kill ${PID} 1> /dev/null 2>&1
fi
rm -f /var/lock/diced
;;
*)
echo "Usage: /etc/init.d/diced {start|stop}"
exit 1
esac
exit 0
ところが) 2015/9/17に、突全リモートアクセスできなくなった。(顛末は次節にまとめる) 調べたところ、プロバイダのWANアドレスが変わったが、DDNS(Dynamic DNSのminiDNS) に登録されていなかった。まずrebootを試し、dicedも走っていた。dicedをstopしてstartしても登録は変わらなかった。このコードではだめな模様。初期登録はできていたのになにかおかしい。。
DiCEへの登録法を見た。自動登録では上手くいかないので外部スクリプト利用に変え、http://checkip.dyndns.org/ でテストするようにした。これで、IPアドレス取得実験も成功。
手動でわざと変えておいたminiDNSのアドレスが更新されることを確認した。

ただし、http://centos.server-manual.com/centos5_dice.html の例のように、「IPアドレスが変更されたときのみ or 7日ごと」では、IPアドレスが変わったときにminiDNSに登録に失敗すると、7日はアドレスが登録されなくなる。そこで、:add コマンドでルール2を追加。6時間毎に起動して登録するものもactiveにし、手動で狂わせておいたminiDNSへの登録が6時間後には正しくなっており、remote loginできることを確認した。(2015/9/20 追記)

顛末) 変化したWANアドレスがDDNSに登録されていないと、ブラウザでのアクセスどころか、sshによるremote loginもできない。そこで、skypeを使って家族に頼み、remoteからデバッグすることになる。この流れが、実はさらに話を複雑にした模様。

  1. DMZ(BBrouterの穴)の設定がおかしくなったかも知れないので、BBrouter系を再起動。→ やはりwebにもsshでもアクセスできず。
  2. サーバの電源ボタンを押して、linuxをシャットダウンしてもらい。再起動。→ 変化なし
  3. 再びBBrouter系を再起動
  4. serverにloginしてもらい、browserからWANアドレスを確認してもらおうとした。が、そもそもbrowserから外のwebが見えない。
  5. LANケーブルを確認。どうも、Server->LAN Switchを経由したあと、wallにはいるコネクタが緩んでいた模様。これは、コネクタの上にケーブルが重なり、次第に緩んできたと推測された。→ 修正したが、外からはwebにもsshもできず。
  6. WANアドレスが変わったと思われ、米国の自宅serverのhomepageを使ってWANアドレスを調べようとしたがアクセス不能。BBrouterに入ろうとしてもダメ。調べてみると、米国サーバをproxyにしていた。これを直して解決。
    http://checkip.dyndns.org/ にアクセスすれば、米国サーバがproxyになっていたことは一発で分かったはず。
  7. WANアドレスがとれたので、webにもsshにもアクセスできるようになった。あとは、sshして不正だった日本のサーバのDiCE設定を修正し、ついでに米国サーバのDiCEも設定変更して、動作確認して終了。
その他解説)
http://fedora.eek.jp/fed3dice2.htm もDiCEコマンドのオプションの紹介がある。

今後)
DDNSはスパムの踏み台になるので、今後サポートされなくなる方向だと思う。かといって、CableやADSLでは、IPv4が枯渇しているので、Static IPのサービスはなくDHCPが主流。対応法をいろいろ考えた。今後詳細に解説する。
  1. お名前.com を利用する方法:
    調べたところ)最安で、登録時は割引、1年目には1000円程度、2年目の更新には2000円程度、... 最後には5000円から1万円と年ごとに更新料が上がる仕組みらしい。ないしはレンタルサーバと併用して値下げしてもらうか... これを使うと、毎年、ドメイン名(サーバのDNS登録)を変えて、費用削減する必要がありそう。他にも格安ドメインサービスはある。
    が、ドメイン名を取っても、肝心のWANのIPアドレスが、固定でなければ、DDNS等を用いて紐付けをしないとならない。ドメイン名提供元がDDNSを提供していないのであれば、固定IPアドレスサービス(実はこれが割と高い)を提供しているプロバイダを使う必要がある。だったら、次にあるレンタルサーバを使って、自分でDDNSサービスを作る手もありそう。
  2. サクラなどのレンタルサーバ。それも一番安いものを利用する方法
  3. IPv6では、基本的にNATとローカルアドレスへの変換ではなく、全機器にglobl IPアドレスを割り当てるらしいので、DHCPという概念ではなく、全てStatic IPアドレスでの運用になるのかもしれない。
(目次に戻る)

mdadmを用いたsoftware RAID化(RAID1) 

RAIDパーティションの作り方 (うろ覚え))
ツールでRAIDを作成: http://itneko.blogspot.com/2012/08/centos6-raid1.html
スペアパーティションとは http://www.obenri.com/_raid_create/repair_mdadm.html
2.5Tを共有するので今回は使わない。

http://www.obenri.com/_raid_create/create_mdadm.html のやり方で作る。

cat /proc/partitions で確認。
-l1 : Raid1
-n2: partition 2

パーティションを並べる
mdadm -C /dev/md0 -l1 -n2 /dev/
コマンドは直ぐに終わるがディスクユーティリティでみて再構築中になっているように、RAID1の再構築になる。
cat /proc/mdstat  を見て状況を判断する。4TBのHDD 2個では、7%終わったところで、あと463分かかると言われているので、トータルで498分=8.3時間かかる。。

2015/3/23記載)
 Seagateの1.5TB HDDが壊れていて縮退運転になっていた。そこで、4TBのWDのHDDを2つ(一つはRed、一つはGreenにして同時故障を避けた.. MTBFがかなり違うはずだしロットも違うはず)。
壊れていないHDDをDVD-Rにつなぎ、新たなHDDを入れてbootすると/dev/sdbと/dev/sddに4TBのドライブができた。GRUBにすると性能が落ちると言われるので、partition無しにして双方をext4でformat。
mdadm -C /dev/md1 -l1 -n2 /dev/sdb /dev/sdd で、software RAIDが/dev/md1にできる。従来は/dev/md0が消えて、md127になっているが、一応md1にしておく。

resyncが終わったら、
http://www.obenri.com/_raid_create/mount_raid.html でext4のfsを作って、fstabを変更してmount  
fs作るのにちょっと待つ。慌てていじくり回すと壊れる。
 fstabの設定法: http://unixlife.jp/unixlife/linux/sys-fstab.jsp
それでsmb mountできるようにする。

RAIDの復旧)
記憶デバイスの状況)
Boot Drive : SSD Corsair Force 3 SSD 60GB /dev/sdb Ext4 (ver1.0)
      /dev/sdb1 LVM2
RAID用
1. ST31500341AS 1.5TB  /dev/sda1 

2. WD25EZRX-00AZ680 2.5TB /dev/sdc1
アプリケーション-> システムツール-> ディスクユーティリティでみると、以下のようなエラーが出ている。


RAIDの設定法は後日書く。

設定後の状態は、 RAID Array: 1.5TB RAID1 /dev/mdl27
同上のディスクユーティリティで見ると以下のようになっている。



上記メニューからファイルシステムをチェックでfsckを掛ける。エラー無し。

マウント) 
suして、rootになり /etc/fstab を編集。
もともとRAIDのdevice名は/dev/md0だったが、なぜかcrashで/dev/md127になったので、以下の行を追加。
/dev/md127      /share/md0     ext4    defaults        1 2
mount -a を実行してmountで見ると、
/dev/md127 on /share/md0 type ext4 (rw)
となっており、cd /share/md0; ls でファイルが見えた。

/share は、sambaでnas の名前でmountできるようにしてあるので、NASとして利用可能である。
また、sambaでは、他のマシンをmountしたマウント・ポイントをshareとして見せている。(名前が混乱しやすいので、そのうち修正する予定)

(目次に戻る)

apacheによるwebサーバ化
参考リンク)
http://dev.halhal.info/archives/11  この通りにやって完了
上記リンクがなくなった
http://centossrv.com/apache.shtml にしたがう。
つまり、以下あたりをやって、directory設定に合わせておかないとservice httpd restartが失敗する。
[root@centos ~]# vi /etc/httpd/conf/httpd.conf ← httpd設定ファイル編集
#ServerName www.example.com:80
↓
ServerName centossrv.com:80 ← サーバー名を指定


servernameは、miniDNSのドメイン名(fooとしておく)を用いて、
www.foo.miniDNS.net と設定しておく。ポートを標準の80番似しておけば、webからはfoo.miniDNS.net でアクセスできる。iptablesとBBrouterには最初に穴を空けておいた。

# /etc/rc.d/init.d/httpd start で起動し、
# chkconfig httpd on で、boot時起動に設定。
/var/www/html/index.html を書き換えてアクセスできることを確認したあと、
sambaにマウントしているRAID1のパーティションにコピーして、ln -s from to でシンボリックリンクしておいた。

.htaccessの設定法: http://coliss.com/articles/build-websites/operation/work/htaccess-for-all-by-sitepoint.html
パスワードをつけるためのcgi:
一覧: http://www.cgi-search.info/search/category120.html
シンプルなもの: http://www.kent-web.com/pwd/login.html

ApacheでのCGIの設定) http://www5.plala.or.jp/vaio0630/apache/apache_cgi.htm

logは、httpd.confのServerRoot で指定したdirectoryからの相対位置に作られる。

CGIが動かない。 
-
HDDが壊れmdadmを作りなおした結果、/share/md0/wwwが/share/md1/wwwになった、このため、/etc/httpd/からのwwwへのsymlinkを貼り直し、/etc/httpd/conf/httpd.confの DocumentRoot "/share/md0/www/html" をmd1に書きなおす必要があった。これによりservice httpd restartに成功。
Document rootは、/share/md1/www/html である。

ビデオ配信サーバ化
html埋め込み型の HTMLストリーミング)
.m3u8 拡張子のファイルを使ったビデオストリーミングサーバも設定したが動かない。
参考URL)
データ作成) このファイルは、Appleのfinal cut Proでも生成できる。ただし、スマホ・タブレット・PCのそれぞれに対応するのでファイルサイズは大きい。

配信サーバ)
Apacheをインストールすると、m3u8の拡張子設定がすでに設定されている。
これを本節冒頭参考URLにあげた「設定法」のリンクに従い、以下のように修正。

(/etc/mime.typesに追加)
application/x-mpegURL     m3u8
video/MP2T     ts

(/etc/httpd/conf/httpd.confに追加)
AddType application/x-mpegURL     .m3u8
AddType video/MP2T     .ts

Apacheを再起動
/etc/init.d/httpd restart

x-mpegURL) x-mpegURL というサポートライブラリは、CentOS6.3にはすでに搭載済で、「CentOS x-mpegurl」でググッて見つけたRPMをダウンロードして rpm install でインストールしようとしてコンフリクトでabortした。

Webの記述) htmlは以下の様な記述を入れると、Safariで再生できる。Chromeでは、再生ボタンが押せない。Firefoxでも「この形式はサポートしていない」とエラーメッセージがでる。
どうも、このビデオストリーミングは、Appleの独自仕様らしい。後日、他のやり方を考えたい。

< video
src="http://hogehoge.minidns.net/data/TestVideo.m3u8"
controls autoplay width="640" height="480">

また、mp4などのファイルに比べると、Final Cut Pro X等で生成する時間もかかるし、ファイルサイズも大きい。

パスワード認証)
  1. CGIによるもの
  2. .htaccessによるもの
1は、拾ってきたファイルがDOS用でS-JISだったので、これをUTF-8にして、charsetの記述も書き換えたら動いた。

2は、デフォルトでは、httpd.confで、.htaccessのoverlayを許可していないので動かなかった。設定し直して、Apacheをリスタートしたら動いた。ただし、上記の videoタグにあるように、ビデオデータm3u8へのアクセスはフルパスになる。したがって、このディレクトリにあるリンクへのアクセスを禁止することができない。つまり、パスがわかると、パスワードチェックをスルーしてしまう。

htaccessの設定方法とpassword cryptのためのスクリプトは以下:
http://www.quick-s.net/htaccess.html
この他のhtaccessの使い方は: http://www.quick-s.net/htaccess2.html

こういう問題があるので、videoタグを使った手法は、廃止することにする。

hrefにmp4ファイルを直接書く方法)
こちらは、Google Chromeではアクセス可能。スライドバーや音量、フル画面なども出る。
自宅サーバからのアップリンクが飽和しないよう、レート制御が多分必要。

https://httpd.apache.org/docs/trunk/mod/mod_ratelimit.html とかをinstallすれば良さそう。レートをいくつぐらいにするかは今後調べる。

しかし、Safariでは逆にファイル全部をダウンロードしようとしてしまうらしく、"loading"が表示されたまま固まってしまう。

(目次に戻る)

squidによるproxyサーバ化
BBrouterには3128の穴を開けた。port scanを避けるため違うポートにしたほうが良いかもしれない。。

 Squid: http://centossrv.com/squid.shtml

設定法: http://d.hatena.ne.jp/hidde/20090521/1242883305
詳しい設定法とauthのインストール: http://tech.ckme.co.jp/proxy.shtml
ユーザ認証: http://www.ylw.mmtr.or.jp/~nago/comp/unix/squid-auth.txt
Faq: http://squid.robata.org/faq_19.html
NCSA_AUTH: http://squid.robata.org/faq_19.html

上記”設定法”にしたがい、yum -y install squid で, Squidをインストール。
squid                 x86_64                 7:3.1.10-19.el6_4
であった。

次にhtpasswd -c /etc/squid/passwd ユーザ名
でパスワードを設定。

ncsa_authがない。。http://www.squid-cache.org/Versions/v3/3.4/
からsquidのソースを持ってきて、
http://www.ylw.mmtr.or.jp/~nago/comp/unix/squid-auth.txt にしたがって、
ncsc_authをコンパイル。

helpers/basic_auth/NCSA
にソースがあったので、そこにcd してコンパイル。

helpersにcd ../.. してroot でmake installすると、/usr/local/lib/libexecに実行イメージ basic_ncsa_auth がインストールされる。若干、ディレクトリなどが違うのだが。。

http://squid.robata.org/faq_19.html にしたがい、以下のコマンドでパスワードファイルを作成。
設定法: http://d.hatena.ne.jp/hidde/20090521/1242883305 にしたがい。

# htpasswd -c /usr/local/squid/etc/passwd username

以下のコマンドをタイプし、

# /usr/local/squid/libexec/basic_ncsa_auth /usr/local/squid/etc/passwd
hogehoge passwd
OK
と認証できることを確認。
あとは、「設定法」にしたがいsquid.confを設定。


# service squid start
squid を起動中: .                                          [  OK  ]
# chkconfig squid on

でsquidが起動された。

 /etc/sysconfig/iptables を修正しiptablesに穴をあけて、 /var/log/sequreのログを調べてアクセスできているか確認。

当然ながら、HTTP, HTTPS, SOCKS, FTPの全てに対してproxyを効かさないと、上手く表示できないページがある。loginを表示し、設定したpasswordを入力。
職場からproxyをここに設定して、アクセス元ipアドレスチェックのcgiでアクセス元がproxyのipアドレスになっているかを確認し、Proxyが効いていることを確認した。

(目次に戻る)

sendmailのインストールと障害情報メイルの転送
  • # yum install sendmail
  • # chkconfig sendmail on
  • # service sendmail start
  • Edit /etc/aliases and setup and alias for root, perferably an in internal and external user ex. root:  local_user,gmail_user@gmail.com
これだけでは、上手くいかない。sendmail.cfを設定する必要がある。以下に紹介がある。http://dev.halhal.info/archives/11

(目次に戻る)

Netに繋がらなくなった

システムが落ちなくなったので、強制シャットダウンしたところ、linuxの中からも、外からもネットワークにつながらなくなった。オンボードのeth0のネットワークカードが壊れたらしく、PCIeのネットワークカードを追加したら直った。

が、壊れているeth0があると邪魔であるし、iptables, smb.conf等のeth0の記述をeth1に書き換えないとならなくて面倒なので、eth0をoffにして、追加したデバイスをeth0とすることにした。
これは、BIOSからonboardのEthernetインターフェースを無効化すれば完了。iptablesの設定は、eth0に対してやられているので、これで変更は不要。
一応、centOSのシステムツールのnetworkの設定で使わないeth1のドライバを外したが、これが有効だったのかは不明。(これが入っていると、LAN cableが繋がっているときにbootが途中でハングっていた可能性もある。LANケーブルを抜かないとbootしなかった。)

DMZ(  【 DeMilitarized Zone 】 非武装地帯 / 非武装セグメント http://e-words.jp/w/DMZ.html ) を設定してSambaを有効化する方法)

  1. BBrouterのリース期限(デフォルト24時間)を1時間にする
  2. host名を新しくする:DHCP Client設定: http://red.ht/1n4PL6e や 
    http://d.hatena.ne.jp/WhatAmILookingFor/20110828/1314542775 参照
  3. Linuxを落とす
  4. しばらくして立ち上げると、BBrouterのDHCPが、新しいHost名でIPアドレスを割り付けているので、これを固定割り付けにする
  5. BBrouterのDMZの設定に行き、古いマシンに割り付けたDMZを開放する。(1つのポートは、一つのマシンにしかDMZは割り付けられない)
  6. 新しいホスト名に、DMZのポートを設定していく。
  7. /etc/samba/smb.confはipアドレスが直に指定されているので、これを、BBrouterが新たに割り付けたipアドレスに直す。
  8. BBrouterのリース期間をデフォルトに戻す。
  9. pdbedit -a samba でuser sambaを再設定
  10. service smb restart する。これでsambaも復活
以上で、httpd, samba, squidが完全に復活した。

以下は上手くいかなかったやり方)
eth1でなくeth0にする方法)
  http://yamavar.wordpress.com/2011/10/11/ude/ に説明がある。/etc/sysconficg/network-scripts/ifcfg-eth0 とifcfg-eth1 と言うファイルを作成。壊れていたeth0をeth1に移し、ついでにonbootをoffにした。

さらに、/etc/udev/rules.d/70-persistent-net.rules を何か別な名前にrenameしてrebootすれば良いようである。

IPアドレス固定割り付けで問題)
自宅外から、Linuxサーバに繋ぐためのDMZの設定は、ホスト名(ipアドレス)で行われる。また、Sambaの設定もipアドレスに対して行われる。。

ipアドレスの割り付けはBBrouter (自宅の場合はAT&T UverseのBBrouter)のDHCPが行う。
ところが、このDHCPは、Macアドレスに対してipアドレスを固定割り付けしており、このMacアドレスをつけかえる機能がない。。。
一方で、違うMacアドレスのデバイスが、同じホスト名で接続要求をするので、DHCPリストの表示も狂っている。いろいろやり方が考えられるが、ホスト名をつけかえて、新たなipアドレスで設定しなおすのが良さそうである。他の方法は、
  1. BBrouterをfactory resetして、Linuxサーバだけを繋ぎ、空いている今までのipアドレスに対して固定割り付けにする。この場合にも、DMZの再設定は必要。
  2. AT&Tのカスタマーサポートに連絡する(話が通じず、無駄手間になる可能性が極めて高い)
Sambaは復活)
古いipアドレスのDHCP固定割り付けをoffにして、しばらくしたら、新しいMac Addressのほうに古いホスト名が割り着いた。このIPアドレスを smb.confに設定し、linuxをrebootしたら、sambaで繋がるようになった。

また、miniDNSへもマシンのglobal ipアドレスは正しく伝わっている。

だが、依然、次の2つがおかしい。。
DHCPが固定割り付けでも自動割り付けでもなく、Static割り付けになっている。
DMZは相変わらず剥こう。
やはり内部的には、古いMacアドレスで認識しており、なんらかの不具合がおきている模様。AT&Tのルータであるし、米国ではどうせ聞いても詳しい人などいないので、対策は、多分、ひとつしかない。
linuxのホスト名をつけ替えて、設定を全部やりなおすのだろう。。今後試す。

(目次に戻る)

yumの修正とCentOS 6.6へ

6.  yumの有効化 で参照した、
http://ftp.riken.jp/Linux/caos/centos/ が

http://ftp.riken.jp/Linux/centos/ に変わっていて、ここにRPM-GPG-KEY-CentOS-6がある。

 # rpm --import http:://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6
エラー: http:://mirror.centos.org/centos/RPM-GPG-KEY-CentOS-6: インポート読み込みに失敗しました(2)。

となるので、
# wget http://ftp.riken.jp/Linux/centos/RPM-GPG-KEY-CentOS-6
 2015-03-23 15:58:26 (267 MB/s) - `RPM-GPG-KEY-CentOS-6' へ保存完了 [1706/1706]

と成功して、

# rpm --import ./RPM-GPG-KEY-CentOS-6
が成功するが、yum updateはepelのためにエラーになる..(以下)


# yum update
読み込んだプラグイン:fastestmirror, refresh-packagekit, security
更新処理の設定をしています
Loading mirror speeds from cached hostfile
エラー: Cannot retrieve metalink for repository: epel. Please verify its path and try again
#

https://community.hpcloud.com/article/centos-63-instance-giving-cannot-retrieve-metalink-repository-epel-error のやり方で直った。

すなわち、/etc/yum.repos.d/epel.repo の httpsを全てhttpに書き直せば良い。
# yum -y update読み込んだプラグイン:fastestmirror, refresh-packagekit, security更新処理の設定をしていますLoading mirror speeds from cached hostfileepel/metalink                                                           |  15 kB     00:00      * epel: linux.mirrors.es.net * ius: mirror.symnds.com * remi: mirror.cedia.org.echttp://linux.dropbox.com/fedora/6/repodata/repomd.xml: [Errno 14] PYCURL ERROR 22 - "The requested URL returned error: 404"他のミラーを試します。エラー: Cannot retrieve repository metadata (repomd.xml) for repository: Dropbox. Please verify its path and try again
となり、dropboxのrepoがエラー。
とりあえず、/etc/yum.repos.d/dropbox.repo
を他の場所に移動させ、yum -y update を実行。

google-chrome/filelists                                                 | 1.7 kB     00:00http://dl.google.com/linux/chrome/rpm/stable/x86_64/repodata/filelists.xml.gz: [Errno -1] Metadata file does not match checksum他のミラーを試します。エラー: failure: repodata/filelists.xml.gz from google-chrome: [Errno 256] No more mirrors to try.#
と、今度はchromeのupdateで失敗するので、/etc/yum.repos.d/google-chrome.repo も移動..
するとyumは1GBのダウンロードまで行きそこでエラー。
トランザクションの要約
================================================================================
インストール        55 パッケージ
アップグレード     856 パッケージ
総ダウンロード容量: 1.0 G
パッケージをダウンロードしています:
http://mirror.centos.org/centos/6/os/x86_64/Packages/gnutls-devel-2.8.5-14.el6_5.x86_64.rpm: [Errno 12] Timeout on http://mirror.centos.org/centos/6/os/x86_64/Packages/gnutls-devel-2.8.5-14.el6_5.x86_64.rpm: (28, 'Operation too slow. Less than 1 bytes/sec transfered the last 30 seconds')
他のミラーを試します。
パッケージのダウンロードでエラー:
  gnutls-devel-2.8.5-14.el6_5.x86_64: failure: Packages/gnutls-devel-2.8.5-14.el6_5.x86_64.rpm from base: [Errno 256] No more mirrors to try.
http://mirror.centos.org/centos/6/os/x86_64/Packages/ をブラウザでアクセスすると、gnutls-devel-2.8.5-14.el6_5.x86_64.rpm は存在する。mirrorないしはnet (videoをみていたし...) 側が重たかったようで、しばらく経ってから試したら、成功した。1773個のパッケージが更新された。

  Verifying   : plymouth-theme-rings-0.8.3-24.el6.cento   1771/1773
  Verifying   : openssh-server-5.3p1-81.el6_3.x86_64      1772/1773
  Verifying    : ricci-0.16.2-55.el6.x86_64                1773/1773
 <中略>
  libreoffice-presenter-screen.x86_64 1:3.4.5.2-16.1.el6_3
  openchange.x86_64 0:0.9-7.el6
  samba4-libs.x86_64 0:4.0.0-23.alpha11.el6
完了しました!
rebootすると、CentOS 6.3から、CentOS6.6に上がっていて無事rebootできた。
CentOS6.6 : Linux 2.6.32_504.12.2_el6.x86_64

(目次に戻る)


rsyncとcronを用いた自動バックアップ
/root/scriptsに、nasbackup.sh, bkup_cron.shという2つのコマンドを作った。/etc/crontabを修正してbkup_cron.shを定期的に呼ぶことで、nasbackup.shから呼ばれるrsyncコマンドが、重要なファイルだけをnasないしはRAIDパーティションにバックアップをする。

crontabの書き方, cronの使い方: http://www.server-memo.net/tips/crontab.html
#crontab -l
30 3 * * 2 /root/scripts/bkup_cron.sh

nasbackup.sh
#! /bin/sh -f
echo
echo '----------------'
echo "-=-=-=-=- backup to NAS on `date` -=-=-=-=-"
HOME=/root
OPT="-auLptHv --delete $@"
# OPT="-avn --delete" # for debugging -- dry run. --> -n option with this scripts force dry
 run.
EXCL=--exclude-from=$HOME/scripts/rsync_exclude.list
SRCF=$HOME/scripts/rsync_backup.list
TARG=/home/backup/Linux02/root
echo once chd to $TARG     # in order to mount NAS with automounter
pushd $TARG
popd
while read f; do
   tdir=${TARG}`dirname $f`

   cmd="mkdir -p $tdir"
   echo Running : $cmd
   $cmd
   cmd="rsync $OPT $EXCL $f $tdir"
   echo Running : $cmd
   $cmd
done < $SRCF
bkup_cron.sh
#! /bin/sh -f
HOME=/root
LOG=$HOME/scripts/nasbackup.log
LOGSV=${LOG}.old
CMD=$HOME/scripts/nasbackup.sh
MVSIZ=20000000
if [ -f $LOG ]
then
    fsize=`wc -c $LOG | awk '{print $1}'`
#    echo $fsize
    if [ $fsize -gt $MVSIZ ]
    then
        mv -f $LOG $LOGSV
        echo "$LOG is bigger than $MVSIZ. Now moved to $LOGSV" > $LOG
    fi
    # echo "$CMD >> $LOG"
    $CMD >> $LOG
fi 
(目次に戻る)


Dropboxの更新

CentOS 6.5以降ではdropboxが動かない。ホームにある .dropbox等のファイルを消去しても動かない。futexをとろうとしてエラーになっている。

http://bit.ly/1BiwiGA
にあるやり方をしたら、dropboxをダウンロードし始めた。rootのパスワードを聞いてきたあと、メニューバーに一旦dropboxのアイコンが出たところで止まったが、一度、アイコン右クリックからdropboxを落として、再度立ち上げたら同期が始まり、正しく動いている模様。
It is possible to stop the autoupdate by installing Dropbox in a non-user directory where only root has access, e.g. /opt/dropbox. Move the content of the (not updated) ~/.dropbox-dist/versionnumber/ to /opt/dropbox, create a symlink from /opt/dropbox/dropboxd to /usr/bin/dropboxd by # ln -s /opt/dropbox/dropboxd /usr/bin/ in order to start dropbox normaly by the dropboxd command.Be sure /opt/dropbox is owned by root. Now you have a dropbox installation out of your userdirectory, but that is not enough. You have to be sure, dropbox is not written again in ~/.dropbox-dist.You can do this by rm -rf ~/.dropbox-distinstall -dm0 ~/.dropbox-distThat way, nothing can be written in the ~/.dropbox-dist directory.
いつまでたっても同期が終わらないファイルがあり、~/Dropbox のdirectoryに、いつまで経っても、同期中のマークが消えない。これは、所有者がrootで、自分が書き込み権限がなかったため。ownerを自分に変えたら、同期が完了した。

変更は、chown -R user:group  dir1  dir2    のようにして、所定のdirectoryの下に対して、userとgroupの変更を一気にできる。

参考: chownの使い方: http://itpro.nikkeibp.co.jp/article/COLUMN/20060227/230729/

こういう症状はLinuxならでは....

(目次に戻る)


RAIDの修復
mdadmを用いたsoftware RAID化(RAID1) - にも書いたが、Seagate のHDD 1.5TB HDDが壊れRAID1で縮退運転になっていたので、4TBのHDDを2つ用いて、mdadmで新たなRAIDを構築した。

構築後、SATAポートが全部なくなったのでPCIeのeSATA/SATAカード(2ポートを購入し)外部接続boxにeSATAでつないで、生き残ったRAID1の2.5TBのHDDを再利用した。

eSATA/SATAカード (2ポートをショートプラグで内外 切り替える) 

秋葉原のドスパラで買ってきた、外部HDDボックス
 2.5インチ/3.5インチのSATA HDD両対応、eSATA/USB両対応

取り付けた様子

片肺のRAIDも正しく認識されるが、HDDを付け替えるとデバイスの番号が変わる。

Linuxでは、windowやMacと違い、デバイス名が変わってしまうと、起動時のfsckが通らず立ち上がらない。そこで、緊急修復のsingle userモードに入り
# mount -o rw, remount /
でroot filesystemを再度マウントし直し、/etc/fstabで、つながっていないdriveのマウント情報をコメントアウトする作業が必要になった。sync; sync してinit 6でrebootする。

参考) 書き込み権限を変えたりして再マウント: http://www.atmarkit.co.jp/flinux/rensai/linuxtips/390remount.html

Single Userモードで修復している画面 (CentOS 6.5)


故障したHDD

デグレード状態のRAID (HDD追加前)

追加前のHDD (RAIDコンポーネントではない方の /dev/sdc2 を/homeにマウントしていた)




PCIe (x1 Slot) のeSATAカード経由で外部Boxに2.5TBのHDDを移動させたあと、以前 /dev/sdc だったHDDがSATAホストアダプタ経由になり/dev/sdaにかわっている。このため/etc/fstabを変えてやらないと、起動時のfsck (ファイルステムチェック)が通らない。

RAIDデバイス名の修正)

  http://keiotu.blog9.fc2.com/blog-entry-27.html にも情報がある。
/etc/mdadm.conf を手で修正
ARRAY /dev/md0 metadata=1.2 name=Linux01:0 UUID=e2b21783:7907c2cd:9c55d4ae:03ffb118
ARRAY /dev/md1 metadata=1.2 name=Linux02:1 UUID=8167c825:3eeee32b:70ebe215:3b799f2b
boot用のinitramfsを作り直す。
CentOS 5, 6の場合は、http://wiki.centos.org/TipsAndTricks/CreateNewInitrd を参照。
$ cd /boot
$ uname -r
$ cp initramfs-2.6.32-504.12.2.el6.x86_64.img  initramfs-2.6.32-504.12.2.el6.x86_64.img.bak
$ dracut -f
$ ls -lt /boot
-rw-------. 1 root root 19784915  4月  5 10:26 2015 initramfs-2.6.32-504.12.2.el6.x86_64.img
-rw-------. 1 root root 19739458  4月  5 10:25 2015 initramfs-2.6.32-504.12.2.el6.x86_64.img.bak


上記の変更により、reboot後は、/dev/md0のデバイスがなくても、内蔵の4TBのHDD 2本は/dev/md1として認識されるようになった。



Keyboardタイプの変更とremount)
Linuxの場合、/etc/fstabに書かれているデバイスが存在しないと、起動時のfsck (file system check)に失敗して、システムが起動しない。このときは、コンソールで止まっているので、root passwordを打ち込んで、single userで起動する。

この際は、だいたい、/etc/fstabを再編集すれば直るが、その際、root filesystemのremountが必要である。

これは、http://www.atmarkit.co.jp/flinux/rensai/linuxtips/390remount.html
に書かれているように、
 $ mount -o rw,remount /
で良い。

また、デフォルトの設定ではコンソールが、日本語キーボードになっている。英語keyboardを使っているので、このままでは、vi等のコマンドが打てない。
これも、http://bit.ly/1Lj3NQC に修正法が書かれている。一時的な変更であれば、

$ loadkeys us

で良いが、/etc/sysconfig/keyboard を以下のように修正してしまうのが良い。

usキーボード)
KEYTABLE="us" 
MODEL="pc105+inet" 
LAYOUT="us" 
KEYBOARDTYPE="pc"
jpキーボード)
KEYTABLE="jp106" 
MODEL="jp106" 
LAYOUT="jp" 
KEYBOARDTYPE="pc"

UPSを用いたGrace shutdownと再立ち上げの制御UPSを用いたGrace shutdownと再立ち上げの制御

APCのUPS Pro700を用いている。

停電時にはLinuxシャットダウン後、一旦UPSをシャットダウンし、停電復旧後UPSが自動立ちあげし、PCの電源が入ったことで、PCは自動再起動するようにBIOSを設定する。

非常時のために、wake-on-lanも設定し、BBrouterにTCPかUDPの穴を空けておく。(これは、電源を投入することしかできないので、セキュリティ上問題はないと思われる)

設定法)
  1. CentOSでのUPS信号を用いたshutdown)
    http://thehelpfulhacker.net/2012/11/02/graceful-ups-shutdowns-for-your-esxi-server-with-centos/ を参照し以下を実行。

    % su
    # yum install usbutils
    UPSのUSBケーブルを接続
    # lsusb
    Bus 004 Device 002: ID 051d:0002 American Power Conversion Uninterruptible Power Supply
    #  rpm -Uvh http://ftp.osuosl.org/pub/fedora-epel/6/i386/epel-release-6-7.noarch.rpm
    --- 上記サイトは存在しない。browserで調べると以下が最新これは成功。
    # rpm -Uvh http://ftp.osuosl.org/pub/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm
    # yum install apcupsd
    -- 成功。ただし、 rpm -Uvh http://ftp.osuosl.org/pub/fedora-epel/6/x86_64/apcupsd-3.14.10-1.el6.x86_64.rpm  でもいけそう。
    #  chkconfig apcupsd on
  2. 1の冒頭にしたがい。
    # vi /etc/apcupsd/apcupsd.conf
    # service apcupsd start
    # apcaccess
    これで以下の画面が表示される。
  3. VMwareツールは今回は不要。
    root mailの転送を設定してあれば、
    # /etc/apcupsd/changeme で、メイルが配送されるはず。
    # vi /etc/apcupsd/apccontrol で、shutdown -iの行を確認
  4. テスト) UPSのコンセントを抜くと、停電の旨のメッセージはでるが5分待っても落ちない。apccontrol を見ると、バッテリーがいよいよなくなるとUPSからステータスが飛んで落ちるらしいが、このthresholdを変更する。
    http://dev.halhal.info/archives/11 に紹介がある。
    # vi /etc/apcupsd/apcupsd.conf をして、2番に戻る。
    BATTERYLEVEL 30  // shutdownに入る残りバッテリー残量 (%)
    MINUTS 6    // shutdownに入るときの、残りバックアップ可能時間(min)
    TIMEOUT 120 // shutdownに入るまでのタイマー(sec)
    注意) ただし、以下のKILLDELAY を設定すると、停電かどうかにかかわらず、USBを繋ぐと一定時間(以下の設定だと120秒)で、UPSが落ちるようになり、困ったことになった。USBのHWか、Linuxのドライバにバグがあり、UPSに対してシャットダウンのコマンドを送り続けている可能性がある。(RebootしてBIOS設定の画面でも起きているのが不可解だが、以下を除去して、service apsupsd restartを発行したら治ったので、USB通信の問題には間違いがなさそうである。
    KILLDELAY 120 // shutdownを行ってから、UPSが落ちるまでの時間(sec)
  5. Daemonの設定から、起動時にapcupsdがdaemonとして立ち上がるように設定をしておく。
  6. 参考リンクにある「コマンドラインからのハイバネート(休止状態)」が便利なので、
    /etc/apcupsd/apccontrol を編集して、doshutdown) の行を以下に書き換えておいた。(rootのshellからこのコマンドを打つとハイバネートするコトは確認したが、apcupsdとしての動作は未確認)

     echo "UPS ${2} initiated Hibernate Sequence" | ${WALL}
     echo disk > /sys/power/state
  7. おまけ)webベースのUPS状況報告ツールのインストール
    # yum install apcupsd-cgi
    # chkconfig httpd on
    # service httpd start

    apacheが入っていないので、まだ動かない。。
PCのBIOSから、電源再投入時の自動起動の設定をする。私のMother boardの場合には以下の三つがあったので、以下の写真のようにpower failure前の動作状態に持って行く。を選んだ。
BIOSのPower 再投入時の動作設定

他にも電源に関する機能がある

関連リンク)
APC UPS PRO700の仕様)
http://www.apc.com/resource/include/techspec_index.cfm?base_sku=BR700G&tab=features

同Smart Commandの一覧)
http://homepage1.nifty.com/Que/plamo/apc-ups/manual/upsbible.html

USBに対する指示)
https://sturgeon.apcc.com/kbase.nsf/0/4efe298bbb38ad4f49256fc4002ad2e7?OpenDocument

コマンドラインからのハイバネートとsleep)
http://www.zedt.eu/tech/linux/console-commands-to-hibernate-and-standby-on-centos/

USBからUPSのシャットダウン)
http://www.omron.co.jp/ese/ups/support/faq/soft/a_upssoft_030507b.html

Wake on Lan)
http://ja.wikipedia.org/wiki/Wake-on-LAN



blog comments powered by Disqus