【TryHackMeウォークスルー】Networking Essentials

 

Introduction

パソコンを起動したり新しいネットワークに接続したとき、どのようにしてネットワーク設定が自動的に構成されるのか、不思議に思ったことはありませんか?

自分の送ったパケットが目的地に届くまでに、いくつの機器や国を経由しているのか知りたいと思ったことはありませんか?
インターネット回線業者(ISP)から割り当てられるIPアドレスは1つなのに、なぜ自宅のすべての機器がインターネットに接続できるのか気になりませんか?

こうした疑問に答えるのが、このルームです。

このルームは、コンピュータネットワーキングに関する4部構成のシリーズのうち、2番目にあたります。


学習前提知識

このルームを有効に活用するためには、以下の知識を持っていることを推奨します。

  • ISO OSIモデルと各レイヤー

  • TCP/IPモデルと各レイヤー

  • Ethernet、IP、TCPといったプロトコル

言い換えれば、「Networking Concepts」を終えてから取り組むのが理想的です。


学習目標

このルームの目的は、ネットワークをつなぎ合わせる標準的なプロトコルや技術を学ぶことです。

  • DHCP(Dynamic Host Configuration Protocol)

  • ARP(Address Resolution Protocol)

  • NAT(Network Address Translation)

  • ICMP(Internet Control Message Protocol)

  • Ping

  • Traceroute


DHCP: Give Me My Network Settings

お気に入りのカフェに行き、ホットドリンクを手に取り、ノートPCを開いたとしましょう。
するとノートPCはカフェのWiFiに接続し、自動的にネットワーク設定が行われ、そのままTryHackMeの新しいルームに取り組めるようになります。
IPアドレスを手入力したわけでもないのに、デバイスはすでに準備完了。さて、どうしてこんなことが可能なのでしょうか?


ネットワーク接続に必要な基本情報

どんなネットワークにアクセスする場合でも、最低限以下の設定が必要です。

  • IPアドレスとサブネットマスク

  • ルーター(ゲートウェイ)

  • DNSサーバ

新しいネットワークに接続するたびに、これらの設定を環境に合わせて変更しなければなりません。
サーバのように固定的に動く機器では手動設定が好ましい場合もあります。例えば、ドメインコントローラをカフェのWiFiに持ち込んで接続するようなことは普通しませんし、サーバは他の機器から固定のIPで参照される必要があるからです。


自動設定のメリット

接続された機器を自動的に設定できる仕組みには大きな利点があります。

  1. 手動設定の手間を省ける(特にモバイル端末にとって重要)

  2. IPアドレスの重複(コンフリクト)を避けられる

もし同じIPアドレスが複数の機器に割り当てられると、通信ができなくなってしまいます。これを防ぐ仕組みこそが DHCP(Dynamic Host Configuration Protocol) です。

DHCPはアプリケーション層のプロトコルで、UDPを利用します。

  • サーバは UDP 67番ポート で待機

  • クライアントは UDP 68番ポート から送信

スマートフォンやノートPCは、デフォルトでDHCPを使うよう設定されています。


DHCPの基本手順「DORA」

DHCPは4つのステップから成り立ちます。

  1. Discover: クライアントがDHCPDISCOVERメッセージをブロードキャストし、利用可能なDHCPサーバを探す

  2. Offer: サーバがDHCPOFFERメッセージを送り、クライアントに利用可能なIPを提示する

  3. Request: クライアントがDHCPREQUESTメッセージを返し、提示されたIPを受け入れる意思を示す

  4. Acknowledge: サーバがDHCPACKメッセージを送り、クライアントへの割り当てを確定する

例:
ノートPC → DHCP Discover
サーバ → DHCP Offer
ノートPC → DHCP Request
サーバ → DHCP Acknowledge


パケットキャプチャ例

次のキャプチャでは、クライアントが 192.168.66.133 を割り当てられる様子が確認できます。

