・2008/06/07 里親になりそうです
・2008/06/15 やってきた
・2008/06/16 写真と動画
・2008/07/18 もみちゅぱ
・2008/07/20 もみちゅぱ動画
・2010/06/09 猫を飼ってる人には判ること
・2011/04/30 もみもみちゅぱちゅぱ
・2011/05/01 むにゅーん
☆エイプリルフール
・2005/04/01
・2004/04/01
・2003/04/01
☆サーバ設定
・2004/12/14(1) ハード・ソフト一覧
・2004/12/14(2) OS Install
・2004/12/15(1) /etcの下
・2004/12/15(2) 各portの設定
・2004/12/17(1) RAIDディスク監視
・2004/12/17(2) IDEディスク監視
・2004/12/17(3) HotSaNIC
・2008/05/31 メンテナンスのお知らせ文テンプレ
・2008/06/01 ECCエラーなHDD入れ替え
・2008/12/30 HDD入れ替え
・2009/06/06 電源が壊れたときの作業ログ
・2011/05/29 tDiaryを3.0系統に入れ替えたときのパッチ
☆Xperia acroHD・Android
・2012/12/22 root取り~Titaniumまで
・2013/01/06 アプリ整理・Link2SD
・2013/01/21 旧端末→新端末アプリ移動
・2013/02/09 旧端末分解・アプリ整理
☆写真
・2002/12/31 冬コミ ブリジットコス
・2004/02/16 Babyロリ服
・2011/03/09 リーマンコス(笑)
・2011/07/19 BABYロリ服・浴衣
・2011/08/13 夏コミ2日目。薄桜鬼千鶴・BABYロリ服
・2011/08/14 夏コミ3日目。リリカルなのは制服・薄桜鬼千鶴
☆その他
・2004/08/08 tDiary改造メモ
・2003/02/18 キャッチセールスの断り方
・2010/08/12 リネ2 FFC応募作品
・2011/07/12 リネ2とTERAとの比較記事
2016-03-02 (Wed)
★AWS上でのiptables
私のサーバでは、一部のサービスをJP Regionからの接続に限るため、iptablesを使ってます。
EC2のセキュリティグループを使わない理由は…
$ sudo iptables -L -n | wc -l
4235
ルールの最大数はデフォルト50、申請しても250ですから、とても無理なのです。1つのインスタンスに複数のセキュリティグループ割り当てられるとはいえ、何かトラブルが起きそうな予感しかしないですし…
なんでそんなにルール数が多くなるかというと、APNICが公開しているIPの割当表から、JPだけを許可するルールを生成しているからですね。
TCP wrapperで行うことも考えたのですが、dovecot等のアプリが対応してなかったこと、逆引きはやろうと思えば.jpを名乗るのは容易いこと、で、今回はTCP Wrapper案はパスしました。
まあ、変換して INPUT rule を作るのは何のトラブルもなく…
トラブルは OUTPUT のほうで起きました。
今回サーバでは、ホントにサーバとしか使わないので、通常時にサーバ側からコネクション貼るのは SMTP のみです。(通常時以外でも、メンテ時に yum updateのコネクション程度です)。そこで
# sudo iptables -A OUTPUT -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
# sudo iptables -P OUTPUT DROP
こうやって、sshが繋がることを確認。
再起動
……あれ? 繋がらない
昨日の日記のやりかたで、設定を戻して、iptables の設定をくまなく見てみる。何もない…
3way handshake の設定がきちんとできているか不安になってきました。OUTPUT の policy が ACCEPT だった時には動いていたので、INPUT のルールは間違っていない。ということは SYN を受け取って、ACK/SYN を返せていないのではないか、という疑問をいだきます。
こうやって設定すれば動くのかなぁ?
再起動
……繋がらない
(5ループほど略 orz)
iptables -A OUTPUT -j LOG してみたところ、判明しました。(送信側アドレス書き換えてます)
IN= OUT=eth0 SRC=123.456.78.90 DST=169.254.169.254 LEN=60 TOS=0x00 PREC=0x00 TTL=255 ID=40017 DF PROTO=TCP SPT=52896 DPT=80 WINDOW=26883 RES=0x00 SYN URGP=0
……何だよこのアドレス……
もちろん169.254なので LINKLOCAL-RFC3927-IANA-RESERVED です。Amazonが持っているに決まってます。
検索してみたところ、こんなヘルプページが見つかりました。
どうも、このIPアドレスに対してHTTP requestを行うと、何やらいろいろ情報が取れるようです。ドキュメントには取得だけが書いてありますが、そのほかの隠し仕様があるかはわかりません。
というわけで、予想です。
AWSの各インスタンスは、起動時に 169.254.169.254 にアクセスし、インスタンスの起動ビーコンを送っている。これが確認できたら、AWS側でFWをあける。ビーコンが確認できなければFWが閉じたままになるので、上記の試行で接続できなかった。
まあ、FWとしては正しい設定の気もします。(どこにもドキュメント無さそうなのが問題ではありますが。あるいは私の探し方が悪いか…)
実際に以下の設定を追加したら、きちんと起動され、sshも繋がるようになりました。(実際にはhttpsとsmtpも同時に許可設定しました)
# sudo iptables -A OUTPUT -p tcp --dport http -j ACCEPT
………何回もサーバ止めて再起動してたせいで、Elastic IP Addressの未使用期間として課金されました。助けてママン;;