不惑にしてまだ何者でもない者のブログ

Arduino関連、Raspberry Pi関連、プログラミング学習

LinuCレベル1取得に向け勉強中:第7章 ネットワークの基礎

2020-10-09 23:44:56 | LinuC
LinuCレベル1合格教本で、勉強を進める。
今回は、『第7章 ネットワークの基礎』である。

 

7.1 インターネットプロトコルの基礎

7.1.1 TCP/IPの通信フロー

  • TCP/IPにおける4つの層
    • アプリケーション層
    • トランスポート層:ポート番号など
    • インターネット層:IPアドレスなど
    • ネットワークインターフェイス層:MACアドレスなど

表7.1 主な各層の通信プロトコル

アプリケーション層FTP, SSH, Telnet, SMTP, DNS, HTTP, POP3, IMAP4, NTP, HTTPS
トランスポート層TCP, UDP
インターネット層IP, ICMP, ARP
ネットワークインターフェイス層Ethernet, IEEE802.11, PPP

表7.2 主なウェルノウンポート
ポート番号アプリケーションポート番号アプリケーション
20FTP(データ用)143IMAP
21FTP(制御用)161SNMP
22
SSH162SNMP Trap
23Telnet389LDAP
25
SMTP443
HTTPS
53DNS465SMTPS
80HTTP514syslog
110POP3636LDAPS
123
NTP993IMAPS
139NBT Session995POP3S

7.1.2 IPv4アドレスとネットワーク構成

  • IPアドレスには、IPv4とIPv6がある。
  • IPv4アドレスは32ビットで構成されており、これを8ビット(オクテット)ずつ10進数に置き換えて、IPアドレスとサブネットマスクで次にように構成する。
    IPアドレス:192.168.56.11
    サブネットマスク:255.255.255.0(=/24)
  • サブネットマスクは、ホストのネットワークを表すアドレス範囲を指定する。
表7.3 192.168.56.0/24のアドレス構成
192.168.56.0/24ネットワークアドレス192.168.56.0

ホストアドレス192.168.56.1〜254

ブロードキャストアドレス192.168.56.255

7.1.3 IPアドレスクラスとサブネット分割


表7.4 IPアドレスクラスと対応するプライベートアドレス
クラス
第1オクテット(2進数での先頭部分)
デフォルトマスク
A
0〜127(0〜)255.0.0.0(/8)
B
128〜191(10〜)255.255.0.0(/16)
C
192〜223(110〜)255.255.255.0(/24)

  • サブネット分割:本来ホストアドレス部だった部分をネットワークアドレス部として利用する方法。サブネット分割すると、利用できるネットワークの数が増える。その分、各ネットワークにおけるホスト数は減る。
表7.6 第4オクテット部分のサブネット分割実行時のネットワーク数とホスト数
マスク値
分割後のネットワーク数
各ネットワークの最大ホスト数
/25
2(2^1)126(2^7-2)
/26
4(2^2)62(2^6-2)
/27
8(2^3)30(2^5-2)
/28
16(2^4)14(2^4-2)
/29
32(2^5)6(2^3-2)
/30
64(2^6)2(2^2-2)
  • IPv4アドレスには、プライベートアドレスとグローバルアドレスという分類もある。
    • グローバルアドレス:インターネット上に公開されているホストが利用するアドレスであり、ICANNという組織により管理されている。
    • プライベートアドレス:LAN内でのみ使用し、インターネットなど外部ネットワーク側からホストを特定する必要がない場合に利用する。
  • グローバルアドレスはインターネット上に公開するサーバーやルーターのインターネット側のインターフェイスに割り当てられ、プライベートアドレスはLAN内のホスト用のアドレスに割り当てられるのが一般的。
表7.7 IPアドレスクラスごとのプライベートアドレス範囲
クラス
プライベートアドレス範囲
デフォルトマスク
A
10.0.0.0〜10.255.255.255255.0.0.0(/8)
B
172.16.0.0〜172.31.255.255255.255.0.0(/16)
C
192.168.0.0〜192.168.255.255255.255.255.0(/24)

表7.8 特殊な用途で使用されるアドレス
アドレス範囲
用途
127.0.0.0/8
ループバックアドレス(ホスト自身を表すアドレス、一般的には127.0.0.1を利用)
169.154.0.0./16
APIPA(DHCPサーバーからアドレスを取得できなかった場合に自動構成されるアドレス)

