コンテンツにスキップ

ネットワーク

ネットワークは、どこからどこへ通信できるか、どう名前解決するか、どう公開するかを考える土台。

アプリがつながらない問題は、かなりの割合でネットワーク理解に戻ってくる。

まず押さえたいこと

  • 通信は IP Port Protocol の組み合わせで考える
  • 名前解決は DNS、通信の経路はルーティング、到達制御は FW や ACL で見る
  • L4 と L7 の違いをざっくり理解すると整理しやすい
  • クラウドでは VPC や Load Balancer の概念が加わる

よく出るテーマ

  • TCP/IP
  • DNS
  • HTTP / HTTPS
  • ルーティング
  • NAT
  • Firewall / Security Group / ACL
  • Load Balancer

DNS lookup の簡易図

以下は Cloudflare の DNS 解説をもとにした簡易図。

[Browser]
   |
   v
[DNS Resolver]
   |
   +--> [Root Nameserver]
   |
   +--> [.com Nameserver]
   |
   +--> [example.com Authoritative Nameserver]
   |
   v
[IP address returned]

メモ:

  • まず resolver に問い合わせる
  • resolver が段階的にたどって最終的な名前サーバーへ行く
  • 最後に IP アドレスが返る

出典:

最初の見方

  • まず名前解決できるか
  • 次に相手 IP まで届くか
  • 次にポートが開いているか
  • 最後にアプリ層のレスポンスが正しいか

よく使う確認コマンド

ip addr
ip route
ss -lntp
ping <host>
nslookup <host>
dig <host>
curl -I https://example.com
traceroute <host>

Load Balancer の簡易図

以下は Cloudflare のロードバランサー解説をもとにした簡易図。

[Users]
   |
   v
[Load Balancer]
   |----->
   |      [Server A]
   |
   |----->
   |      [Server B]
   |
   `----->
          [Server C]

メモ:

  • 入口を 1 つにまとめる
  • 後段の複数サーバーへリクエストを分散する
  • 障害時の切り離しや可用性向上にも効く

出典:

メモ

  • 疎通確認は「DNS -> 経路 -> Port -> アプリ応答」の順で切ると追いやすい
  • L4 は TCP/UDP とポート、L7 は HTTP や gRPC などアプリ層、と雑に分けておけば最初は十分