Terminal
user@TryHackMe$ tshark -r DHCP-G5000.pcap -n
    1   0.000000      0.0.0.0 → 255.255.255.255 DHCP 342 DHCP Discover - Transaction ID 0xfb92d53f
    2   0.013904 192.168.66.1 → 192.168.66.133 DHCP 376 DHCP Offer    - Transaction ID 0xfb92d53f
    3   4.115318      0.0.0.0 → 255.255.255.255 DHCP 342 DHCP Request  - Transaction ID 0xfb92d53f
    4   4.228117 192.168.66.1 → 192.168.66.133 DHCP 376 DHCP ACK      - Transaction ID 0xfb92d53f

ここで重要なのは:

  • DiscoverRequest の段階では、クライアントはまだIPを持っていないため、0.0.0.0 から 255.255.255.255 へ送信している。

  • リンク層ではブロードキャストMACアドレス ff:ff:ff:ff:ff:ff が使われる。

  • サーバはDHCPOFFERで利用可能なIPアドレスとネットワーク設定を提示し、クライアントのMACアドレス宛に送信する。


DHCPで得られる情報

DHCPによって最終的にデバイスは、ネットワークやインターネットにアクセスするための必要な設定をすべて取得します。

  • 割り当てられたIPアドレス

  • ネットワーク外へのルーティングに使うゲートウェイ

  • ドメイン名解決のためのDNSサーバ(後で詳述)

Answer the questions below

How many steps does DHCP use to provide network configuration?

4

What is the destination IP address that a client uses when it sends a DHCP Discover packet?

255.255.255.255

What is the source IP address a client uses when trying to get IP network configuration over DHCP?

0.0.0.0


ARP: Bridging Layer 3 Addressing to Layer 2 Addressing

Networking Concepts のルームで学んだ通り、2台のホストがネットワーク上で通信する際、IPパケットはデータリンク層のフレームにカプセル化されてレイヤー2を通過します。
私たちがよく使うデータリンク層の技術は Ethernet (IEEE 802.3)WiFi (IEEE 802.11) です。

同じEthernetやWiFi上でホスト同士が通信する際には、IPパケットをデータリンク層のフレームに載せて送る必要があります。ターゲットのIPアドレスは分かっていても、正しいデータリンク層ヘッダーを作成するには 相手のMACアドレス を調べる必要があります。

MACアドレスのおさらい

MACアドレスは48ビットの番号で、通常は16進数で表されます。
例:7C:DF:A1:D3:8C:5C44:DF:65:D8:FE:6C

ただし、同じEthernet上の機器が常にお互いのMACアドレスを知っている必要はありません。実際に通信を行うときに初めてMACアドレスを解決すれば十分です。

MACアドレスが必要になるシナリオ

デバイスをネットワークに接続すると、DHCPサーバがあれば自動的にゲートウェイやDNSサーバが設定されます。
この時点で、デバイスはDNSサーバやルーターの IPアドレス は知っていますが、MACアドレス は分かっていません。
しかし、同じLAN(EthernetやWiFi)上で実際に通信するには、MACアドレスの解決が必要です。

Ethernetフレームの構造

IPパケットはEthernetフレームにカプセル化されます。Ethernetヘッダーには次が含まれます。

  • 宛先MACアドレス

  • 送信元MACアドレス

  • タイプ(ここではIPv4)


ARPの仕組み

Address Resolution Protocol (ARP) は、Ethernet上で他の機器のMACアドレスを見つける仕組みです。

例:192.168.66.89192.168.66.1 と通信したい場合

  1. 192.168.66.89ff:ff:ff:ff:ff:ffARP Request を送信(「192.168.66.1 は誰?」)

  2. 192.168.66.1192.168.66.89ARP Reply を送信(自分のMACアドレスを通知)

これで双方が相手のMACアドレスを把握し、データリンク層フレームを交換できます。

パケットキャプチャ例(tshark)

Terminal
user@TryHackMe$ tshark -r arp.pcapng -Nn
    1 0.000000000 cc:5e:f8:02:21:a7 → ff:ff:ff:ff:ff:ff ARP 42 Who has 192.168.66.1? Tell 192.168.66.89
    2 0.003566632 44:df:65:d8:fe:6c → cc:5e:f8:02:21:a7 ARP 42 192.168.66.1 is at 44:df:65:d8:fe:6c

