仙石浩明の日記

2006年3月19日

GCDバックアップ回線の監視(2)

sshによるバックアップ回線の監視を仕掛けて一日、 タイムアウト(監視プログラムには 10秒のalarmを仕掛けている) エラーが発生。

なぜかと思って調べてみると、 同一IPアドレスからのsshアクセスが多い、 という理由でブロックされてしまっていた (^^;)。 ssh攻撃が多い昨今、GCDのサーバには、 次のようなフィルタが仕掛けてある:

iptables -N block_ssh 2>/dev/null || iptables -F block_ssh
iptables -N ssh 2>/dev/null || iptables -F ssh
iptables -A block_ssh -j LOG --log-prefix block_ssh: \
        -m recent --name block_ssh --set
iptables -A block_ssh -j DROP
iptables -A ssh -j REJECT -p tcp --syn \
        -m recent --update --seconds 600 --name block_ssh
iptables -A ssh -j block_ssh -p tcp --syn \
        -m recent --rcheck --seconds 60 --hitcount 5 --name syn_ssh
iptables -A ssh -p tcp --syn \
        -m recent --set --name syn_ssh
iptables -A ssh -j ACCEPT

# この設定は http://d.hatena.ne.jp/hirose31/20050920/1127208718
# を参考にさせて頂きました (_O_)

つまり 1分間に 5回以上、同じIPアドレスから ssh接続があると、 10分間ブロックする。 監視元IPアドレスが、いったんブロックされると、 毎分接続を試みるわけだから、ずっとブロックされたままになる。 あわてて、監視元IPアドレスをブロック対象からはずした:

iptables -I ssh -j ACCEPT -s 60.32.85.216/29
Filed under: システム構築・運用 — hiroaki_sengoku @ 23:07
2006年3月18日

GCDバックアップ回線の監視(1)

GCD は、bフレッツでインターネットに接続している。 普通に PPPoE しているほか、 フレッツ・ドット・ネットを使っているので、 ネイティブ IPv6 でも外部から (といっても、フレッツ・ドット・ネットを使っているサイト限定だが) 接続できるので、 PPPoE がこけた (設定変更をミスったときなど) ときでも リモートから復旧させることができる。

普通はこれで十分なのだが、さらに念のためということで、 フレッツADSL でもインターネットへ接続して バックアップ回線としている。 bフレッツ側が全滅しても、 ADSL経由でログインできるようにしてある (もちろん、それぞれ別系統のハブに接続してあるし、 ログイン先のサーバは複数ある)。

このバックアップ回線は滅多に使わないので、 いつのまにか不通になっていても気づかないかもしれない、 ということで、さくっと (設定込みで 30分くらい) 監視プログラムを仕掛けた。 単に bフレッツ→インターネット→フレッツADSL 経由で ssh ログインするだけのプログラムを cron で定期的に走らせるだけだが、 不通になっていることに気づかない、という事態は避けられるだろう。

Filed under: システム構築・運用 — hiroaki_sengoku @ 22:47
2006年3月17日

「分からない」と言おう

技術者にとって一番重要なのは、「分からない」と言える能力。 太古の昔から、無知の知と呼ばれているもの。

なにが分かっていないか、分からなければ勉強のしようがない。 分かったつもりで済ませていては、いつになっても真の理解は不可能。

小学生のころ、私は答案に平気で「デタラメ」を書いていた。 デタラメを書いているという意識ではなく、 分かったつもりになって正しい答えを書いているつもりだった。 あまりに自由な発想でデタラメを書くので親が心配したほど。

ところが、中学生のころ、同級生にとても優秀な奴がいた。 彼は、一を聞けば十を理解した。 あまりに早く分かったというので、信じられずに 残りの九を説明しようとすると、先回りして答えられてしまった。

そんな彼が、「分からない」を連発する。 つまり分かった、と言うのも早いが、 分からない、と言うのもとても早かった。

そんな彼を見て、私は「分からない」と言えるのは カッコイイことなんだと思った。 なんとかして自分も、「分からない」と言えるようになりたい、 と思った。

自分が本当に理解しているのか、 それとも単に分かったつもりになっているだけなのか、 常に自省する習慣が身についたのは、 彼のおかげだと思う。

Filed under: 技術者の成長 — hiroaki_sengoku @ 09:26
2006年3月16日

マルチキャスト (1)

