Linuxユーザの立場から、役立つ情報や困ったときの解決方法を分かりやすく、かつ簡潔に記事にまとめています。主に、Ubuntu 8.04(→9.04)やCentOS 5.2(→5.3)で確認したことですが、他のディストリビューションでも応用できると思います。内容は(1)設定ファイルの書き方(2)役立つソフトウェア紹介やインストール方法(3)便利なコマンドの使い方や活用例(4)困ったときの解決方法です。このページの末尾にキーワード別で記事を分類してあります。また、真上の「ブログ検索」フォームからブログ内の記事を検索できます。

2009年7月23日木曜日

Latexで組合せの数 このエントリーを含むはてなブックマーク

Latexとは、数式の含まれる文書を作成するために使われるソフト。組合せの数を出力する方法を調べたので、まとめておく。日本では、n個からr個を選ぶ組合せの数をnCrなどと表すが、この記法は世界標準ではないらしい。ちなみに、nCrをlatexで表示するには、次のように書けば良い。

{}_{n}C_{r}

外国では、丸括弧で囲まれた中に上にn、下にrを配置させた記法が一般的なようだ。この記法での表示方法を調べたところ、次のようにすれば良いことが分かった。

{{n}\choose{r}}

他にも、array環境を使って書くこともできる。

\left(
\begin{array}{c}
n\\
r
\end{array}
\right)

2009年7月20日月曜日

ハブが故障 このエントリーを含むはてなブックマーク

先日のネットワークダウンに引き続き、同じような症状でネットワークダウンが発生した。調査結果をまとめる。

/var/log/messageに以下のようなエラーが表示され、ネットワークを利用できなくなった。

Jul  8 04:12:56 hoge dhcpd: receive_packet failed on eth2: Network is down

前回と違うのは、以下のようなlink downというエラーが出ていなくて、link upとなっていたこと。

Jul  8 04:16:15 hoge kernel: r8169: eth2: link down

結局、サーバに直接つなげていた、大元のハブ(そこから内部ネットワークに分配)が故障していたらしい。というのは、ハブを経由しないで、直接サーバにPCを接続したら、問題なくネットワーク接続できたから。

2009年7月10日金曜日

ネットワークエラー このエントリーを含むはてなブックマーク

本記事では、/var/log/messageに出てくる次のようなエラーの原因調査の結果をまとめる。

Jul  8 04:12:56 hoge dhcpd: receive_packet failed on eth2: Network is down
Jul  8 04:16:15 hoge kernel: r8169: eth2: link down
Jul  8 18:27:13 hoge kernel: ADDRCONF(NETDEV_UP): eth2: link is not ready

などというエラーが出て、あるとき突然ネットワークがダウンしてしまった。r8189というNICとの相性が悪い場合があるという情報や、ケーブル不良、NICの不良などを疑ったけれど、理由が分からなかった。

結局いろいろ調べてみて分かったことは、(NICを複数さしているのだが)eth0,eth1,eth2の割り当てが入れ替わっていたのが原因だった。

各NICに対応するethNをきちんと対応させるためには、CentOSでは/etc/sysconfig/network-scripts/ifcfg-ethNで、NICのMACアドレスを登録することで固定できるらしい(NICの認識順序を固定する)。しかし、この設定をしても最初はうまくいかなかった。調べてみたら、/etc/modprove.confでエイリアスが設定してあって、そちらが有線されていたようだ(NIC の設定にMACアドレスを入れないと入れ替わってしまうLinux eth0 と eth1 が入れ替わってしまうのを固定したいCommentsAdd Star)

2009年7月5日日曜日

ログの一元管理 このエントリーを含むはてなブックマーク

@ITの「連載:止められない基幹業務サーバの管理対策」の「第8回 syslogによるログの一元管理」が参考になるので、メモしておく。ルータのログ、各種サーバのログを一元管理しておくと作業が楽になる。

TCPWrapperによるアクセス制御 このエントリーを含むはてなブックマーク

@ITの「連載:止められない基幹業務サーバの管理対策」の「第3回 サービスをセキュアにするための利用制限〜TCP Wrapperによるサービスのアクセス制限〜」は参考になるので、メモしておく。

