ネットワーク¶
ネットワークは、どこからどこへ通信できるか、どう名前解決するか、どう公開するかを考える土台。
アプリがつながらない問題は、かなりの割合でネットワーク理解に戻ってくる。
まず押さえたいこと¶
- 通信は
IPPortProtocolの組み合わせで考える - 名前解決は 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 アドレスが返る
出典:
- Cloudflare, What is DNS? https://developers.cloudflare.com/learning-paths/cybersafe/concepts/what-is-dns/
最初の見方¶
- まず名前解決できるか
- 次に相手 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 つにまとめる
- 後段の複数サーバーへリクエストを分散する
- 障害時の切り離しや可用性向上にも効く
出典:
- Cloudflare, Components of a load balancer https://developers.cloudflare.com/learning-paths/load-balancing/concepts/load-balancer-components/
メモ¶
- 疎通確認は「DNS -> 経路 -> Port -> アプリ応答」の順で切ると追いやすい
- L4 は TCP/UDP とポート、L7 は HTTP や gRPC などアプリ層、と雑に分けておけば最初は十分