主題1.07:ネットワークの基礎
1.07.1 インターネットプロトコルの基礎(重要度4)
TCP/IPの通信フロー
主な各層の通信プロトコル
アプリケーション層:FTP、SSH、Telnet、SMTP、DNS、HTTP、POP3、IMAP4、NTP、HTTPS
トランスポート層:TCP、UDP
インターネット層:IP、ICMP、ARP
ネットワークインターフェイス層:Ethernet、IEEE802.11、PPP
ポート番号
・TCP/UDPプロトコルで使用するポート番号は、通信したいプログラム(サービス)を特定するための番号
・ポート番号は16ビットで表され、0~65535番までが使用できる
・0~1023番はウェルノウンポートと言い、一般的によく使われるアプリケーション用に予約されている
・ウェルノウンポートはroot権限で使用でき、一般ユーザー権限では1024番から使用できる
主なウェルノウンポート
ポート番号:プロトコル:TCP/UDP:用途
22:SSH:TCP:リモートホストの遠隔操作(暗号化有り)
25:SMTP:TCP:電子メール送信
53:DNS:TCP/UDP:名前解決
80:HTTP:TCP:テキストや画像などのコンテンツの送受信(暗号化無し)
123:NTP:UDP:時刻の同期
443:HTTPS:TCP:テキストや画像などのコンテンツの送受信(暗号化有り)
トランスポート層の通信プロトコル
TCP:信頼性の高いコネクション型の通信プロトコル
UDP:コネクションレス型のプロトコル。複雑な制御をしない分TCPと比べデータ転送速度が速い
インターネット層の通信プロトコル
IP:機器(サーバー、ルーターなど)へのアドレス付与によって機器やネットワークを識別したり、パケットの分割や統合を行い目的地までパケットを届ける、インターネット通信の中核をなすプロトコル
ICMP:IPのエラーメッセージや制御メッセージを転送する
ARP:IPアドレスからMACアドレスを求めるプロトコル
IPv4アドレスとネットワーク構成
192.168.56.0/24のアドレス構成
ネットワークアドレス:192.168.56.0
ホストアドレス:192.168.56.1~254
ブロードキャストアドレス:192.168.56.255
POINT!
・TCP/IPにおいて、IPアドレスとサブネットマスクが各端末に必須
・サブネットマスクによりIPアドレスのネットワークアドレス部を特定
・各ネットワークには必ず2つのホストに割り当てられないアドレス(ネットワークアドレス、ブロードキャストアドレス)が存在する
・デフォルトゲートウェイアドレスは異なるネットワークに接続するときに必要
・デフォルトゲートウェイアドレスは端末に割り当てられているネットワークと同一のネットワークアドレスである必要がある
IPv4アドレスのクラスとサブネット分割
IPアドレスの「クラス」
クラス:範囲:サブネットマスク
A:0.0.0.0~127.255.255.255:255.0.0.0
B:128.0.0.0~191.255.255.255:255.255.0.0
C:192.0.0.0~223.255.255.255:255.255.255.0
D:224.0.0.0~239.255.255.255
E:240.0.0.0~255.255.255.255
*IPアドレスのクラスの概念を使わずに、任意の長さのサブネットマスクを利用することをCIDR(サイダー)という
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)
サブネット分割によるアドレス
192.168.56.0/26
→ネットワークアドレス:192.168.56.0
→ホストアドレス:192.168.56.1~62
→ブロードキャストアドレス:192.168.56.63
192.168.56.64/26
→ネットワークアドレス:192.168.56.64
→ホストアドレス:192.168.56.65~126
→ブロードキャストアドレス:192.168.56.127
192.168.56.128/26
→ネットワークアドレス:192.168.56.128
→ホストアドレス:192.168.56.129~190
→ブロードキャストアドレス:192.168.56.191
192.168.56.192/26
→ネットワークアドレス:192.168.56.192
→ホストアドレス:192.168.56.193~254
→ブロードキャストアドレス:192.168.56.255
第4オクテット部分のサブネット分割実行時のネットワーク数とホスト数
マスク値:分割後のネットワーク数:各ネットワークの最大ホスト数
/25:2(2¹):126(2⁷-2)
/26:4(2²):62(2⁶-2)
/27:8(2³):30(2⁵-2)
/28:16(2⁴):14(2⁴-2)
/29:32(2⁵):6(2³-2)
/30:64(2⁶):2(2²-2)
IPアドレスクラスごとのプライベートアドレス範囲
クラス:プライベートアドレス範囲:デフォルトマスク
A:10.0.0.0~10.255.255.255:/8
B:172.16.0.0~172.31.255.255:/16
C:192.168.0.0~192.168.255.255:/24
特殊な用途で使用されるアドレス範囲
アドレス範囲:用途
127.0.0.0/8:ループバックアドレス(ホスト自身を表すアドレス、一般的には127.0.0.1を利用)
169.154.0.0/16:APIPA(DHCPサーバーからアドレスを取得できなかった場合に自動構成されるアドレス)
IPv4アドレスの特徴
表記:10進数
アドレス長:32ビット
区切り:8ビット(3桁)毎に.(ドット)
表記例:192.168.100.1
アドレスの自動割り当て:DHCP等の技術を併用して実現
セキュリティ:別のプロトコルを併用して実現
アドレスの省略表記:不可
ループバックアドレス:127.0.0.0/8の範囲
*閉じられたネットワーク内でのみ使用可能なプライベートアドレスがある
IPv6アドレス
IPv6アドレスの表記ルール
・16進数(0-9とA-F)で表記し、全体128ビットを16ビット(4桁)ずつコロン「:」で区切る(計8ブロック)
・各ブロックの先頭にある「0」は省略可能(連続した場合も同様)
・「0000」は「0」に省略可能
・連続した「0000」のブロックは1回に限り「::」に省略可能
200a:cccc:0000:0500:0000:0000:3333:3333
→200a:cccc:0:500::3333:3333に省略可能
IPv6ユニキャスト(1対1通信)アドレス
サブネットを表す前半64ビット→サブネットプレフィックス
ホストを表す後半64ビット→インターフェイス識別子(Interface-ID)
IPv6アドレスのスコープ
スコープの種類:アドレス:用途
グローバル:2000::/3:インターネットで一意に利用。IPv4でのグローバルアドレスに相当
ユニークローカル:fc00::/7:組織内のネットワークで一意に利用。IPv4でのプライベートアドレスに相当
リンクローカル:fe80::/10:同一ネットワークで一意に利用。IPv4でのリンクローカルアドレス(APIPAで生成されるアドレス、169.254.0.0/16)に相当
インターフェイスの種類
enp0s3:仮想マシン同士の接続で利用するインターフェイス
enp0s8:インターネットなど外部ネットワークへの接続で利用するインターフェイス
IPv6アドレスの特徴
表記:16進数
アドレス長:128ビット
区切り:16ビット(4桁)毎に:(コロン)
表記例:2004:a80:e01:a8::3
アドレスの自動割り当て:自動割り当て機能を標準で実装
セキュリティ:暗号化通信(IPsec)を標準で実装
アドレスの省略表記:可能
ループバックアドレス:0:0:0:0:0:0:0:1または::1
*IPv4との互換性はない(但し、機器にIPv4アドレスとIPv6アドレスの両方のアドレスを割り当てるデュアルスタックなどの仕組みで相互運用は可能)
*ブロードキャストが廃止され、一斉送信はすべてマルチキャスト(特定グループ宛通信)で行われる
1.07.2 基本的なネットワーク構成(重要度4)
ネットワーク関連の設定ファイル
/etc/hostname
ホスト名のみを設定(Debian系)
Debian
/etc/sysconfig/network
・ホスト名を設定(Red Hat系)
・ネットワーク機能の有効/無効
・デフォルトゲートウェイ等も設定可
NETWORKING=yes
HOSTNAME=CentOS
GATEWAY=192.168.1.1
/etc/hosts
IPアドレスとホスト名の対応付け
112.78.124.10 ping-t.com
192.168.1.100 FileServer
/etc/nsswitch.conf
GNU Cライブラリが名前解決やサービス名解決を行う際の問い合わせ順序を指定
hosts: files dns
services: files
/etc/resolv.conf
ドメイン名やDNSサーバーの指定
nameserver 192.168.1.1 →名前解決に使用するDNSサーバー(1サーバー1行)
domain ping-t.com →自サーバーの所属するドメイン名
search files-east.jp example.com →search行にexample.comを追加
/etc/services
サービス名とポート番号の対応付け
telnet 23/tcp
hostnameコマンド
書式
hostname【ホスト名】
概要
ホスト名の確認・設定
引数
・ホスト名:指定した名前をホスト名として設定。引数を省略すると、現在設定されているホスト名を表示
使用例
hostname
→現在のホスト名を表示
hostname centos7.example.com
→指定したドメイン名付きのホスト名に変わったことを確認
ホスト名が格納されているファイル
/etc/hostname
nmcliコマンド
書式
nmcli オブジェクト【サブコマンド】【引数】
概要
NetworkManagerを利用したネットワーク機能の確認・設定
引数
・オブジェクト:設定対象となるオブジェクト(項目)
・サブコマンド:操作内容をサブコマンドで指定
・引数:設定や参照する項目や値を指定
主なオブジェクト
connection
→接続情報の管理。インターフェイスの設定など
general
→NetworkManagerサービスの管理
device
→デバイスの管理
主なサブコマンド
show
→設定を参照
modify
→設定を変更
up
→接続の有効化
*利用できるサブコマンドはオブジェクトにより異なる。上記はconnectionオブジェクトのサブコマンド
使用例
nmcli connection show enp0s8 | grep ipv4
→enp0s8インターフェイスの設定を確認(表示を終えたいときはqキーを押す)
nmcli connection modify enp0s8 ipv4.address “10.0.0.1/24”
→modifyサブコマンドで設定を変更
nmcli connection modify enp0s3 ipv4.dns “192.168.56.11”
→DNSサーバーの設定
nmcli connection modify enp0s3 +ipv4.dns “192.168.56.21”
→2つめのDNSサーバーアドレスは、プロパティ名の先頭にプラスを付ける
NetworkManagerの特徴
・動的にネットワークを管理する仕組みである
・ノートPCなどでネットワーク環境を切り替えるのに向いている
ipコマンド
書式
ip【オプション】サブコマンド
概要
インターフェイスやルーティング設定を確認・設定
*ifconfig、route、arp、netstatに代わって利用が推奨される
引数
・サブコマンド:以下のサブコマンドで処理内容を指定
サブコマンド
addr
→IPアドレスに関する情報を表示・設定。以下のサブコマンドで処理を指定
show [インターフェイス名]
→設定情報を表示。インターフェイス名を指定できる(省略時の既定)
add IPアドレス/マスク dev インターフェイス名
→IPアドレスを設定
del IPアドレス/マスク dev インターフェイス名
→IPアドレスを削除
link
→ネットワークデバイスに関する情報を表示・設定
show
→インターフェイスの状況のみを確認
set インターフェイス up/down
→インターフェイスを有効化・無効化
set dev ネットワークデバイス up/down
→ネットワークデバイスを有効化・無効化
neighbor
→IPv4のARPキャッシュ、IPv6のNDキャッシュの内容を確認
show
→ARPキャッシュの内容を確認
route
→ルーティングテーブルに関する情報を表示・設定。以下のサブコマンドで処理を指定(アドレス部分にdefaultと記述するとデフォルトゲートウェイの指定)
show
→ルーティングテーブルを表示
add IPアドレスまたはネットワークアドレス/マスク via 転送先
→ルート情報を追加
del IPアドレスまたはネットワークアドレス/マスク
→ルート情報を削除
使用例
ip addr show lo
→lo(ループバック)インターフェイスの状態を表示
ip addr add 127.0.0.2/8 dev lo
→loインターフェイスにIPアドレスを追加
ip route
→ルーティングテーブルに関する情報を表示
ip route add default via 10.0.3.254
→指定したデフォルトゲートウェイを追加
デフォルトルート
・Linuxのルーティングテーブルでは「default」と表示される
・他に宛先がない場合に参照されるルートである
ifconfigコマンド
書式
ifconfig【オプション】【インターフェイス名】【IPアドレス [netmask サブネットマスク]】【up/down】
概要
インターフェイスの設定を確認、設定する
主なオプション
-a
→無効になっているインターフェイスも表示する
引数
・インターフェイス名:指定したインターフェイスの情報を表示・設定
・IPアドレス:指定するとインターフェイスにIPアドレスを設定。省略するとインターフェイスの設定を表示
・サブネットマスク:割り当てるサブネットマスクを指定。省略すると各クラスのデフォルトマスクを設定
・up/down:インターフェイスを有効(up)、無効化(down)
使用例
ifconfig
→引数なしで実行すると、現在有効なインターフェイスの情報一覧を確認できる
ifconfig enp0s8 10.1.2.3
→enp0s8インターフェイスにIPアドレスを設定
ifconfig eth1 192.168.1.2 netmask 255.255.255.0
→インターフェイスeth1にIPアドレス192.168.1.2、サブネットマスク255.255.255.0を割り当て
ifconfig eth1 up
→インターフェイス名の後にupを指定することで有効化
ifconfig enp0s8 down
→インターフェイス名の後にdownと指定することで無効化
ifconfigコマンド使用時の影響範囲
・ifconfigコマンドを実行しても、何も影響がない場合もある
・インターフェイスのアップ・ダウン状態が変更される
ifconfigで表示される情報
・IPアドレス
・ブロードキャストアドレス
・サブネットマスク
・MTU
ifupコマンド
書式
ifup インターフェイス名
概要
インターフェイスの有効化
使用例
ifup eth1
→インターフェイスeth1を有効化
ifdownコマンド
書式
ifdown インターフェイス名
概要
インターフェイスの無効化
使用例
ifdown eth1
→インターフェイスeth1を無効化
routeコマンド
書式
route (表示)
route add -net ターゲット netmask マスク gw ゲートウェイ / default gw ゲートウェイ (追加)
route del -net ターゲット / default (削除)
*-netの部分を-hostにすると、対象をホストのアドレスとみなす
概要
ルート情報の設定・参照
主なオプション
-F
→ルーティングテーブルを表示(オプション指定無しと同じ)
-C
→ルーティングキャッシュを表示する
-n
→名前解決せずにルーティングテーブルを表示
引数
・ターゲット:ルーティングの対象となるアドレスを指定
・マスク:ルート情報の指定に利用するマスクを指定
・ゲートウェイ:宛先となるゲートウェイ(ルーター)のアドレスを指定
使用例
route -n
→名前解決せずにルーティングテーブルを表示
route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.1.1
→ルーティングテーブルに新しい経路を追加
route add default gw 10.0.3.2
→デフォルトゲートウェイを追加
route del default
→デフォルトゲートウェイを削除
1.07.3 基本的なネットワークの問題解決(重要度4)
pingコマンド
書式
ping【オプション】宛先
概要
宛先となるホストと疎通確認を行う(ICMPプロトコルを使用)
主なオプション
-c 回数
→指定した回数、パケットを送信(count)
-i
→疎通確認用パケットの疎通感覚(interval)
-n
→結果表示時の形式をホスト名ではなくアドレスで表示(numeric)
引数
・宛先:宛先となるホストの名前もしくはIPアドレスを指定
使用例
ping 192.168.56.21
→ICMPパケットを送信して宛先となるホストと疎通確認(Ctrl + cで停止)
ping6 -c 1 ::1
→ping6コマンドでIPv6アドレスに対応
pingコマンドの説明
・ICMPエコー要求パケットを送信すると、ICMPエコー応答パケットが返される
・時間超過や宛先到達不能などのエラーの原因が返される
・ダウンしているサーバーに対して実行すると応答がない(Ctrl + cで強制終了するまで応答がない)
tracerouteコマンド
書式
traceroute【オプション】宛先
概要
宛先となるホストに到達するまでの経路(ルーター)の情報を出力
主なオプション
-n
→結果表示時の形式をホスト名ではなくアドレスで表示(numeric)
-p
→使用するポート番号を指定
-g
→使用するゲートウェイを指定
-T
→TCPを使用
-I(大文字のi)
→ICMPエコー要求による経路を確認(既定ではUDPで経路を確認)
引数
・宛先:宛先となるホストの名前もしくはIPアドレスを指定
使用例
traceroute -I www.example.com
→pingコマンドと同様、ICMPエコー要求メッセージを送信してルート情報をトレースする
traceroute6 sv-devel
→開発用サーバーsv-develにIPv6で到達するまでの経路を確認
tracepathコマンド
書式
tracepath【オプション】宛先
概要
宛先となるホストに到達するまでの経路(ルーター)の情報をMTUとともに出力
主なオプション
-n
→結果表示時の形式をホスト名ではなくアドレスで表示(numeric)
引数
・宛先:宛先となるホストの名前もしくはIPアドレスを指定
使用例
tracepath6 -n fc00:babe:face:5678::1
→ネットワークのMTU調査のため、社内サーバーへ疎通確認(IPv6)
tracepathコマンドの説明
・宛先までの経路が確認できる
・宛先までのPathMTUが確認できる
・IPv4、IPv6両方に対応している
ssコマンド
書式
ss【オプション】
概要
TCP/IP通信の状態を表示(netstatの後継となるコマンド)
主なオプション
-a
→待機ポートも含むすべての状態の通信を表示(-lを指定しなかった場合、確立した通信のみ表示)
-l
→待機(LISTEN)ポートを表示
-n
→名前解決をせずに表示
-t
→TCP通信を表示
-u
→UDP通信を表示
-p
→対応するプロセスのID(PID)を表示
使用例
ss
→現在接続が確立中のTCP/IP通信とUnixドメインソケット通信の内容を出力
ss -atu
→すべてのTCP/IP通信(TCPとUDP通信を出力するよう指定)を出力
netstatコマンド
書式
netstat【オプション】
概要
TCP/IP通信の状態を表示
主なオプション(ssコマンドとほぼ同じオプションが利用可能)
オプションなし
→有効なネットワーク接続や、開いているソケットの情報を表示
-r
→ルーティングテーブルを表示
-i
→ネットワークインターフェイスの統計情報を表示
-n
→アドレスやポートの名前解決をしないで表示
使用例
netstat -ntl
→TCPのLISTENポートを出力。ポート番号やホスト情報を名前解決しない
ncコマンド
書式
nc【オプション】宛先【ポート番号】
概要
指定したポートへの接続、もしくは指定したポートを待ち受け
主なオプション
-l
→指定したアドレス、ポート番号で接続の待ち受けをする(listen)
-p
→送信元ポートを指定する(port)
-u
→デフォルトのTCPではなくUDPで動作する(udp)
引数
・宛先:宛先となるホストの名前もしくはIPアドレスを指定
・ポート番号:指定したポート番号宛てに接続
使用例
nc -l 2323 < nc.txt
→ファイルを標準入力でリダイレクトし、待機
nc 192.168.56.11 2323 > nc.txt
→上記の環境とは別の環境で指定したポートに接続し、標準出力でリダイレクトしておくと転送される
nc -p 50000 test-sv
→ファイアウォール機能のテストのため、Netcatで送信元ポート番号を50000に指定して接続
Netcat(コマンド名:nc、ncat)の機能
・標準入出力を使用してのデータ授受
・TCP/UDPでのデータ送受信
・簡易的なサーバーになれる
1.07.4 クライアント側のDNS設定(重要度2)
hostコマンド
書式
host【オプション】名前【DNSサーバー】
概要
名前解決を検証し、簡易的な情報を出力
主なオプション
-t レコード
→問い合わせるレコードの種類を指定
-v
→詳細な出力(verbose)
引数
・名前:問い合わせる名前を指定
・DNSサーバー:問い合わせ先のサーバーのアドレスを指定
使用例
host -t ns example.com
→example.comのNSレコード(DNSサーバーの情報)を解決
host 8.8.8.8 8.8.8.8
→8.8.8.8を名前解決。8.8.8.8を問い合わせ先のサーバーに指定
digコマンド
書式
dig 【オプション】【@サーバー】名前【レコード】
概要
名前解決を検証し、詳細な情報を出力
主なオプション
-t レコード
→問い合わせるレコードの種類を指定
-x
→逆引きの問い合わせ(PTRレコードの問い合わせ)を実行
引数
・サーバー:問い合わせ先のサーバーを指定
・名前:問い合わせる名前を指定
・レコード:問い合わせるレコードの種類を指定
レコードの種類
a:IPアドレス(デフォルト)
any:すべての情報
mx:メールサーバーの情報
ns:ネームサーバーの情報
soa:ゾーン(ドメインの範囲)の情報
txt:テキスト情報
使用例
dig yahoo.co.jp mx
→DNSサーバーに登録されている、「yahoo.co.jp」のメールサーバーの情報を確認
dig -t text yahoo.co.jp
→DNSサーバーに登録されている、「yahoo.co.jp」のドメインのテキスト情報を確認
dig @8.8.8.8 yahoo.co.jp
→外部のDNSサーバー8.8.8.8に「yahoo.co.jp」のIPアドレスを問い合わせ
digコマンドの説明
・指定したホスト名に対するDNSサーバーへの登録情報を表示する
・DNSサーバーからデバッグのための詳細な情報を取得できる
nslookupコマンド
書式
nslookup【オプション】名前【DNSサーバー】
概要
名前解決を検証し、簡易的な情報を出力
主なオプション
-type=レコード
→問い合わせるレコードの種類を指定
引数
・名前:問い合わせる名前を指定
・DNSサーバー:問い合わせ先のサーバーのアドレスを指定