2009年7月3日金曜日

多段SSH接続(2段) このエントリーを含むはてなブックマーク

本記事では、いくつかのサーバを経由して、目的のサーバにSSH接続する、いわゆる多段SSH接続に関するいくつかのチップスをまとめる。ちなみに、ここでは、server1を経由してserver2にssh接続する2段接続の場合の説明とする。もっと良い方法・改善点があれば、教えてください。以下の方法はすべて自己責任で行ってください。私はここで説明した方法によるいかなる損害にも責任を持ちません。

以前、socksサーバ経由でSSH接続する方法という記事を書いたので、適宜参照すると良いかもしれない。

まず単純に、2段接続するには、次のコマンドで良い。ホストuser1@server1を経由して、ホストuser2@server2に接続する方法である。

$ ssh -t user1@server1 "ssh user2@server2"

tオプションをつけてあることに注意してほしい。これがないとエラーが出て怒られてしまう(以下)。仮想端末を強制的に割り当てるという意味。リモートマシン上で、screen-basedなプログラムを実行するときに使われるオプションらしい。 From man of ssh

$ ssh user1@server1 "ssh user2@server2"
Enter passphrase for key '/home/hoge/.ssh/xxxx': xxxxxxxxxxxxxxxxxxx 
Pseudo-terminal will not be allocated because stdin is not a terminal.
Permission denied (publickey,gssapi-with-mic).

socksを経由してuser1@server1に接続し、さらにuser1@server1を経由してuser2@server2に接続する場合も同様。以下のように.ssh/configにsocksのための設定を記述してあるとせよ。

Host user1.server1.socks
 HostName server1
 User user1
 Port 22
 ProxyCommand /usr/bin/connect -a none -S socks-proxy.xxx.jp:1080 %h %p

そのとき、次のように実行すれば良い。

$ ssh -t user1.server1.socks "ssh user2@server2"

多段接続する必要性は、例えば、会社の内部ネットワークにあるサーバserver2に接続したいが、内部ネットワークにアクセスするには、ゲートウェイであるserver1を経由しなければならないときである。もちろん、1ステップごとsshでアクセスして、最終的にserver2(より一般にserverN)にアクセスしても良いが、ある一定回数以上、単純作業を繰り替えしていると、耐えられなくなるときがあるらしい。

あるいは、内部ネットワークだけで公開している、Webサイトなどを見たいときは次のようにする(ただし、この方法は、内部ネットワークにあるプロキシサーバにSSH接続できる場合に限られる。なければ、ssh接続できるサーバにプロキシを立てる。)。

SSHポートフォワードを使えばよい。つまり、ローカルマシンの空きポート18080をプロキシサーバserver1 (ユーザ名user1)のプロキシ用ポート8080に転送すれば良い。

$ ssh -N -L 18080:localhost:8080 user1@proxy.server1

そして、ブラウザのプロキシ設定にて、localhostの18080をプロキシとして登録しておけば良い。もちろん、ローカルマシンが別のネットワークにあり、そこを出るためにSocksを経由しなければならないときは、上のようにsocksの設定をして、次のコマンドを打てば良い。

$ ssh -N -L 18080:localhost:8080 user1.server1.socks

抜け道を使っているようで、少し心が咎めるが、もともとSOCKSプロキシを利用できるということは、”そのネットワークにおいて、そういうことを許可しているということなのだ”、と理解する。

また、最初の設定で、user1@server1を経由して、user2@server2のとあるディレクトリに、ローカルマシンのデータをrsyncでバックアップするには、次のような手順で行う。まず、ダイナミック転送の設定を行う。ダイナミック転送は、転送先のポートを指定しなくて良いので楽である(ローカルマシンをsocksサーバとして使用する)。まず、ローカルマシンの空きポート(ここでは10022番)をuser1@server1に転送する。

$ ssh -N -f -D10022 user1@server1

次に、user2@server2へのssh接続の設定を.ssh/configに記述する。

