IPアドレスとは何か? 数値によるネットワークのアイデンティティ
IPアドレスとは、ネットワーク上のデバイスに割り当てられる数値識別子であり、住所が郵便物をルーティングするのと同じように、トラフィックを正しいホストへルーティングするために使われます。
hostnameを入力した場合でも、DNSがまず名前をアドレスへ解決するため、すべてのコネクションは最終的にIPアドレスを狙います。IPアドレスにはIPv4とIPv6の形式があり、パブリックにもプライベートにもなり得ます。CIでは、runnerのIPをallowlistに登録することや、パブリックとプライベートのアドレッシングを選ぶことが日常的なネットワークの課題です。
IPv4とIPv6
IPv4アドレスは203.0.113.5のような見た目で不足気味です。IPv6アドレスははるかに長く、はるかに豊富です。現代のインフラはしばしば両方をサポートし、あるサービスは片方では到達可能でももう片方では到達できないことがあります。
パブリック対プライベート
- パブリックIPはインターネット全体でルーティング可能です。
- プライベートIPはネットワーク内に存在し、インターネットではルーティングできません。
- NATによりプライベートホストはパブリックアドレスを通じてインターネットに到達できます。
静的対動的
一部のホストは固定のIPを保ちますが、他のホストは動的に割り当てられます。CIのrunnerはしばしば変化するパブリックIPを持ち、これはdownstreamのサービスがアドレスでallowlistする場合に問題になります。
CIにおけるIPのallowlist
IPのallowlistで保護されたデータベースやAPIは、アドレスがリストにないrunnerを拒否します。ホスト型runnerのIPは変わるため、チームはIPを固定する代わりに安定したegressアドレスや別の認証を使います。
接続前の解決
pipelineはDNSを介してhostnameをIPへ解決し、それからそのIPへコネクションを開きます。失敗は解決時(IPなし)か接続時(IP到達不能)のいずれかで起こり得て、エラーメッセージがどちらかを教えてくれます。
一時的な到達不能
ネットワークの瞬断で一時的に到達不能なIPは、retryでしばしば到達可能になります。Latchkeyのrunnerは一般的なエンドポイントへの一時的な接続失敗を自動でretryするため、短いルーティングのしゃっくりがjobを失敗させることはありません。
重要なポイント
- IPアドレスはネットワーク上のホストを特定し、そこへトラフィックをルーティングできるようにします。
- アドレスはIPv4またはIPv6で、パブリックまたはプライベートであり、NATがプライベートとパブリックの橋渡しをします。
- runnerのIPは変わるため、IPのallowlistはtoken認証と比べて脆弱です。