Linuxにおけるネットワークの基本
ネットワークの学習を本格的にし始めると、基本的なことであってもいくつも記事が必要になりますので、LPICレベル1の試験に必要な部分に絞っていきます。
また、試験範囲内のことであっても一部の基本的な内容は割愛しますので、そもそもネットワークの基礎知識が不十分な場合には別途学んだ方が効率がよいかもしれません。
基本プロトコル
LPICに登場する基本的なプロトコルについて簡単に触れておきます。
■TCP
Transmission Control Protocolと呼ばれる信頼性の高い通信を実現する際に使用されるコネクション型のプロトコルです。
その他のプロトコルの上位プロトコルとして使用されます。
■UDP
User Datagram Protocolと呼ばれるコネクションレス型のプロトコルです。
TCPと比較して通信の不確実性はあるもののデータは軽量で転送速度が速いためストリーミング用のアプリケーションなどで使用される。
■IP(IPv4)
Internet Protocol version 4と呼ばれ、一般的には単にIPとも呼ばれる最も基有名なプロトコルの一つです。
TCPなどのデータ転送をつかさどるコネクションレス型プロトコルです。
■IPv6
Internet Protocol Version 6と呼ばれるIPv4の後継プロトコルです。
IPアドレスの枯渇に備え、128bitまで拡張したプロトコルで、IPv4と比較して以下のような特徴があります。
・IPアドレスの省略表記が可能
・IPアドレスの自動割り当て機能を標準で実装
・IPsec(暗号化通信)を標準で実装
アドレスの省略記法とかも出題範囲になるのかな?
IPアドレスのクラス
IPはいくつかのクラスに分類されています。
LPICでも出題範囲になっているようなので不安がある場合はここで押さえておきましょう。
クラス | IP範囲 | サブネット | 先頭ビット表現 |
---|---|---|---|
クラスA | 0.0.0.0 ~ 127.255.255.255 | 255.0.0.0 | 0000 |
クラスB | 128.0.0.0 ~ 191.255.255.255 | 255.255.0.0 | 1000 |
クラスC | 192.0.0.0 ~ 223.255.255.255 | 255.255.255.0 | 1100 |
クラスD | 224.0.0.0 ~ 239.255.255.255 | 1110 | |
クラスE | 240.0.0.0 ~ 255.255.255.255 | 1111 |
クラスA~Cが一般的なIPアドレスに使用されるクラスで、クラスDがIPマルチキャスト、クラスEが研究用途に確保されたアドレスになります。
クラスの範囲が覚えられない場合には先頭ビットを把握してその場で算出するでもよさそうです。
また、クラスA~Cには以下のようにプライベートアドレスとして割り当てられる範囲が決まっています。
クラス | IPアドレス範囲 |
---|---|
クラスA | 10.0.0.0 ~ 10.255.255.255 |
クラスB | 172.16.0.0 ~ 172.31.255.255 |
クラスC | 192.168.0.0 ~ 192.168.255.255 |
実業務などで使用することも多いアドレス帯なので個人的には割と覚えやすいような気もします。
ポート
各種サービスなどを提供するポート番号は使用用途によって範囲が定められています。
名称 | ポート範囲 | 備考 |
---|---|---|
ウェルノウンポート | 0~1023 | システムやroot権限を持つプロセスのポート番号 |
ユーザポート | 1024~49151 | よく使用されるサービスに提供されるポート番号 |
エフェメラルポート | 49152~ 65535 | 自由に使用可能なポート番号 |
最低限覚えておくべきはウェルノウンポートのポート範囲とかでしょうか。あとは原則root権限のみで使用可能という点。
ウェルノウンポートに割り振られるプロトコル(サービス)は試験範囲では本当に一般的なものが多いのでここでは割愛。
普段からシステム開発や運用をやっていれば特に困らないはず。
参考:Linux - インターネットプロトコルの基礎
なお、ポートとサービスの関連付けについては「/etc/services」に記述されている。
以下は私の環境の一部抜粋。
[wantan@localhost ~]$ head -50 /etc/services | tail -10 ftp-data 20/tcp ftp-data 20/udp # 21 is registered to ftp, but also used by fsp ftp 21/tcp ftp 21/udp fsp fspd ssh 22/tcp # The Secure Shell (SSH) Protocol ssh 22/udp # The Secure Shell (SSH) Protocol telnet 23/tcp telnet 23/udp # 24 - private mail system
ネットワークの基本設定ファイル
ここではLinuxシステムにおいて、ネットワーク設定を行う基本的なファイルを確認します。
/etc/hostname
「/etc/hostname」ファイルはその名の通りホスト名を設定するファイルです。
Debian系や新しめのREHL系のディストリビューションで採用されているようで、一部のディストリビューションでは存在しない可能性があります。
[root@localhost etc]# cat /etc/hostname localhost.localdomain
ホスト名の確認、変更を行うには「hostname」コマンドが存在しますが、こちらは一時的な変更を行うものです。
なので、設定ファイルはコマンドによって変更されません。
[root@localhost etc]# hostname testserver [root@localhost etc]# hostname testserver [root@localhost etc]# cat /etc/hostname localhost.localdomain
恒久的に変更を行いたい場合には、「hostnamectl」コマンドを使用します。
こちらの場合にはコマンドの実行により、設定ファイルにも反映されます。
[root@localhost etc]# hostnamectl set-hostname server.test [root@localhost etc]# cat /etc/hostname server.test
恒久的な変更を行う場合には、設定ファイルを直接編集してもよいみたいです。
/etc/sysconfig/network
/etc/sysconfig/networkはネットワーク機能や、デフォルトゲートウェイを指定する設定ファイルです。
・ファイルの設定例
適当に書いたので動かすことは想定していません。
# Created by anaconda NETWORKING=yes HOSTNAME=host1.domain.name DOMAINNAME=domain.name GATEWAY=192.168.1.1
/etc/hosts
有名な(?)hostsファイル。
IPアドレスとホスト名を紐づける。
書式は以下の通り。
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4 192.168.1.1 test-server
/etc/nsswitch.conf
ネットワークデータベースの検索順序を定める設定ファイル。
試験的には主に名前解決の順序を設定するファイルとして登場することが多いみたいです。
・ファイル例の抜粋
hosts: files dns
dnsはそのまま設定されているDNSサーバ、fileはhostsファイルを指しています。
/etc/resolv.conf
/etc/resolv.confはレゾルバの設定ファイルで、試験的にはDNSサーバの設定ファイルと考えてほぼ違いないでしょう。
主要な設定項目は以下の通りです。
[root@server wantan]# cat /etc/resolv.conf # Generated by NetworkManager search localdomain test nameserver 192.168.142.2 domain wantan.server
「search」は名前解決の際に省略するドメイン名のリスト、「domain」はサーバ自身の所属ドメイン、「nameserver」は名前解決を行うDNSサーバを指定します。
とにもかくにも、DNSサーバの設定を必須で押さえておけば試験的には問題ない気もします。
実践では間違えることはない気がしますが、試験的にはNTPの設定では「server」なのに対してDNSでは「nameserver」になります。
※私が問題演習をやっているときに勘違いした
NetworkManager
NetworkManagerは動的にネットワークを管理する仕組みのことです。
RHEL系ディストリビューションでは、initスクリプトによる設定の代わりとしても導入されているようです。
このNetworkManagerをコマンドラインで操作するコマンドとしてnmcliが存在します。
試験範囲の対象だけでもサブコマンドなどが比較的多く存在するので、実際にあまり使ったことがない場合にそのまま覚えるとなると難所の一つになりそうな気がします。
nmcliコマンドは次の書式となります。
nmcli [オブジェクト] [サブコマンド]
以下、オブジェクトごとにみていきます。
general オブジェクト
generalオブジェクトはNetworkManager全体の管理・参照を行います。
オブジェクトの指定は「g」で省略可能。
サブコマンド | 内容 |
---|---|
status | NetworkManagerの状態を表示する |
hostname | ホスト名の表示変更 |
このコマンドでのホスト名変更は「hostnamectl」と同様に設定ファイルまで変更が反映されるようです。
・NetworkManagerの状態を表示する
[root@server wantan]# nmcli general status STATE CONNECTIVITY WIFI-HW WIFI WWAN-HW WWAN 接続済み 完全 有効 有効 有効 有効
networking オブジェクト
networkingオブジェクトはネットワーク全体の状態を表示、設定するオブジェクトです。
オブジェクトの指定は「n」で省略可能。
サブコマンド | 内容 |
---|---|
on | ネットワークを有効にする |
off | ネットワークを無効にする |
connectivity | ネットワーク状態を表示する |
・ネットワークの状態を表示する
[root@server1 wantan]# nmcli networking connectivity full
ネットワーク状態を表す表示また少し覚えにくく注意が必要です。
full:インターネットにアクセス可能なネットワークに接続している
portal:インターネットにアクセス前の状態
※認証が必要な場合の認証前など
limited:インターネットできないネットワークに接続している
none:ネットワークに接続していない
unknown:接続状態が見つからない
・ネットワークを無効にする
ネットワークは無効にすると、sshなどでサーバに接続して使用していると通信が切れてしまうので検証には少し注意が必要です。
[root@server1 wantan]# nmcli networking off [root@server1 wantan]# nmcli networking connectivity none
radioオブジェクト
radioオブジェクトは主にwifiの管理を行うオブジェクトです。
オブジェクトの指定は「r」で省略可能。
※正確には無線スイッチの管理を行うコマンドのようです
サブコマンド | 内容 |
---|---|
wifi | wifiの状態を表示 |
wifi on | wifi接続を有効化する |
wifi off | wifi接続を無効化する |
・wifi接続の状態を表示する
[root@server1 wantan]# nmcli radio wifi enabled
・wifi接続を無効化する
[root@server1 wantan]# nmcli radio wifi off [root@server1 wantan]# nmcli radio wifi disabled
connection オブジェクト
connection オブジェクトはNetworkManagerの接続状況を管理します。
オブジェクトの指定は「c」で省略可能。
サブコマンド | 内容 |
---|---|
show | 接続状態の表示 |
modify | 指定した接続IDのパラメータを変更する |
up | 接続の有効化 |
down | 接続の無効化 |
・接続状態の表示
[root@server1 wantan]# nmcli connection show NAME UUID TYPE DEVICE ens33 23208ca5-7cd4-438b-bb68-782a5f57883a ethernet ens33
・特定インタフェースの接続を切る
こちらもsshなどで接続して操作している場合には、インタフェースの指定によっては接続がきれます。
[root@server1 wantan]# nmcli connection down ens33
・IPアドレスの変更
試験の参考までにということで、ほんとに変更したい場合にはすいませんが他で調べ直した方がいいかもしれません。
設定を反映させるためには設定後にconnection upが必要とのこと。
[root@server1 wantan]# nmcli connection modify ens33 ipv4.addresses 192.168.1.1/24
device オブジェクト
device オブジェクトはNetworkManagerにおけるデバイスの管理をします。
オブジェクトの指定は「d」で省略可能。
サブコマンド | 内容 |
---|---|
status | デバイスの状態表示 |
show | 指定デバイスの情報を表示 |
modify | 指定デバイスのパラメータを変更 |
connect | 指定デバイスに接続 |
disconnect | 指定デバイスを切断 |
delete | 指定デバイスを削除 |
monitor | 指定デバイスをモニタリング |
wifi list | wifiのアクセスポイントを表示 |
wifi connect | wifiのアクセスポイント(SSID)に接続 |
wifi rescan | wifiのアクセスポイントを再検索 |
・デバイスの状態を表示
[root@server1 wantan]# nmcli device status DEVICE TYPE STATE CONNECTION ens33 ethernet 接続済み ens33 lo loopback 管理無し --
・特定デバイスの詳細情報を表示する
[root@server1 wantan]# nmcli device show ens33 GENERAL.DEVICE: ens33 GENERAL.TYPE: ethernet GENERAL.HWADDR: 00:0C:29:24:A6:01 GENERAL.MTU: 1500 GENERAL.STATE: 100 (接続済み) GENERAL.CONNECTION: ens33 GENERAL.CON-PATH: /org/freedesktop/NetworkManager/ActiveCo WIRED-PROPERTIES.CARRIER: オン IP4.ADDRESS[1]: 192.168.1.2/24 IP4.ADDRESS[2]: 192.168.142.11/24 IP4.GATEWAY: 192.168.142.2 *****省略*****
・デバイスのモニタリングを行う
いまいちちゃんとした使い方がわからんー。
[root@server1 wantan]# nmcli device monitor ens33
・前回(第十一回)
www.wantanblog.com
・次回(第十三回)
www.wantanblog.com