パケットキャプチャ例(tcpdump)

Terminal
user@TryHackMe$ tcpdump -r arp.pcapng -n -v
17:23:44.506615 ARP, Ethernet (len 6), IPv4 (len 4), Request who-has 192.168.66.1 tell 192.168.66.89, length 28
17:23:44.510182 ARP, Ethernet (len 6), IPv4 (len 4), Reply 192.168.66.1 is-at 44:df:65:d8:fe:6c, length 28

ARPのレイヤー位置

ARPメッセージはUDPやIP内ではなく、直接Ethernetフレーム に格納されます。
MACを扱うので「レイヤー2」とみなされますが、IP通信を支援する観点から「レイヤー3の一部」と捉える見解もあります。
重要なのは、ARPが レイヤー3のアドレス(IP)をレイヤー2のアドレス(MAC)へ対応付ける 役割を果たす点です。


Answer the questions below

What is the destination MAC address used in an ARP Request?

ff:ff:ff:ff:ff:ff 

In the example above, what is the MAC address of 192.168.66.1?

44:df:65:d8:fe:6c


ICMP: Troubleshooting Networks

Internet Control Message Protocol(ICMP) は主にネットワーク診断とエラー報告に使われます。ネットワークのトラブルシューティングやセキュリティでよく使われる代表的なコマンドが2つあり、どちらもICMPに依存しています。

  • ping:ターゲットへの接続確認と往復遅延(RTT)計測に使う。ターゲットが生きているか、返答が自分の端末まで届くかを確認できる。

  • traceroute / tracert:Linux/UNIX系では traceroute、Windowsでは tracert。ホストからターゲットまでの経路(経由するルーター群)を発見するのに使う。


Ping

ping は ICMP Echo Request(ICMP Type 8)を送信し、

相手は ICMP Echo Reply(ICMP Type 0)で応答します。これにより到達可否と往復遅延を測れます。WiresharkではICMPエコー要求/応答が IP パケット内に表示されます。

しかし、応答が得られない理由は複数あります:ターゲットがシャットダウンしている、あるいは経路上のファイアウォールがICMPをブロックしている、などです。下例では -c 4 で4回送信して停止しています。

Terminal
user@TryHackMe$ ping 192.168.11.1 -c 4
PING 192.168.11.1 (192.168.11.1) 56(84) bytes of data.
64 bytes from 192.168.11.1: icmp_seq=1 ttl=63 time=11.2 ms
64 bytes from 192.168.11.1: icmp_seq=2 ttl=63 time=3.81 ms
64 bytes from 192.168.11.1: icmp_seq=3 ttl=63 time=3.99 ms
64 bytes from 192.168.11.1: icmp_seq=4 ttl=63 time=23.4 ms

--- 192.168.11.1 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 3.805/10.596/23.366/7.956 ms

出力からはパケット損失の有無や RTT の最小/平均/最大/標準偏差が分かります。


Traceroute

ルータ群を一つずつあぶり出すには、IPヘッダの TTL(Time-to-Live) フィールドを利用します。TTL は「経由できるルータの最大数(ホップ数)」を示し、ルータはパケットを転送する前に TTL を1減らします。TTL が 0 になったパケットはそのルータで破棄され、ルータは ICMP Time Exceeded(ICMP Type 11) を送ってくれます。これを利用して、各ホップのルータから応答を引き出していくのが traceroute の仕組みです。(ここでの “time” は秒ではなくホップ数を意味します。)

ただし、すべてのルータが応答するわけではありません。応答を返さない(ICMP をブロックしている)ルータも存在します。また、ISP 内部のプライベートIPを返すルータや、応答として公開IPを表示するルータがあり、その場合はドメイン名の逆引きや地理的な手がかりを得られることがあります。もちろん、ICMP 自体がブロックされると Time Exceeded が届かないため経路が分からない場合もあります。

下は traceroute example.com の実行例です。* * * はそのホップで応答が得られなかったことを示します。経路はコマンドを再実行するたびに変わる可能性があります。