Host user2.server2
  HostName server2
  User user2
  Port 22
  ProxyCommand /usr/bin/connect -S localhost:10022 %h %p

最後に、次のようなスクリプトbackup.shを作成する。

#!/bin/sh

#年月日入りログファイルに、バックアップログを書き込む。
LOG_NAME="$(date +%Y%m%d)_rsync.log"

#バックアップをとってほしくないファイル、ディレクトリのリストを作成して、rsync_exclude.lstに書き込む(フォーマットは、1行に1つ記述)
EXCLUDE_FROM_LIST="rsync_exclude.lst"

#バックアップ元のディレクトリ(hogeユーザのホームディレクトリ以下をバックアップする場合)
SOURCE=/home/hoge

#リモートホストuser2@server2のホームディレクトリにbackupというディレクトリにバックアップを保存する。
TARGET="server2:/home/user2/backup/"

rsync -avz --delete -e ssh --log-file=$LOG_NAME  --exclude-from=$EXCLUDE_FROM_LST  $SOURCE  $TARGET

もちろん、ローカルマシンがSOCKSサーバを経由しないとインターネットに接続できないときは、上のuser1.server1.socksを使えば良い。以上

2009年7月1日水曜日

イーサネットケーブル作成の覚書 このエントリーを含むはてなブックマーク

本記事では、イーサネットケーブルを作成する際に気づいた覚書をいくつかまとめる。

イーサネットケーブルを作成する方法は、ネット上にすでに多くあるので、そちらを見て作成してみた。

必要なものは、以下の通り。RJ-45のコネクタ、圧着工具、被覆をはぐためのもの(カッターなど)、ケーブルを切断するもの(ニッパーなど)、ケーブル。あと、オプションで、ケーブルを固定するために、私はワイヤーステッカーなるものと、どのケーブルか見分けるためにのマスキングテープ←これにペンで記入して貼り付ける。

私が購入した圧着工具は、ケーブルを切断するためのカッターと、被覆をはぐためのカッターが付属していたので、便利だった。

ケーブルは、敷設するネットワークの大きさをあらかじめ見積もって、必要な長さ以上のものを購入すること(私は、見積りが不十分で、追加でケーブルを買うハメになった)。ケーブルは、単線、ストレート、エンハンスドカテゴリ5のものをチョイスした。コネクタは、エンハンスドカテゴリ5対応のもを購入した。

作成方法は、ケーブルをカッターなどで切断して、中に入っている6本ほどの線をほぐす。これらの線はよってあるので、まっすぐにそろえるのは慣れないと少し大変だと思う。コツは、よってある線を十分元の方までほぐし、必要な長さをところで、カットする(圧着工具付属のカッターは、しっかり固定して切断できるので、線をきれいにそろえて切断できた)。

切断してそろえた6本ほどの線をコネクタに差し込む。もちろん、これらの線の並び方は、一律に決めておかないといけない(ケーブルの両端で矛盾しないように)。私は、白オレンジ→オレンジ→白緑→青→白青→緑→白茶→茶の順に並列に並べて、コネクタに差し込んだ。細かい作業なので、並び方がずれたり、十分奥まで差し込めてなかったり、などケーブル不良の原因にならないように注意すること。

差し込めたら工具で圧着する。ここで、圧着が不十分だと、ケーブル不良になるので、念入りに圧着すること(私はここでつまずいた)。以上

追記:ネットワークが突然ダウンしてしまった。NICを代えたり、いろいろと調べてみて分かったことは、ケーブル不良らしいということだった。圧着が十分でなかったか、ケーブルの被覆をはぐときに、内部の導線を傷つけたか?ケーブルテスタがほしい。

無線LANアクセスポイントWLA-G54の設定 このエントリーを含むはてなブックマーク

本記事は、Buffaloの無線LANアクセスポイントWLA-G54のLinuxからの設定で、分かったことをまとめる。

この製品は、ルータ機能のない、アクセスポイントである。設定するには、有線あるいは無線で、このアクセスポイントにブラウザからアクセスして行う。しかし、作業をしているネットワーク(プロキシで隔離されたDHCPによるプライベートネットワーク)で、Linuxからアクセスしても設定画面が表示されなかった。

