Monthly Archives: 4月 2014

特定のIPを持った端末がどこにつながっているかを特定する

とりあえずある問題が起こって、特定のIPをもつデバイスが物理的にどこに存在しているのかを確かめる必要があった。事の経緯はこんな感じ。

あるネットワーク内で新しくホストを立てた。ssh接続をしようとすると、なんだかconnection refusedされてしまう。でもpingが通る。色々調べたところ、どうやら同じipを使用する固定ホストが居る事が判明。(bind的には空いていたのだが。。)恐らく誰もその実態を把握しておらず、そのマシンがどこにあるのかすらも分からない。そこで、悪いやつを見つけて対処をしようとなったのが今回の流れ。ちなみに対象ネットワークは、firewall、ゲートウェイスイッチ、その下に10個未満のインテリジェントスイッチがあって、その先が末端orバカハブという感じ。

まぁでもどうやってその場所を見つけようかねってことになって、思いつかれた方法が二つ。

1. L1的な努力で頑張る
上流スイッチから順番にネットワークをL1的に切り分けて行って、疎通しないところに先にそのデバイスがあるはずだ。まぁ要するにpingを飛ばしといて、上流のポートを一つずつ抜いて行って、疎通が切れた先に居るよねという話。まぁ最悪これ。もちろん大事な通信してる時に切れちゃう可能性もあるので、最悪の手段ですが、こうやって見つけられなくはない。

2. スイッチの機能から頑張って追う
僕はインフラ屋さんじゃ無いので、どこまでの情報をインテリジェントスイッチが教えてくれるのか、あまり知らなかったのですが、スイッチだけにどのポートにどのmacアドレスがつながってるかは教えてくれるみたいですね。従って、その端末のmacアドレスさえ分かれば、下流にたどって行く事で先が見えると。

今回はまぁ急ぎじゃなかったので、2でやる方法を調べるかーってことで、みんなで調べながら見事犯人を突き止める事が出来たので、やり方を書いておきます。あ、実際やる方法はめちゃくちゃ簡単ではあります。また、Ciscoスイッチという前提でやってます。

まず、今回使ったのがCiscoのレイヤ2 Traceroute ユーティリティー。これは同じネットワークセグメント内のホスト同士であれば、macアドレスも同時に教えてくれる。コマンドは以下。(ちなみにenable必要)

んで、例えば調べたい対象のipアドレスが555.666.777.888ならば、同じセグメントに属する111.222.333.444のマシンをソースとして、次のように打つ。

そうすると、こんな風に返ってくる。

ここで、何と見つけたいホスト555.666.777.888のmacアドレスが00:00:ff:ff:22:22である事がわかった。とりあえずココマデ分かればベンダーコードから、ある程度どんなマシンかが推測できますね。

次。今度はこのmacアドレスをもとにどのスイッチのどのポートにぶら下がっているかを特定して行く。これもインテリジェントスイッチのmacアドレステーブルを見て行けばいいようだ。macアドレステーブルの見方はこう。

こうすると、こんな結果が返ってきますね。

そうすると、先ほど調べたmacアドレスを見る感じ、どうやらこれはGi0/2の先にありそうだと分かる。そこで、Gi0/2の先にある物を調べる。そして、スイッチだったらまた同じようにmacアドレステーブルを見て、そう出なければそのあたりが犯人という事になりますね。

こんな感じで、特定のipを持つある端末を特定する事が出来ました。

なかなかスイッチの仕組みを知っていても(ipとmacがわかればわかりそうってことを知ってても)インテリジェントスイッチがどこまで情報を提供してくれているのかが分からない状態だったので、暗中模索でしたが、とりあえずインテリジェントスイッチはインテリジェントだったってことで、助かりました。

めでたしめでたし。

さくらのレンタルサーバでowncloudを動かす

ついに最近Dropboxの要領がパンパンになってしまった。。。

一応身内や大学でオンラインストレージサービスは提供されているんだけれども、大学から出たりした時にアカウントがなくなってしまったりとか、そういうのが怖い。永続的な物にしたいと思ったらやっぱり自分で管理なきゃかなと思って、自分のレンタルサーバでowncloudを動かす事にした。

正直レンタルサーバだと通信回線が遅かったりとか、圧迫してるとかいう理由で切られそうで怖かったのですが、とりあえずは今のところ動いています。ただ、やっぱり遅い。

やり方は非常に簡単で、3ステップ。

1. webインストーラを公式ページから持ってきてowncloudのディレクトリを配置したい場所に置く
2. それにブラウザからアクセスして設定(その際サーバの.htaccessをちょこちょこいじりながら進める)
3. owncloud用のphp.iniを作成する

まず1は超簡単。公式ページ(http://owncloud.org/)に行って、サーバサイドのインストール的なところに行って、webインストールを選ぶ。そうすると、phpファイルがダウンロードされるので、これを、owncloudのディレクトリを配置したい場所に配置(インストールが完了するとこのファイルをおいた場所にowncloudとか任意のフォルダ名が出来上がる)。簡単ですね。

次に2。と、その前にさくらのサーバコンソールでowncloud用のmysqlデータベースを作成しておきましょう。

そのファイルにブラウザからアクセスしましょう。まず要件チェックが走ったりなんだりします。phpのバージョンが古いとか言われたら、これまたさくらのサーバコンソールでボタン一つでphpのバージョン変えられるので新しめのものにしましょう。

で、インストールが始まるのですが、進めて行くと、500 internal server errorが出ます。そしたら、サーバに直接ログインして.htaccessの一番下の方のOptions -Indexesをコメントアウトしましょう。

そうすると先に進めます。ちなみこれ、何回か出ます。でも500のエラーは全部これが原因なので、出たらココを直しましょう。もちろん、インストール時だけです。インストール終わればこんな事はありません。

で、最初のadminユーザを決める部分が出てくるのですが、この部分で同時にデータベースの設定が出来るので、しましょう。デフォルトはSQLiteかなんかになってるのですが、mysqlで今回はやりました。で、進めると、何となくインストールが出来るけど、表示が崩れる。表示がおかしい。なんだこれ、ってなる。

そこで3。ソース見てないから何とも言えないけど、とりあえずファイルの最大転送サイズとかを設定しないと正しく表示されないみたいですね。というわけで、インストールしたディレクトリ(.htaccessがあるディレクトリ)に改めてphp.iniを作って配置してあげます。内容はこんな感じ。一応理由としては、さくらのレンタルサーバでのphpデフォルト転送MAXサイズが2MBなんですと。どうやらそれが悪さしてるみたいですね。

これで全てがうまく行く、はず。

参考URL: http://ameblo.jp/pcroom123/entry-11665283614.html