Terminal
user@TryHackMe$ traceroute example.com
traceroute to example.com (93.184.215.14), 30 hops max, 60 byte packets
 1  _gateway (192.168.66.1)  4.414 ms  4.342 ms  4.320 ms
 2  192.168.11.1 (192.168.11.1)  5.849 ms  5.830 ms  5.811 ms
 3  100.104.0.1 (100.104.0.1)  11.130 ms  11.111 ms  11.093 ms
 4  10.149.1.45 (10.149.1.45)  6.156 ms  6.138 ms  6.120 ms
 5  * * *
 6  * * *
 7  * * *
 8  172.16.48.1 (172.16.48.1)  5.667 ms  8.165 ms  6.861 ms
 9  ae81.edge4.Marseille1.Level3.net (212.73.201.45)  50.811 ms  52.857 ms 213.242.116.233 (213.242.116.233)  52.798 ms
10  NTT-level3-Marseille1.Level3.net (4.68.68.150)  93.351 ms  79.897 ms  79.804 ms
11  ae-9.r20.parsfr04.fr.bb.gin.ntt.net (129.250.3.38)  62.935 ms  62.908 ms  64.313 ms
12  ae-14.r21.nwrknj03.us.bb.gin.ntt.net (129.250.4.194)  141.816 ms  141.782 ms  141.757 ms
13  ae-1.a02.nycmny17.us.bb.gin.ntt.net (129.250.3.17)  145.786 ms ae-1.a03.nycmny17.us.bb.gin.ntt.net (129.250.3.128)  141.701 ms  147.586 ms
14  ce-0-3-0.a02.nycmny17.us.ce.gin.ntt.net (128.241.1.14)  148.692 ms ce-3-3-0.a03.nycmny17.us.ce.gin.ntt.net (128.241.1.90)  141.615 ms ce-0-3-0.a02.nycmny17.us.ce.gin.ntt.net (128.241.1.14)  148.168 ms
15  ae-66.core1.nyd.edgecastcdn.net (152.195.69.133)  141.100 ms ae-65.core1.nyd.edgecastcdn.net (152.195.68.133)  140.360 ms ae-66.core1.nyd.edgecastcdn.net (152.195.69.133)  140.638 ms
16  93.184.215.14 (93.184.215.14)  140.574 ms  140.543 ms  140.514 ms
17  93.184.215.14 (93.184.215.14)  140.488 ms  139.397 ms  141.854 ms

補足メモ

  • セキュリティ面:ICMPは診断に有用ですが、攻撃者による情報収集(ネットワーク探索やDoSの補助)にも使われるため、ファイアウォールで制御することが多いです。

  • オプションtraceroute はプロトコル(ICMP / UDP / TCP)、パケットサイズ、最大ホップ数など多くのオプションを持ち、状況に応じて使い分けられます(例:ファイアウォールでICMPがブロックされている場合はTCPトレーサートを試す等)。

Answer the questions below

Using the example images above, how many bytes were sent in the echo (ping) request?

40

Which IP header field does the traceroute command require to become zero?

TTL


Routing

下記のネットワーク図を考えてみましょう。わずか3つのネットワークしかありませんが、インターネットはどのようにして Network 1 から Network 2 や Network 3 にパケットを届けるのでしょうか? これは単純化した図ですが、Network 1 と Network 2・3 を相互に接続するにはアルゴリズムが必要になります。



複雑なネットワークにおける経路選択

実際のインターネットは何百万ものルーターと何十億ものデバイスから成り立っています。下記の例はインターネットのごく一部を示したものです。
モバイルユーザーがWebサーバに到達できるのは、経路上の各ルーターが適切なリンクを選んでパケットを転送するからです。

もちろん、モバイルユーザーからWebサーバに至る経路は複数存在します。そのため、ルーターには「どのリンクを使うか」を判断するための ルーティングアルゴリズム が必要です。




代表的なルーティングプロトコル