7.1.4 IPv6アドレス

  • IPv6アドレスは128ビットで構成され、これを8ビットずつ16進数に置き換えて構成する。
    2001:0db8:dead:beef:cafe:0000:0000:1234/64
    • 先頭の0は表記を省略できる
    • 0しか書かれていない数値列(ゼロフィールド)はまとめて省略できる
    • ゼロフィールドが離れた場所に複数存在している場合は、片方しか省略できない
  • IPv6アドレスでは、プレフィックス値を使用してネットワークアドレス部とホストアドレス部を特定する。
表7.9 IPv6アドレスのスコープ
スコープの種類
アドレス
用途
グローバル
2000::/3インターネットで一意に利用。IPv4でのグローバルアドレスに相当。
ユニークローカル
fc00::/7組織内のネットワークで一意に利用。IPv4でのプライベートアドレスに相当。
リンクローカル
fe80::/10同一ネットワークで一意に利用。IPv4でのリンクローカルアドレス(APIPAで生成されるアドレス、169.254.0.0/16に相当)
  • ip addrで確認できる。
    • enp0s3:仮想マシン同士の接続で利用するインターフェイス
    • enp0s8:インターネットなど外部ネットワークへの接続で利用するインターフェイス

7.2 基本的なネットワーク構成

7.2.1 ホスト名の設定

  • /etc/hostnameファイル:ホスト名の確認・設定
  • hostname [ホスト名]:ホスト名の確認・設定

7.2.2 TCP/IPの基本的な設定

  • nmcli オブジェクト [サブコマンド] [引数]:NetworkManagerを利用したネットワーク機能の確認・設定
    • 主なサブコマンド
      connection:接続情報の管理。インターフェイスの設定など
      general:NetworkManagerサービスの管理
      device:デバイスの管理
    • 主なサブコマンド
      show:設定を参照
      modify:設定を変更
      up:接続の有効化
    • nmcliコマンドを利用すると、異なる環境でも同じ方法で設定変更ができる。
  • ip [オプション] サブコマンド:インターフェイスやルーティング設定を確認・設定
    • addr:IPアドレスに関する情報を表示・設定。以下のサブコマンドで処理を指定
      • show [インターフェイス名]:設定情報を表示。インターフェイス名を指定できる。
      • add IPアドレス/マスク dev インターフェイス名:IPアドレスを設定
      • del IPアドレス/マスク dev インターフェイス名:IPアドレスを削除
    • route:ルーティングテーブルに関する情報を表示・設定。以下のサブコマンドで処理を指定(アドレス部分にdefaultと記述するとデフォルトゲートウェイの指定)
      • add IPアドレスまたはネットワークアドレス/マスク via 転送先:IPアドレスを設定
      • del IPアドレスまたはネットワークアドレス/マスク:IPアドレスを削除
  • systemctl restart network:networkサービスの再起動。
  • ifconfig [オプション] [インターフェイス名] [IPアドレス [netmask サブネットマスク]] [up/down]:インターフェイスの設定を確認、設定する。
  • ifup インターフェイス名:インターフェイスの有効化
  • ifdown インターフェイス名:インターフェイスの無効化
表7.10 同じ目的に利用可能なコマンドの例

iprouteパッケージ
net-toolsパッケージ
インターフェイス/IPアドレスの参照・設定
ifconfig, ifup, ifdownip
ルーティングテーブルの参照・設定
ip routeroute
ネットワーク接続情報の確認ssnetstat

ssnetstat

7.2.3 ルート情報の設定

  • ip route:ルート情報の参照・設定
    • このルート情報をルーティングテーブルという。
    • 行頭がdefaultとなっているのがデフォルトゲートウェイアドレス。
  • route (表示)
    route add -net ターゲット netmask マスク gw ゲートウェイ / default gw ゲートウェイ (追加)
    route del -net ターゲット / default (削除)
    :ルート情報の設定・参照

7.3 基本的なネットワークの問題解決

7.3.1 疎通確認によるトラブルシュート

  • ping [オプション] 宛先:宛先となるホストと疎通確認を行う。
    -c:指定した回数、パケットを送信
  • pingコマンドを実行すると、ICMPパケットを送信して疎通確認を行う。
