network
Overview
ネットワーク関連をまとめたセクション。
日本ネットワークインフォメーションセンターJPNIC(network講座)
ipアドレスを確認できるサイト
総務省(情報通信)
AWSで作成するネットワーク依存関係
ネットワークとインターネットの違い
ネットワークはコンピューター同士の接続。
インターネットは世界中のネットワークの集まり、家や会社でネッとワークを作ることでネットワーク上のそれぞれのスマホ同士で接続が可能
ネットワーク原因調査
- ネットワーク原因調査
ネットワーク疎通コマンド
ping
pingはICMPのエコー要求/応答機能を使った診断コマンド。
ちなみにICMPはL3のプロトコルなのでポートは関係ない。portを指定するとerrorになる。
pingはICMPを使っているため、途中経路でICMPを許可していない場合は疎通が確認できない。
たとえばAWSはデフォルトではICMPが使えません。
nc(netcat)
Linuxでポートの疎通確認を行う際によく使う。tcpとudpどちらも対応している。
- nc(listener version) ncコマンドはサーバとして使うこともできる。疎通先でサーバとして起動し、クライアントから確認することでネットワーク自体が繋がっているか確認するケースもある。
traceroute
どんな経路を辿っているか知りたい時に使います。ICMP/UDP/TCPを使うことができます。
認証と認可
認証 : ある個人を特定すること パスワードとユーザIDなどでログインできるかの判断
認可 : 行動やリソースの許可をすること 認証を許可したものがどこまでのアクセス権限があるかの判断
上り・下り
-
上り パソコンや携帯電話からインターネット上へファイルを転送する際の通信 (例)ブログに写真を載せる際の通信。メールの送信。
-
下り インターネット上からファイルをパソコンや携帯電話に受け取る際の通信。 (例)インターネットから音楽や画像をダウンロードする。メールの受信。
VNC(Virtual Network Computing)
VNCとは、ネットワークを通じて別のコンピューターに接続しそのデスクトップ画面を呼び出して操作できるリモートデスクトップソフトのひとつ。また、オリジナルのVNCを元に開発された派生ソフトウェア群の総称。さまざまな環境に移植され、相互に接続可能なため、異なるOSで操作するコンピューターの画面を呼び出して操作できる。
ネットワーク スパイクについて(各ベンダー)
クラウドサービスの場合
AWS(EC2) 急激なアクセス増加に対してはELBのスケールアウトが間に合わずにサービス断へ繋がる。 その場合には事前の暖機申請を行う必要がある。
GCP(ComputeEngine) 事前の暖機とか不要でこなせる。
127.0.0.1とlocalhostと0.0.0.0の違い
127.0.0.1 127.0.0.1はループバックアドレスのひとつであり、同時に127.0.0.1に対応する仮想的なネットワ ーク・インターフェースを表す。 ループバックアドレスは自分自身を表す特別なIPアドレスのことです。 ループバックアドレスは同一ホスト内でしか通信を行わない。
localhost 127.0.0.1を表すホスト名のことです。 127.0.0.1とほぼイコールなので当たり前ですが、こちらも同一ホスト内でしか通信を行いません。 何らかの開発用サーバを立ち上げた際に、ブラウザにlocalhost:8080といったアドレスを入力することがあるかと思いますが、それはこのlocalhostです。
0.0.0.0 前者2つとだいぶ異なり、すべてのネットワーク・インターフェースを表す。 ワイルドカードのようなもので、すべての通信を表す。 こちらは別ホストからでもアクセスすることが可能です。
ペイロード
さまざまな意味のペイロード ペイロードとは、IT用語としては、パケット通信においてパケットに含まれるヘッダーやトレーラーなどの付加的情報を除いたデータ本体のこと。 パケットにはデータの転送先や転送経路などを制御するための情報を含むヘッダーや、データの破損などを検査するトレーラーなどの情報が、データそのもののほかに付加されて送られる。
ping
pingはパケットを送って宛先が送り返すシンプルな動作。 つまりPingで確認できるレベルはIPレベルまでなのです。 OSI参照モデルでいうところの、「ネットワーク層」までの 確認になります。
さらにその上の層、「トランスポート層」や 「アプリケーション層」レベルの確認はできません。
「なんだPingって万能じゃないのね…」
いやいやその分シンプルで使いやすいし、 Pingだけでもある程度の切り分けは可能なんです。
たとえば、Pingは通るけどWebが見れないなんて時。
つまりIPレベルでの疎通はOKなのですから、ネットワーク的には 到達性を確保しているわけです。
そうなるとさらにその上のレベル、Webサーバーに問題が あるんじゃあないの? なんて切り分けができるわけです。
通信方式
TCPソケット(HTTPリクエスト)
UNIXドメインソケットとは
ローカルで開かれたソケットファイルを通じて、サーバー側とクライアント側とで通信を行う方法です。
Node.jsでは適用されていませんが、一般的には unix://
でURLが始まる。
TCPで行う通信と異なり、ローカルファイルを指定して通信を行うため、ドメインの解決や外部通信をしない。
そのためTCPに比べ速い。
このUNIXドメインソケットはローカルマシン内で、プロセス間で通信を行う場合に効果を発揮する。 たとえば、KubernetesのPod内のコンテナー間で通信を行う場合に使うことができます。 ボリュームを共有してマウントすることで通信ができるので、ドメインの名前解決に縛られることが無くなります。 ポートで通信を行う場合と比べて制限を受けない部分もあるので、一度使ってみてはどうですか?
CIDR(Classless Inter-Domain Routing)
Ingress(イングレス)
コンピューターネットワークにおいて、外部から内部ネットワークへのアクセスを許可するための方法のひとつ。
具体的には、Ingressコントローラーを使用して、外部のHTTP(S)リクエストを内部のKubernetesサービスにルーティングすることが可能。
Ingressは、ネットワークレベルでの負荷分散やTLS終端、ルーティングルールの定義など、多数の機能を提供するために使用されます。Ingressは、Kubernetesのオーケストレーションシステムであるコンテナーオーケストレーションシステムでよく使用されます。
サブネット
サブネット(Subnet)は、コンピュータネットワークにおいて、大きなネットワークをより小さな論理的なネットワークに分割するために使用される概念です。ネットワークのIPアドレス範囲を細分化し、異なる部分ネットワークに割り当てることで、トラフィックを制御したり、セキュリティを強化したりすることが可能になります。
サブネットは、通常、同じ物理的なネットワーク内にあるコンピューターやデバイスのグループを含みます。サブネットは以下のような特徴を持ちます:
IPアドレス範囲: サブネットは、ネットワーク全体のIPアドレス範囲内の特定の範囲を割り当てられます。たとえば、192.168.1.0/24のネットワークをサブネットに分割する場合、それぞれのサブネットには192.168.1.0から192.168.1.255までのIPアドレスが割り当てられることになります。
ルーティング: サブネットは、自身の範囲内のIPアドレスに対する通信を制御することが可能。サブネット内のデバイスは、同じサブネット内のデバイスとは直接通信できますが、他のサブネット内のデバイスとはルーターを介して通信 する必要があります。
セキュリティ: サブネットは、セキュリティグループやアクセス制御リスト(ACL)と組み合わせて、ネットワーク内のリソースに対するアクセスを制限することが可能。セキュリティの要件に合わせて、異なるサブネットに異なるセキュリティポリシーを適用することが可能です。
サブネットは、特定のネットワーク管理の目的に応じて、より小さなネットワークを作成するために広く使用されています。たとえば、オフィス内の異なる部署や、クラウドプロバイダーの仮想ネットワーク内の複数のアプリケーションを個別に管理するためにサブネットを使用することが一般的です。
サブネット同士の接続
サブネット同士の接続は、一般的にデフォルトではできません。サブネットはそれぞれ独立したネットワークとして扱われるため、デフォルトでは他のサブネットと直接通信することはできません。
しかし、サブネット同士を接続する方法はいくつか存在します。
-
ルーターを介した接続: サブネット同士を接続するためには、ルーターを使用することが一般的です。ルーターは、異なるネットワークを接続し、通信を中継する役割を果たします。ルーターを使用してサブネット同士を接続することで、通信が可能になります。
-
VPC Peering: クラウドプロバイダーの仮想プライベートクラウド(VPC )の場合、VPC Peeringを使用して異なるVPC(=サブネットを含む)同士を接続できます。VPC Peeringは、異なるVPC間で直接通信を確立し、セキュリティグループやネットワークACLを適用してセキュリティを確保できる機能です。
-
VPN (Virtual Private Network): オンプレミスネットワークとクラウド上のVPCや異なるクラウドのVPCを接続する場合、VPNを使用することがあります。VPNは、暗号化されたトンネルを通じて異なるネットワークを接続し、セキュアな通信を提供します。
これらの方法を使用することで、サブネット同士を接続して通信を可能にすることが可能。
ただし、セキュリティ上の考慮事項やルーティングの設定などが必要な場合がありますので、設計段階で適切なネットワークアーキテクチャを検討することが重要です。
VPCとVPNの概念
VPC(Virtual Private Cloud)とVPN(Virtual Private Network)は、どちらもネットワーク技術ですが、プロトコルではありません。これらの用語は、特定のネットワーク環境や接続方法を指し、特定のプロトコルや技術を利用して実現されます。
VPNとVPCが必要な要件
-
VPNのみが必要な場合 リモートサーバーにデスクトップ環境を立て、そのサーバーにセキュアなリモートアクセスが必要な場合、VPNのみで十分な場合があります。
-
VPCが必要な場合 クラウド環境でリソースを隔離し、セキュリティを高めたい場合にはVPCを検討します。
VPC(Virtual Private Cloud)
これがEC2を配置しているやつね。
-
概念: VPCは、クラウドプロバイダーが提供する仮想化されたプライベートネットワーク環境です。クラウド上にプライベートなネットワーク空間を構築し、その中でリソース(サーバー、ストレージなど)を運用します。
-
用途: VPCを使用すると、クラウド内でセキュアかつ分離された環境を構築できます。これにより、他のクラウドユーザーとは隔離された環境でアプリケーションを実行し、リソースを管理できます。
-
技術: VPCは仮想化技術を基盤としており、クラウド内で独自のネットワークトポロジー、IPアドレス範囲、サブネット、アクセス制御ポリシーなどを設定できます。
VPN(Virtual Private Network)
VPNはネットワークレベルでのセキュアな通信チャネルを提供する。
VPN + SSHについて
VPNのみでの接続: VPNはネットワークレベルでのセキュアな通信チャネルを提供します。これにより、リモートサーバーとの間のネットワークトラフィックは暗号化されます。 VPN接続を使用すると、リモートネットワークにあるかのようにサーバーや他のリソースにアクセスできます。 一部の場合、とくに内部ネットワークリソースへのアクセスや簡単なファイル共有の場合、VPN接続だけで十分かもしれません。 VPN + SSH:
SSHは、特定のサーバーに対してセキュアなコマンドラインアクセスを提供します。これにより、暗号化されたチャネルを介してサーバーのシェルに安全にアクセスできます。 システム管理やファイル転送(SCPやSFTPなど)など、より高度な操作を行う場合、SSH接続が必要になります。 VPNを使用してネットワークへの安全なアクセスを確立した後、そのネットワーク内の特定のサーバーにSSHで接続することは一般的な実践です。
-
概念: VPNは、インターネット上でプライベートネットワークを拡張する技術です。VPNを通じて、ユーザーはインターネットを介してプライベートネットワークに安全にアクセスできます。
-
用途: VPNは、リモートユー ザーがプライベートネットワークリソースへ安全にアクセスするために使用されます。また、オンラインプライバシーの向上や地理的な制限の回避にも利用されます。
-
技術: VPNは暗号化とトンネリングプロトコル(例:IPsec、OpenVPN)を使用して、セキュアな通信チャネルを確立します。
まとめ
- VPCは、クラウド環境内での仮想化されたプライベートネットワークを指し、特定のクラウドプロバイダーのサービスとして提供されます。
- VPNは、既存の公共のインターネットインフラストラクチャ上でセキュアなプライベートネットワーク接続を実現するための手段です。
これらはどちらもネットワーク技術であり、特定のネットワーク環境や接続方法を指していますが、それ自体がプロトコルではありません。ただし、これらの技術の実現には、多くのネットワークプロトコルや仮想化技術が関連しています。
VNCとVPN(FortiClient)の違いについて
VPNとVNCはまったく異なるサービスで、それぞれに異なる利点があり、併用利用するとうまく機能します。
VNCは、デバイスのリモートア クセスを可能にして、利用する従業員に自由と柔軟性を与えてくれますが、VPNのように安全性とプライバシーを提供しません。安全な接続を確立したいのであれば、VNCとVPNを併用すること