何をしたか
Simple ADは、AWS Managed Microsoft ADが提供する機能のサブセットを提供しており、ユーザーアカウントやグループメンバーシップの管理、グループポリシーの作成と適用、Amazon EC2インスタンスへのセキュアな接続、Kerberosベースのシングルサインオン(SSO)の提供などが可能です。
こいつを削除しました。
なぜ消したか
AWSのアカウント自体が特定のプロジェクトのサービス用のアカウントで、
その中にSimple ADがポツリと存在していました。
特にユーザー認証を行っているサービスでもなく、EC2への接続もSSHのため、
「誰かがテストで作ってそのまま忘れたのかな?」と思いました。
月5,000円 くらいかかっており、費用削減になるかなと思い、
(2年前に) プロジェクトのサーバー構築を担当した(既に退社している相談役の)インフラエンジニアの方に、
ワイ「これ消していいですかー?」
インフラニキ「使ってないので消しちゃってください」
というやり取りのもと、削除しました。
どうなったか
10分も経たずに「 ページ見れないんだけど? 」と連絡が来ました。
すべてのEC2からAurora MySQLへの接続ができなくなりました。
本番環境だけでなく開発環境などの すべてのEC2 において機能しなくなりました。
どうやら、EC2の 名前解決用のDNSサーバー として運用していたそうです。
EC2からMySQLへはパブリックアクセスとなっており、そのときに指定していたエンドポイントURLからIPが引っ張ってこれない状態になりました。
復旧までの死闘
~30分
連絡が来てから真っ先にするのは、とりあえずWebサーバーの稼働確認。
SSHでログインして、Webサーバーのサービス確認。
そして、確認中にデータベースへ接続できないことが判明した。
~1時間
どうやら、ネットワーク周りが怪しい。
curl ipconfig.io
をやっても curl: (6) Couldn't resolve host
のようなエラーが出る。
ホスト名が解決できていない、つまり名前解決ができていないのだ。
よし、Simple AD を作り直そう!
~2時間
もちろん、作り直したところで元に戻るわけでもなく…。
うろ覚えの設定だけ 打ち込んだ Simple AD に立ち上げました。
(こんなことなら消す前に スナップショット 作っておけばよかった)と思っても後の祭り。
今までは妖精さんが勝手に設定してくれてたから、ネットワーク設定なんてわからん。
Simple ADの詳細画面にも「ディレクトリの DNS 名」くらいしか書いてない。
他の紐づくサービスへのリンクがあるわけでもない。
もちろん Route 53 も確認、しかしそんなDNS名は存在していない。
~2時間30分
ネットワークのサービスっぽいやつを、手当り次第に確認!
VPC、サブネット、ネットワークACL、DHCPオプションセット…。 DHCPオプションセット !!
やりました! ドメイン名 がSimple ADで設定されているものと同じだ!
(じゃあリンクつけといてくれよ!!!)と思いながら設定を確認!!
Simple AD ⇔ DHCPオプションセット ⇔ VPC ⇔ EC2
のような感じで紐付いているようだ。
~3時間
なんか「ドメインネームサーバー」とかいう項目にローカルIPアドレスっぽいのが2つ書いてある…。
何これと思いつつも、EC2の /etc/resolve.conf
と比較。
search {Simple ADのDNS名と同じ}
nameserver {DHCPオプションセットの1番目のIPと同じ}
nameserver {DHCPオプションセットの2番目のIPと同じ}
これじゃダメなのか!?
~4時間
インフラニキ「AWSに問い合わせてみたら?」
ワイ「!!」
早速、代理店経由でAWSに問い合わせ。
現在の症状を詳しく記述、急いでるからこそ 1発で的確な返事がほしいので、できる限り詳しく!
色々調べつつ、40分後くらいに返事。
AWS様「Simple ADのディレクトリのIPアドレスを確認いたしましたところ 現在の設定とは別のIP で作成されておりました。」
「よし来た!」と思う反面「Simple AD作ったときにそんな項目どこにもなかったけど!?」って思ってしまった。
~5時間
新しいIPアドレスで /etc/resolve.conf
を書き換えよう!
````/etc/resolve.conf`
search {Simple ADのDNS名と同じ}
nameserver {新しいの1番目のIPと同じ}
nameserver {新しいの2番目のIPと同じ}
再起動!!
がっ……駄目っ……!
名前解決できない、設定が元に戻ってしまった!!
## ~5時間30分
どうやらDHCPの設定が反映される模様?
そういえば、DHCPオプションセットの設定を変えていなかった!
新しい **DHCPオプションセット** を作成し、新しい **ドメイン名** と**ドメインネームサーバー** を設定!
そして、VPCの紐付け!
EC2を再起動!
いけた!
つながった!!
## ~終戦
すべてのEC2を再起動し、無事完了。
# 戦後処理
無事に終わったと思ったけど、まだまだやることは多い。
## 顛末書
やり取りなどを事細かにまとめました。
ただ、「 **再発防止策** 」については頭を抱えました。
とりあえず、「**属人化を防ぎ、複数人でサーバーの構成を理解し、サーバー設定を触る際はできるだけ大勢に確認したうえでやる**」みたいなことを書いた。
# 終わり
反省はしつつ、インフラエンジニア増やしてくださいと思いました。