富士通クラウドダイレクトブログ

初心者エンジニア向けTechBlog

富士通クラウドダイレクトブログ

初心者エンジニア向けTechBlog

自宅ネットワーク構築でスキルアップしよう TCP/IP編

こんにちは。日本仮想化技術株式会社の宮原です。
前回は自宅サーバー構築でスキルアップする方法について解説しました。
今回は、2023年4月に開催したニフクラエンジニアミートアップで取り上げたテーマである「自宅ネットワーク構築」について書いてみようと思います。

fujitsufjct.connpass.com

説明したい事が多いので、今回はまずTCP/IPについて解説します。

TCP/IPをしっかり理解しよう

なぜ自宅ネットワーク構築なのか

クラウドによってシステムを構築するようになって変わったことの一つに、サーバーエンジニアとネットワークエンジニアの境界線が曖昧になったことが挙げられます。

以前は、サーバー構築はサーバーエンジニアの仕事。スイッチやルーター、VPNなどネットワーク構築はネットワークエンジニアの仕事と、役割分担が分かれていました。
しかし、クラウドになることでネットワーク関係も簡単に設定ができるようになったため、クラウドエンジニアがサーバーもネットワークも設定するようになりました。
このような状況なので、サーバー構築がメインのエンジニアでも、最低限のネットワークスキルは身に着けておく必要があります。

自宅サーバー構築と同じく、自宅ネットワーク構築でしっかりとネットワークスキルを身につける方法を解説します。

TCP/IPをしっかりと学ぼう

どんなネットワークを扱うにしても、現在のネットワークの基礎はTCP/IPです。
単に自宅でインターネットに接続するだけならTCP/IPが分かっていなくても接続できてしまいますが、システム構築ではTCP/IPの基本はしっかりと理解しておく必要があります。TCP/IPはよく分からない、という人は入門書の一冊でも手に入れて、まずはざっと読んでみることをお勧めします。ここでは、理解しておくべきポイントをいくつか挙げておきます。

IPについて理解する

IP(Internet Protocol)は、ネットワークの根幹を成すプロトコルです。把握しておくポイントがいくつかあるので、挙げておきます。

IPアドレス割り当て

ネットワークに接続して通信を行うコンピューターは、それぞれIPアドレスを持つ必要があります。PCなどのクライアントはDHCPを使って自動的に設定されるのであまり意識しませんが、サーバー等にはネットワーク設計をした上で固定のIPアドレスを割り当てていく必要があります。分かってしまえばIPアドレスの割り当てなどは難しくありませんが、頻繁に設計を変えるわけにもいかないので、初心者には少しハードルが高く感じる領域かもしれません。

グローバルIPアドレス

インターネットに直接接続されるコンピューターには、グローバルIPアドレスを割り当てる必要があります。グローバルIPアドレスは数が限られるため(IPv4の場合)、インターネット接続を提供するネットワークプロバイダーから割り当ててもらう必要があります。FJcloud-V/ニフクラの場合、IPアドレスが変更される可能性があるグルーバルIPアドレスは無料ですが、変更されない固定のグローバルIPアドレスを割り当ててもらうには若干ですが費用がかかります。

プライベートIPアドレス

クライアントなどインターネットに直接接続される必要がないコンピューターには、プライベートIPアドレスを割り当てます。よく目にする「192.168.0.1」などのアドレスがプライベートIPアドレスです。プライベートIPアドレスはLAN内で自由に割り当てができるIPアドレスとして定められています。とはいえ、取り得るIPアドレスの数など、いくつかの種類が用意されているので、LAN内のネットワーク規模などに応じて設計する必要があります。

ネットマスク

ネットマスクは、通信先と自分自身が同一のネットワークに接続されているかどうかを判定するために使われる値です。同一ネットワークの場合、同じネットマスクが設定されている必要があります。ネットマスクによって、IPアドレスのうちネットワーク全体で共通となる部分(ネットワーク部)と、各ホストによって異なる部分(ホスト部)に分けられるようになっています。

ネットマスクはIPアドレスと掛け合わせることでネットワーク部を判定するのに使われる

このようなルールがあるため、通信先のIPアドレスが同一ネットワークに接続されていると仮定してネットマスクを適用してネットワーク部を算出し、自分自身のネットワーク部と比較することで同一ネットワークに接続されているかどうかが判定できます。

IP通信は同一ネットワークかどうかの判定が重要

言葉での説明だとやや分かりにくいので、例を出してみましょう。

自分自身のIPアドレスが以下の通りだとします。ネットワークマスクはIPアドレスの後ろに/で区切って記述されることがあります。

192.168.0.1/255.255.255.0

この場合、ネットマスクの3区切り(1区切りが8ビットなのでオクテットと呼ぶ)までが255になっているため、第3オクテットまでがネットワーク部となります。すなわち、「192.168.0」がネットワーク部の値です。

通信先のIPアドレスが「192.168.1.1」だとします。同一ネットマスクを適用するとネットワーク部は「192.168.1」となり、自分自身のネットワーク部と異なります。これにより、通信先は同一ネットワークにはいないことが分かるので、ルーティングをして通信する必要があることになります。

同一ネットワークに接続されているとネットワーク部が同じになる

デフォルトゲートウェイ

上記のようにネットマスクを使って通信先を判定し、同一ネットワークに接続されていないと分かるとルーティングを行う必要があります。

ルーティングを行う経路は接続先によって変えるよう、複数持つことができますが、特別な指定が無い場合にはデフォルトゲートウェイに設定されたIPアドレスに向けてパケットを送信し、ルーティングしてもらうように動作します。
デフォルトゲートウェイの設定が誤っていると、同一ネットワーク内では通信できるが外部と通信ができないという問題が起きるので、適切に設定する必要があります。

ゲートウェイ経由で異なるネットワークと通信できる

DNSアドレス

我々がインターネットを利用する場合、IPアドレスを直接入力することは希で、多くの場合ドメイン名(正確にはホスト名)を入力します。このドメイン名からIPアドレスを調べることを「名前解決」と呼びます。

TCPの仕組み

TCP(Transmission Control Protocol)は、IPと組み合わせて使われる通信プロトコルです。IPに比べてシンプルなので、ポート番号の役割について理解しておきましょう。

ポート番号

ポート番号とは、TCPで通信を行う際に使われる値です。
IPではIPアドレスに相当します。送信側と受信側にそれぞれポート番号が必要になりますが、重要なのは受信側(送信先)ポート番号です。受信側のポート番号は、送られてきたパケットをどのプロセスに渡すのかを決定します。

たとえばWebサーバーならポート番号80(HTTP)や443(HTTPS)、SSHなら22など、よく使われるプロトコルにはそれぞれ割り当てられたポート番号があります。これを「Well-knownポート」と呼びます。

ただし、運用やセキュリティの都合上、ポート番号を変更してサーバーを動かす場合もありますので、完全に固定されているわけではない点には注意が必要です。

ファイアウォールやパケットフィルタリングの仕組みとセットで理解しよう

TCP/IPはサーバー構築時に割り当てをしたり、DNSを設定して名前解決ができるようにしたりする際にだけでなく、通信のセキュリティにおいても理解が必要となります。
ファイアウォールの基本的な設定では、通信の送信元や送信先のIPアドレス、そしてTCPのポート番号の組み合わせで通信を許可するように設定します。

たとえば、外部からはWebサーバーのポート443だけ通信を許可し、SSHでリモートログインするには特定のIPアドレスからのみ許可する、というような具合です。このような観点からも、TCP/IPの基礎はエンジニアの必修科目だといえるでしょう。

次回は、自宅ネットワーク構築の際の機器選定について解説します。