表7.11 主なICMPメッセージタイプ
メッセージタイプ意味
0:エコー応答
pingパケットを受信したホストが返す応答メッセージ
3:宛先到達不能
途中経過などでの設定ミスなどにより、目的のホストにメッセージを送ることができない場合に帰ってくるメッセージ
8:エコー要求pingを実行したときに送られるエコー応答を要求するメッセージ
11:時間経過経由したルーターが多すぎるなど、目的のホストにメッセージを送ることができない場合に返ってくるメッセージ
  • traceroute [オプション] 宛先:宛先となるホストに到達するまでの経路(ルーター)の情報を出力
    -I:ICMPエコー要求による経路を確認(既定ではUDPで経路を確認)
  • tracepath [オプション] 宛先:宛先となるホストに到達するまでの経路(ルーター)の情報をMTUとともに出力
※ ping、traceroute、tracepathコマンドは、そのままではIPv6アドレスに対応していない。
→ ping6、traceroute6、tracepath6

7.3.2 TCP/IP通信の状態を確認

  • ss [オプション]:TCP/IP通信の状態を表示
    -a:待機ポートも含むすべての状態の通信を表示(-lを指定しなかった場合、確立した通信のみ表示)
    -l:待機(LISTEN)ポートを表示
    -n:名前解決をせずに表示
    -t:TCP通信を表示
    -u:UDP通信を表示
    -p:対応するプロセスのID(PID)を表示
  • netstat [オプション]:TCP/IP通信の状態を表示

7.3.3 指定したポートへの接続

  • nc [オプション] 宛先 [ポート番号]:指定したポートへの接続、もしくは指定したポートを待ち受け
    -l:指定したポートを待ち受ける
    • [root@centos7 ~]# nc -l 2323
    • root@debian10:~# nc 192.168.56.11 2323
      test
      ^C(Ctrl+C)

7.4 クライアント側のDNS設定

7.4.1 名前解決の設定

  • TCP/IPネットワークでは、IPアドレスの他に、ホスト名を指定して接続することも可能。
    • ホスト名をIPアドレスに変換することを、名前解決という。
名前解決の順番
  1. 端末上に存在する/etc/hostsファイルの情報を参照し、名前解決
  2. /etc/resolv.confファイルに指定されたDNSサーバーに問い合わせて名前解決
この処理順は、/etc/nsswitch.confファイルで以下のように定義されている。

[root@centos7 ~]# grep ^host /etc/nsswitch.conf
hosts: files dns myhostname

  • /etc/nsswitch.conf
    書式:システムデータベース:サービス [サービス・・・]
    概要:ネームサービススイッチの設定
  • /etc/hosts
    書式:IPアドレス ホスト名 [ホスト名・・・]
    概要:IPアドレスとホスト名の関連付け
    補足:同じIPアドレスに対して複数のホスト名を関連付けることができる
  • 本格的に名前解決の運用を行う場合、DNSサーバーによる名前解決を利用する。
    • DNSによる名前解決では、FQDN(完全修飾ドメイン名)とIPアドレスを解決する。
      • FQDNとは、ドメイン名が付いたホスト名のこと。
    • 正引き:FQDNからIPアドレスを問い合わせる名前解決
    • 逆引き:IPアドレスからFQDNを問い合わせる名前解決
  • /etc/resolv.conf
    書式:設定項目 値
    概要:DNSサーバー/クライアント設定
    設定項目:
    searchもしくはdomain->ドメイン名として補完(両方設定された場合はsearchを優先)
    nameserver->DNSサーバーアドレス
  • nmcliコマンドによるDNSサーバーの設定も可能。

7.4.2 名前解決の検証

  • host [オプション] 名前 [DNSサーバー]:名前解決を検証し、簡易的な情報を出力
    -t レコード:問い合わせるレコードの種類を指定
  • dig [オプション] [@サーバー] 名前 [レコード]:名前解決を検証し、詳細な情報を出力
    -x:逆引きの問い合わせ(PTRレコードの問い合わせ)を実行
  • nslookup [オプション] 名前 [DNSサーバー]:名前解決を検証し、簡易的な情報を出力
    -type=レコード:問い合わせるレコードの種類を指定

演習問題

  1. D→❌A
  2. C,D,E→❌A,B,E
  3. 253→❌61
  4. 25→◯
  5. C→◯
  6. C→❌B,C
  7. C→❌A
  8. A,D→◯
  9. B,C→◯
  10. B→◯
  11. D→❌B
  12. D→◯
  13. B→◯
  14. A,C→❌A,D
7/14=0.5(50%)
全然駄目だ😭 

ネットワーク関係はやはり難しい😵 


最新の画像もっと見る

コメントを投稿