ネット上には、同じように設定画面が表示されないという情報がいくつか見られた、本質的な解決になるような手がかりは得られなかった。アクセスポイントのIPアドレスは、製品ごとに違うし、設定で変更できるので、中古で入手した場合は既に変更されているかもしれない。初期化ボタンが本体にあるので、初期化すると、デフォルトのIPアドレスに戻すことができる。

ちなみに、WLA-G54のデフォルトIPアドレスは192.168.11.1だった。初期化してから、このアドレスにブラウザでアクセスしたが、何も表示されなかった(もちろん、プロキシは使わないで直接接続している)。次のコマンドで調べたら、アクセスポイントの有線側のMACアドレスおよび192.168.11.1が表示されるので、ネットワーク上には存在するらしい。

$ arp -a

結局、他のネットワーク(ここも、プロキシで隔離されたDHCPによるプライベートネットワーク)で、Windows機から設定した。アクセスポイントの設定には、作業用PCを有線・無線いずれでアクセスポイントに接続しても、設定はできるようだ。ここでは、有線から設定した。

方法は、まず無線LANアクセスポイントおよび、作業用Windows機をネットワークにそれぞれ接続。そして、BuffaloのWebサイトから、設定用のソフトをダウンロード&インストール。設定ソフトを起動して、アクセスポイントのIPアドレスをDHCPで取得するように設定。その後、アクセスポイントのアドレスでブラウザが自動で立ち上がるはず(そうでないなら、作業用PCからIPアドレスを調べて、そこにブラウザからアクセスする)。うまくいけば、認証ダイアログが現れるはず。パスワードなど設定していなければ、ユーザ名でrootを入れるだけで、ログインできる。

以下は、設定内容に関するメモ。デフォルトの設定から、変更した点は以下の通り。まず、暗号化方式はAESを設定し、パスワードは適当に決める。暗号化方式は、wep,tkip,aesの3種類が選択できるが、セキュリティおよびその方式を利用できるマシンとの兼ね合いで決める。ESSIDを任意に決める。ANY接続を許可しない。本体情報(?)なるところで、アクセスポイントの名称を任意に登録する。また、rootのパスワードも設定する。以上

Ubuntu9.04を入れてあるマシンから無線LANカードBuffaloのWLI-CB-54を使って接続するときに、このマシンにおける設定内容は以下の通り。まず、Ubuntu 9.04で無線LANにあるように、あらかじめドライバをインストールして、無線LANが利用できる状態にしておく。そして、次に無線接続のためのプロファイルを作成する。

「システム→設定→ネットワーク接続」で無線のタブの追加ボタンを押す。接続名を適当に決める。SSIDには、アクセスポイントに設定したSSIDを入れる。無線セキュリティでは、WPA&WPA2パーソナルを選択し、アクセスポイントで設定したパスワードを入れる。IPv4設定では、メソッドで自動(DHCP)を選択する(ここは、利用ネットワークごとに、適切に変更する必要があるかもしれない。例えば、IPは固定でH割り振られているときなど)。無線セキュリティでは、WPA2は調べてみると暗号化方式にAESを実装したものらしいので、これで良い。パーソナルの他にエンタープライズというものもあるが、これは、認証サーバを使う場合らしいので、今回はエンタープライズでなくパーソナルの方を選択している。

後は、ネットワークマネージャのアプレットから、無線を有効にする。アクセスポイントではANY接続を許可しないようにしているので、利用できるアクセスポイントの一覧に、今回設定したアクセスポイントは含まれていないはず。ステルスモードで、アクセスポイントに接続するといったような項目があるので、それを選択し、上で作成したプロファイルでアクセスを試みる。うまくできていれば、これで接続が確立されるはず。

追記:Any接続を拒否したら、接続できなくなった(昨日は、接続できていたはずなのに)。原因不明。

キーワード

キーワード別に記事を分類してあります。クリックすると各キーワードに該当する記事たちが表示されます。

筆者について

自分の写真
趣味はコンピュータ、音楽、写真などです。