こんにちは、貴子です。
今回はAWSでサーバー構築中に、一番つまずいたことについてお話します。
やりたいことは、こんな感じ。
EC2-1からserver1にアクセスする時は、EC2-2を通してアクセスしたいのです。
EC2-1のRoute Tablesの設定
まずAmazonGUIからEC2-1のRoute Tablesの設定をします。
server1にアクセスする時はEC-2を通すようにしました。
続いて、現状態でデーター転送ができるか試してみます。
server1はgitサーバーなので、gitコマンドを使ってrecipesディレクトリの取得します。
・EC2-2から取得できることを確認する
・EC2-1でも同じコマンドで試してみる
失敗しました(´・ω・`)
EC2-1とEC2-2のgitポートでの疎通確認等、ひと通り試した後に
ギブアップして先輩社員に教えてもらいました。
原因1:EC2の【Source/dest. check】機能について
EC2インスタンスでは、送信元/送信先チェックをデフォルトで行います。
EC2-2でSource/dest.checkが有効だと、送信元(EC2-1)/送信先(server1)チェックが働き、
どちらにもEC2-2のアドレスがないため、EC2-1から来たパケットを弾いてしまいます。
なのでEC2-2のSource/dest.checkをDiseble(無効)にしてあげます。
原因2:iptablesのNATの設定について
EC2-2のiptablesは、AWSのセキュリティグループでIP制限をかけていたので使っておらず、
インストール時のままでした。
なので、下記のような設定をしてあげます。
「/sbin/iptables -t nat -A POSTROUTING -o eth0 -s 0.0.0.0/0-j MASQUERADE」
-A POSTROUTINGでネットワーク内部から送信するパケットに対し、-s 0.0.0.0/0 全てのprivateIPアドレスがeth0から出る時に、IPマスカレードを行います。
えっと、つまり、全てのパケットが1つの外部ネット(eth0)のIPアドレスを使用して外に出て行くようになるのです。
取得出来ました!
感想
この問題に半日〜一日ぐらいかけて悩んでしまって、時間を無駄にしてしまいました(ノД`;)時間を無駄にはしたけれど、Source/dest. checkの機能をしれて、
もっとAmazonのドキュメントを読んで機能を知ろう!と再確認できたので凄く良い経験になりました。
ちなみに、次回はAmazon summit TOKYOに参加するので、それについて書こうかと思ってます。
初めてAmazon summit TOKYOに行くので、今からwktkしてます+(0゚・∀・)