このルームの範囲外なのでアルゴリズムの詳細は扱いませんが、代表的なルーティングプロトコルを紹介しておきます。

  • OSPF(Open Shortest Path First)
    ネットワークトポロジーの情報をルーター同士で共有し、最も効率的な経路を計算するプロトコル。ルーターはリンクやネットワークの状態を更新し合うことで全体の地図を持ち、最適な経路を判断できます。

  • EIGRP(Enhanced Interior Gateway Routing Protocol)
    Cisco独自のプロトコルで、複数のルーティング手法を組み合わせたもの。ルーターは到達可能なネットワークとそのコスト(帯域幅や遅延など)を共有し、最も効率的な経路を選択します。

  • BGP(Border Gateway Protocol)
    インターネットの基幹的なルーティングプロトコル。ISPなど異なるネットワーク間で経路情報を交換し、データを複数ネットワークにまたがって効率的に転送できるようにします。インターネット全体の疎通を担う極めて重要な役割を持ちます。

  • RIP(Routing Information Protocol)
    シンプルなプロトコルで、小規模ネットワークで利用されます。ルーター同士が「到達可能なネットワーク」と「そこに至るまでのホップ数」を共有し、最もホップ数の少ない経路を選択します。

Answer the questions below

Which routing protocol discussed in this task is a Cisco proprietary protocol?

EIGRP


NAT

Networking Concepts のルームで説明した通り、IPv4 で扱えるアドレス数は最大約40億個です。しかし、インターネットに接続する機器(パソコンやスマートフォンから、防犯カメラ、洗濯機まで)が爆発的に増加した結果、IPv4 アドレス枯渇は避けられないものでした。その解決策のひとつが NAT(Network Address Translation) です。


NATの基本的な考え方

NAT の発想は「1つのパブリックIPアドレスを使って、多数のプライベートIPアドレスにインターネット接続を提供する」というものです。

例えば、20台のコンピュータがある会社を考えてみましょう。NATを使えば、20個のパブリックIPを契約する代わりに、1つのパブリックIPだけで全台をインターネットに接続できます。
(厳密には技術的制約から2つのパブリックIPを確保する必要がありますが、それでも32台分をカバーできるので、30個分のパブリックIPを節約できます。)


NATとルーティングの違い

通常のルーティングは、宛先ホストまでパケットを自然に届ける仕組みです。
一方、NAT対応ルーターは「どの内部ホストがどの外部接続を使っているか」を追跡する必要があります。そのため、内部アドレスと外部アドレスの対応関係を記録した 変換テーブル(Translation Table) を保持します。

  • 内部ネットワーク:プライベートIPアドレス帯を使用

  • 外部ネットワーク:パブリックIPアドレスを使用


NATの仕組み(例)

次の例では、複数のデバイスが NAT 対応ルーター経由でインターネットにアクセスしています。

  • ノートPCが Web サーバと接続を確立する

  • ノートPC視点では 192.168.0.129:15401 から接続開始

  • Web サーバ視点では 212.3.4.5:19273 から接続されたように見える

このときルーターは、内部IPとポート番号を外部IPとポート番号に対応付け、変換テーブルに保存します。外部のサーバには変換後のアドレスしか見えません。

NAT ルーターがこのアドレス変換をシームレスに行うことで、限られたパブリックIPを効率的に使い、IPv4アドレス枯渇を回避できるのです。



Answer the questions below

In the network diagram above, what is the public IP that the phone will appear to use when accessing the Internet?
212.3.4.5

Assuming that the router has infinite processing power, approximately speaking, how many thousand simultaneous TCP connections can it maintain?
65

Closing Notes

このルームでは、日常的に直接あるいは間接的に利用しているさまざまなプロトコルを紹介しました。扱った内容は以下の通りです。

  • ICMP

  • DHCP

  • ARP

  • NAT

  • Routing

普段インターネットを利用していると、これらの略語に出会うことはほとんどありません。
しかし、これらのプロトコルこそが、ネットワークを正しく機能させるための基盤となっています。

Answer the questions below

Click on the View Site button to access the related site. Please follow the instructions on the site to obtain the flag.
THM{computer_is_happy}