GCDの二台のゲートウェイのうちの片方 (senri.gcd.org) の 1000baseT NIC (eth0) が時々マルチキャストをとりこぼす。 二台のゲートウェイは、 VRRP で アクティブ・スタンバイ構成になっているのだが、 senri がスタンバイのときに、 もう片方 (asao.gcd.org) からの VRRP Advert をとりこぼしてしまい、 勝手に アクティブへ昇格しようとする。 一日~数日に一度くらい、このとりこぼしは起きるようだ。 アクティブになっても、 OCN へ PPPoE しに行って失敗して (asao が PPPoE しているから) スタンバイへ戻るので、まあ実害はないのだが、 あまり気持ちのよいものではない。

eth0 で VRRP するのをやめて、 eth1 (100baseT NIC) で VRRP するようにしてみた。 eth1 は PPPoE (と、フレッツ・ドット・ネットのネイティブ IPv6) 専用で、 IPv4 アドレスは割り当てていないのだが、 マルチキャストなので VRRP Advert は受け取れるようだ。

keepalived.conf はこんな感じ:

vrrp_instance VI {
    state MASTER
    interface eth1
    garp_master_delay 10
    virtual_router_id 33
    priority 230
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass XXXX
    }
    virtual_ipaddress {
        192.168.0.254/24 dev eth1
    }
    preempt_delay 300
    notify "/etc/rc.d/vrrp_notify"
}

アクティブの時の asao:

asao.gcd.org:/ # ip addr show dev eth1
4: eth1: <BROADCAST,MULTICAST,UP> mtu 1500 qdisc pfifo_fast qlen 1000
  link/ether 00:a0:cc:xx:xx:xx brd ff:ff:ff:ff:ff:ff
  inet 192.168.0.254/24 scope global eth1
  inet6 2001:c90:1448:200a:2a0:ccff:fexx:xxxx/64 scope global dynamic
    valid_lft 2591983sec preferred_lft 604783sec
  inet6 fe80::2a0:ccff:fexx:xxxx/64 scope link
    valid_lft forever preferred_lft forever
Filed under: システム構築・運用 — hiroaki_sengoku @ 08:50
2006年3月15日

メモを取ろう

人は誰しもすぐ忘れるもの。 なにかやりたいことがあっても、すぐ忘れる。 せっかく空き時間があっても、そのときはやりたいことを忘れている。 そのくせ、やりたいことはあるんだけど、時間がない、などと言う。

ほんの一行、いや一単語だけでもメモに書いておけば、 たいていの場合、そのとき何を考えていたか、思い出せる。 その一単語を、空き時間ができたときに膨らませていけば、 チリも積もればなんとやらで、一つの成果となる。

この blog も、そんなメモのつもりで書いていきます。 で、空き時間をつかって内容を膨らませていき、 近日オープン予定の blog ページで公開する予定。

4/5追記: 仙石浩明CTO の日記をオープンしました。

Filed under: 自己啓発 — hiroaki_sengoku @ 19:43
2006年3月15日

セキュリティ

セキュリティって、 分かっている人にとっては、 条件反射というか無意識のうちに意識してしまうというか、 あまりに自然な感覚だけに、 分かっていない人にどう説明するのがいいのか、とても難しい。

Filed under: システム構築・運用 — hiroaki_sengoku @ 10:37
2006年3月12日

epoll(1)

select(2) は、/usr/include/bits/typesizes.h に

#define __FD_SETSIZE 1024

などと書いてあって、 1024個以上の socket を扱えない。 poll(2) を使えばいいのだが、 Linux で使えれば十分という気もするので、 epoll(2) を使ってみることにする。 土曜の晩と、日曜の早朝をつかって一気にコーディング。

エラー処理など、細かい点はまだだが、とりあえず動いているようだ。 udp 中継は、格段に速くなる。 tcp 中継は、もともとセッションごとに thread 立てて 2socket だけで select していたので、オーバヘッドは大きくない。 epoll 化してもあまり速度は変わらない。

Filed under: stone 開発日記 — hiroaki_sengoku @ 22:30
2006年3月10日

stone のデバッグ

久しぶりの stone デバッグ。

SSL_accept に時間がかかり、 かつ SSL_accept に失敗するときのみ、 中継先への socket を閉じないというバグ。

localhost でテストをしている限り発覚しないし、 lsof などを使って閉じていない socket を見ない限り なかなか気づきにくい。

$Id: stone.c,v 2.2.1.8 2006/03/09 10:13:02 hiroaki_sengoku Exp $

Filed under: stone 開発日記 — hiroaki_sengoku @ 08:35
2006年3月9日

テスト

まずは、テストから...

This is a test article, sorry.

More...
Filed under: その他 — hiroaki_sengoku @ 17:32
« Newer Posts