調べたいことメモ

DNSサーバについて

  • Route53の仕組み,

キャッシュされるまでが速いという話だった気がするが、どういう仕組だったか。

DNSレコードの保全が特殊だと言う話だった気がするが、どういう仕組だったか。

  • DNSレコード 浸透問題

ちゃんと関連記事を読む。

更新されなかったドメインに保留期間があったり、
その後何ヶ月か取れない状態になったりしてるみたい。
ライフサイクルがどうなってるのか調べてみたい。

Linuxのinfoアカウント

概要

info@hogehoge.local というようなメールアドレスは、
よくサイトのお問い合わせ窓口などに使われていると思う。

そういう通例にのっとって、
新しいサイトでも info@hogehoge.local というアカウントを作ったのですが、
サイトのお問い合わせフォームに問い合わせが入ると、
info@hogehoge.local に内容を送信する、という良くあるやつ。

メールが届かない

この時、WEBサーバにインストールしたpostfixのホスト名を、
良かれと思い hogehoge.local としました。

そしてLinuxは標準の状態で infoアカウントはエイリアスに記載されており、
postmasterへ配送されるように設定されています。
さらに、postmasterはrootへエイリアスされています。

そうすると

WEBお問い合わせフォームから、問い合わせを送る
→info@hogehoge.localへメールを送る
→WEBサーバ自身のinfoアカウントへローカル配送される*1
→info アカウントからエイリアスエイリアスされて、rootアカウントへ配送される
→お問い合わせのメールが転送されてないじゃないか!と責められる

なので、こういった事態を避けるためには

  • WEBサーバのSMTPホスト名を別名にする

fuga.hogehoge.localに変更しました。

/etc/aliases を編集

これでローカル配送されずに、
外部のメールサーバへ配送されるようになりました。

*1:WEBサーバのpostfixは自分のホスト名が[hogehoge.local]だと設定されているから

AWS IAMって

API経由での操作を制限するものなんですね。

マネジメントコンソールでの操作を制限するものなのだとばかり思ってて。

「制限かけたユーザでログインしたマネジメントコンソールがポリシー通りになってない!なんでだ!」
って5日間くらい悩み続けた結果。

アクセスキーや証明書を使ったAPI経由の操作を制限するものだって事に気付いた…。

AWStatsの解析結果を静的HTMLで残す

AWStatsRPMでインストールすると、付属ツールがインストールされる。
その中の一つに awstats.pl に直接渡すと引数だらけで面倒くさいHTML出力を、
仲介してくれる便利なツールがあった。

普通なら

/var/www/awstats/awstats.pl -config=fugahoge.com -output -staticlink > /var/www/awstatsreport/index.html

こういう叩き方をするのですが。

これだと出力されたHTMLはサマリーページのみで、
それぞれの詳しい項目、たとえば「不明なIPアドレス」といった項目にアクセスすると、
動的なページに遷移してしまい、静的HTMLを残している意味が無くなってしまう。

詳細な項目は -output= の引数に渡す事で それぞれの静的HTMLが出力出来るのですが、
全てのページを出力するという引数が無いらしい。

awstats_buildstaticpages.pl

そこで仲介してくれるツールを使うという事みたいだ。

perl /usr/bin/awstats_buildstaticpages.pl -config=fugahoge.com -lang=jp -dir=/usr/local/apache2/htdocs/awstats/html/201306 -month=06 -year=2013 -awstatsprog=/usr/local/apache2/htdocs/awstats/awstats.pl

引数の説明なんかは本家サイトに書いてあった。
なんで過去の結果を出力出来ないのか!と言いながらその手法を探していたのだけど、
ようやく見つかったのでメモしておく。

なんでかな

これなんであんまり書いてる人が居ないのかな。
AWStatsがもうそんなに使われてないって事なのかな。
そうなんだろうなー。

rsyncのエラー と sshdの設定

ssh経由のrsyncで同期する処理をcronで登録して、動作させていたのですが、
エラーが出ていて原因は何か調べていました。

rsyncのエラー

ssh_exchange_identification: Connection closed by remote host
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]

hosts.allowが原因?

調べてみると原因らしきものはいろいろとあって。
hosts.deny と hosts.allowによってsshdの通信相手を制限している場合、
許可されていないから、エラーが出ている。という場合があるそう。

これが原因かと思い、ネットワークアドレスで指定していた許可を、
IPアドレスに変更したりしたものの、エラーは出続けたので、
これが原因では無さそうという事になった。

sshdの設定が原因?

また他の対処方法を調べてみると、
sshdの起動プロセス数制限という設定が原因というのがあった。

確かに同期する場所を複数指定している処理なので、
同時に何個もプロセスが立ち上がるだろうと思い、
sshd_configのMaxStartups という設定を変更した。

最初は10になっていたが、エラーが出続けたため、
30に設定したらエラーが出なくなった。

これが原因か―、という事で備忘しておく。

この原因を特定するまで凄く時間がかかったのですが、
なんでかっていうとバッヂ処理で行っているコマンドを、
1個直接実行するだけだと、失敗しないしエラーも出ないからです…。

バッヂ処理してるスクリプトを実行するとエラーが出るっていう、
なんとも不思議な現象でしたが、理由が分かると納得ですね。

SSHの接続が遅い

hosts に互いのレコードが追加されているか確認する。
のが良いかもしれないというお話。

接続元サーバは グローバルIPとローカルIPを持っていて、
接続先サーバはローカルIPであった場合。

接続先サーバでは 接続元サーバの名前解決を行うと、
グローバルIPアドレスが返って来るため、
SSH接続のネゴシエーショングローバルIPに返してしまう。

ローカルIP同士で通信すればすぐに済む話が、
グローバルIP側を回ろうとすることで遅くなっていた。

接続先サーバの hostsに 接続元サーバのローカルIPを追記したところ、
接続するまでが早くなった。

vi 便利な使い方

vi で特定の行から行までの置換をするやり方。
便利すぎるのでちゃんと覚えよう。

開始行から終端行まで確認なしで置換

:開始行番号,終端行番号s/置換前/置換後/g

:14,25s/hoge/fuga/g

開始行から終端行まで一つずつ確認しながら置換

:開始行番号,終端行番号s/置換前/置換後/gc

:14,25s/hoge/fuga/gc