Amazon Web Services 基礎からのネットワーク&サーバー構築 メモ

2章

やること VPC領域にネットワークを構築する

  • IPアドレスとはインターネット上の住所
  • 2進数32ビットで表現される 例: 11000000101010000000000100010100
  • 2進数だと人間にとってわかりにくいので、8bit区切りで10進数に変換して表現する 192.168.1.20
  • インターネットと接続する時に使うIPアドレスのことをパブリックIPアドレスと呼ぶ

    パブリックIPアドレスICANNという団体が管理している

  • インターネットと接続しない内部のネットワークで使うIPアドレスをプライベートIPアドレスと呼ぶ

  • IPアドレスはネットワーク部とホスト部に分割される
  • 同じネットワークに属するホストA, Bのネットワーク部の値は同じになる
  • ホストに割り当てるIPアドレスの範囲は2のN乗の値にするルールがある
  • 192.168.1.0~192.168.1.255の場合、192.168.1がネットワーク部、0~255がホスト部となる

    .で区切られた値は0~255のいずれかの値になるので、IPアドレスは256種類となる

  • CIDR表記 ネットワーク部をprefixとし、prefixが何ビットかを明記する

    • 例 192.168.1.0~192.168.1.255の場合、192.168.1がネットワーク部になる
    • 8ビットづつ区切られているので、8 x 3で24ビット
    • 192.168.1.0/24
  • サブネットマスク表記はプレフィックス(ネットワーク部の)のビット数だけ2進数の1を並べ、ホスト部は0とする
    • 192.168.1.0~192.168.1.255の場合、192.168.1 がネットワーク部になる
      • ネットワーク部の値をビット数分2進数の1を並べると 11111111.11111111.11111111 となり、10進数に変換すると255.255.255となる
      • ホスト部を0とする
      • 上記2つを合わせると255.255.255.0となる
      • 192.168.1.0/255.255.255.0 と表現できる (雑に捉えると255がネットワーク部、0がホスト部とわかる)
  • 以下3つは同じ

    • 192.168.1.0 ~ 192.168.1.255
    • 192.168.1.0/24
    • 192.168.1.0/255.255.255.0

    CIDR表記とサブネット表記の違いはビット数で表すか、ビット数を255で表現するか

  • VPC領域には10.0.0.0/16を割り当てる

    • なぜ10.0.0.0/16なのか..?
      • プライベートIPアドレスは範囲が決まっていて、クラスAの範囲を採用
        • クラスA 10.0.0.0~10.255.255.255
        • クラスB 172.16.0.0~172.31.255.255
        • クラスC 192.168.0.0~192.168.255.255
      • ホスト部は16ビット以上でなければならないAWSの制約がある
    • 10.0.0.0/16は10.0.0.0~10.0.255.255となるので、IPアドレスは65536種類となる
  • 10.0.0.0/16をさらに分割する

    • 256のサブネットに分割する(実際に使うのは256のサブネットのうち2つ)
      • aaaa.bbbb.cccc.dddd
        • 10.0.0.0/16だと10.0までがネットワーク部だったが、10.0.0をサブネットとする
        • 256個のサブネットが作成され、各サブネットはddddを256個持つ
      • 10.0.1.0/24 をパブリックサブネットとする
        • 1は0~256の値を選べる
  • パブリックサブネット10.0.1.0/24をインターネットに接続する

    • インターネットゲートウェイを通じてインターネットを通信する
    • インターネットゲートウェイを作成してVPCに紐づける
    • ネットワークにデータを流すにはルーティングを設定する
      • データの単位をパケットと呼ぶ。
      • パケットには宛先のIPアドレスが含まれている。
      • ルーターが宛先IPアドレスを見て、アドレスに近いネットワークにパケットを送信し、最終的に目的地へと送り届ける。
      • 宛先のIPアドレスの値がいくつの時に、どのネットワークに流すかをルートテーブルに設定する
    • サブネットが作成された時にデフォルトでルーティングが設定されている

      • 送信先: 10.0.0.0/16 ターゲット: localhost パケットの宛先IPが10.0.0.0/16 の範囲であれば、自身のネットワークに転送するという設定。 インターネットからの通信、インターネットへの通信は、10.0.0.0/16 の範囲ではないため、通信が破棄される

      • 上記の問題を解決するため、10.0.0.0/16 以外(同一ネットワーク以外)の通信はインターネットゲートウェイに転送するようにするルーティングを設定し、ルーティングをパブリックサブネット10.0.1.0/24と紐付ける

        • パブリックサブネット10.0.1.0/24 → インターネット
          • パケットの宛先IPが10.0.0.0/16 の範囲外なので、インターネットゲートウェイに転送しインターネットへ
        • インターネット → パブリックサブネット..?
          • インターネットゲートウェイを通じてパケットが送られてくる
          • IPが10.0.0.0/16 以外なので紐付けたパブリックサブネットへ
    • デフォルトゲートウェイが、インターネットゲートウェイなルートテーブルをもつサブネットのことを、パブリックサブネットと呼ぶ

3章

  • EC2インスタンスにはプライベートIPを割り当てSSHで接続する
  • ルーター同士が通信してルートテーブルの情報をやりとりしてくれる
  • セキュリティグループでIPアドレス、ポート番号制限などのパケットフィルタリングを行う

4章

  • インバウンドルールにポート80へのアクセス許可を追加し、HTTP通信でブラウザからapacheの画面が開くことを確認する f:id:mashoo1101:20220312205520p:plain
  • ↑のオープンアドレスをクリックするとhttps:グローバルIPとなるので、httpに直してブラウザに入力する必要がある。
  • nslookupコマンドでDNSサーバーがどのように名前解決しているか調べる

5章

  • 特になし

6章

  • DBサーバーはインターネットから隔離したプライベートサブネットにおく
  • インターネットから隔離するので、パブリックIPアドレスは持たない
  • 同じネットワークに所属しているため、WEBサーバーを置いたパブリックサブネットからDBサーバーを置いたプライベートサブネットに通信できる
  • pingコマンドを返すようにするには、セイキュリティグループにすべての ICMP - IPv4を追加する
  • Webサーバーを踏み台とすることで、DBサーバーに接続する
    • ローカル → DBサーバーは繋げない
    • ローカル → Webサーバ → DBサーバー はOK!
    • ローカル(Mac)からSSHでWebサーバーに接続
    • WebサーバーからDBサーバーにSSH接続する

7章

  • プライベートサブネットはインターネットと繋がっていないためMariaDBをインストールできない
  • NATを使うとプライベートサブネット → インターネットの向きの通信ができるようになる(逆は不可)
  • プライベートサブネットとインターネットの間にNAT(Network Adress Translation)を挟む
    • プライベートサブネットからのパケットをNATは受け取り、パケットの送信元IPアドレスをNATのグローバルIPに置き換える
    • 接続先はNATからパケットが送られてくるように見える
    • 応答パケットはNATを通じて元のIPアドレスに置換してプライベートサブネットに戻る
  • NATゲートウェイはインターネットから接続可能な場所である「パブリックサブネット」に配置する
  • プライベートサブネットのデフォルトゲートウェイがNATゲートウェイを経由するように

8章

9章

感想

  • 2章が個人的に一番重かったが、ちゃんと読めば後の章はスラスラ読める
  • 9章のTCPあたりの話は別の本で補完したい