6. ネットワーク管理
6.1. ネットワークの設定
6.1.1. ネットワークデバイス
Linuxではネットワークデバイスを以下のような名称で扱う。
またネットワークインターフェースの確認にはifconfig
コマンドで行える。
インターフェイス | 説明 |
---|---|
eth0 | 1番目のEthernetインターフェイス |
eth1 | 2番目のEtrernetインターフェイス |
ppp0 | 1番目のPPPインターフェイス |
lo | ループバックインターフェイス |
またネットワークインターフェースの命名規則は以下の通り。
種別 | 説明 |
---|---|
en | イーサネット |
wl | 無線LAN |
ww | 無線WAN |
ifconfigコマンド
ネットワークインターフェースの設定/確認が行えるコマンド。
6.1.2. ARP
EthernetではIPアドレスではなくMACアドレスで通信を行う。そのためIPアドレスをMACアドレスに変換する仕組みであるARPを用いる。 取得したARP情報はARPキャッシュと呼ばれるテーブルに一定時間キャッシュされる。
ARPキャッシュテーブルの表示にはarp
コマンドで可能。
オプション | 説明 |
---|---|
-a [ホスト] | 指定したホストすべてのエントリを表示する |
-f ファイル名 | ホスト名とMACアドレスの対応ファイルを読み込む |
-n | ホスト名をIPアドレスを表示 |
-d ホスト | 指定したホストのエントリを削除 |
-i インターフェース | ネットワークインターフェースの指定 |
-s ホスト MACアドレス | ホスト名とMACアドレスの対応を書き込む |
6.1.3. インターフェースの冗長化技術
ボンディング
ボンディングは複数のネットワークインタフェースを1つに束ねる技術のこと。 ボンディングによって帯域幅を増やしたり、1つのNICに障害が発生しても他のNICで運用できるようにインタフェースを冗長化できる。 なおLinuxカーネルにはbondingモジュールが標準で実装されている。
ボンディングではネットワークインタフェースを以下のように分類する。
- マスターインタフェース ... bondingで束ねられた仮想インタフェース
- スレーブインタフェース ... bondingを構成する個々の物理インタフェース
- アクティブインタフェース ... bonding構成の中で実際にパケットの送受信を行うインタフェース
ボンディングの設定例
ボンディングは以下のような設定を2つのマシンに設定する
- マスターインタフェースの追加
nmcli connection add type bond ifname bond0 con-name bond0 mode balance-rr
- スレーブインタフェースの追加
nmcli connection add type bond-slave ifname eth0 con-name bond-slave-eth0 master bond0
nmcli connection add type bond-slave ifname eth1 con-name bond-slave-eth1 master bond0
- マスターインタフェースにIPアドレスを設定
nmcli connection modify bond0 ipv4.method manual ipv4.addresses 192.168.1.1/24
なおmodeオプションでbondingポリシーを設定できる。
ポリシー | 説明 |
---|---|
balance-rr | ラウンドロビンによる送信負荷分散 |
active-backup | 1つのスレーブインターフェースのみがアクティブでもう一つは障害時に切り替え |
balance-xor | 宛先MACに基づいたハッシュによる送信の負荷分散 |
802.3ad | LACPによるリンクアグリゲーション |
balance-tlb | スレーブインターフェースの負荷に応じた送信負荷分散 |
balance-alb | スレーブインターフェースの負荷に応じた送受信負荷分散 |
6.1.4. ネットワーク管理コマンド
Linuxにおけるネットワーク設定/トラブルシューティングに使うコマンドをいくつか記載する。
pingコマンド
指定したホストにICMPパケットを送った際の反応を確認できる。
なおIPv6の場合はping6
コマンドを使う。
オプション | 説明 |
---|---|
-n | ホスト名を指定せずにIPアドレスを表示する |
-c 回数 | 指定した回数のみICMPパケットを送信する |
-i 間隔 | 指定した間隔ごとにICMPパケットを送信する |
-s サイズ | 指定したパケットデータのサイズで送信する |
tracerouteコマンド
指定したホストまでパケットが伝わる経路を表示するコマンド。 ネットワークの途中経路に障害がある場合、障害個所を特定できるコマンドといえる。
なお注意事項としてネットワーク経路上にICMPパケットを返信しないホストが存在する場合は適切な動作は期待できない。
なおIPv6の場合はtraceroute6
コマンドを使う。
オプション | 説明 |
---|---|
-i インターフェース | ネットワークインターフェースを指定する |
-n | ホスト名をIPアドレスで表示する |
mtrコマンド
pingやtracerouteなどのようにICMP等を使って通信の可・不可や経路などを確認することができるコマンド。
tcpdumpコマンド
指定したネットワークインターフェースを監視し、そこに到達したデータをコンソールに表示するコマンド。 用途としては以下の通り。
- 不審な挙動をしているプログラムのデータの送信先の調査など
オプション | 説明 |
---|---|
-i インターフェース | 監視するインターフェース指定する |
-s バイト数 | パケットから取り出すバイト数の指定 |
-X | 16進数とASCII文字で表示 |
-n | 名前解決せずに表示する(IPアドレスで表示) |
-N | ホストのドメイン名を表示しない |
-l | 標準出力のバッファリング |
-t | 時刻表示しない |
-v | 詳細に出力 |
条件式 | 説明 |
---|---|
port | ポート番号の指定 |
tcp | udp |
src | 指定した送信元からのパケットを対象 |
dst | 指定した送信元へのパケットを対象 |
使用例は以下の通り。
netstatコマンド
ネットワーク機能に関する様々な内容を表示するコマンド。 引数なしで実行すると、Active接続とActiveなUnixドメインソケット情報(ローカルホストのプロセス間通信)を表示する。
オプション | 説明 |
---|---|
-a | すべてのソケットを表示 |
-c | 状況を1秒ごとにリアルタイムで定期的に表示する |
-i | ネットワークインターフェースの統計を表示 |
-l | 接続待ち状態にあるソケットのみ表示する |
-n | アドレスやポートを数値で表示 |
-p | PIDとプロセスの表示 |
-r | カーネルのルーティングテーブルの表示 |
-t | TCPを表示 |
-u | UDPを表示 |
ssコマンド
netstat互換のコマンド。機能はnetstat
コマンドとほぼ同じ。
オプション | 説明 |
---|---|
-a | すべてのソケットを表示 |
-n | アドレスやポートを数値で表示 |
-p | PIDとプロセスの表示 |
-r | ホスト名の解決 |
-t | TCPの表示 |
-u | UDPの表示 |
-4 | IPv4のみを表示 |
-6 | IPv6のみを表示 |
ncコマンド
ncコマンドはTCP/UDPを使ったネットワークの通信を行うコマンド。 ポートスキャンや通信状態の確認が可能。
なおオプション-vz
を指定することでポータ範囲の指定とポートスキャンが可能。
なおudpの場合はu
を追加する。
ipコマンド
ネットワークインターフェース、ルーティングテーブル、ARPテーブルの管理ができるコマンド。 ipconfig, route, arpコマンドの統合した操作が可能。
オプション | 説明 |
---|---|
-s | ステータスの表示 |
-r | 名前解決して表示 |
-f inet/inet6 | プロトコルファミリの指定 |
操作対象 | 説明 |
---|---|
link | データリンク層 |
addr | IPアドレス |
route | ルーティングテーブル |
neigh | ARPキャッシュ |
コマンド | 説明 |
---|---|
show | 指定した対象の情報表示 |
add | 指定した対象にパラメータ指定 |
del | 指定した対象のパラメータ削除 |
使用例は以下の通り。
# IPアドレスの設定
ip addr add 192.168.11.1/24 dev eth0
# GWをルーティングテーブルに追加
ip route add 10.0.0.1/16 via 192.168.11.254
# DGWの設定
ip route add default via 192.168.11.100
6.1.5. ルーティングの設定
Linuxにおいてルーティングテーブルの操作行う場合はroute
コマンドを使用する。
引数なしで実行するとルーティングテーブルが表示される。
routeコマンド
オプション | 説明 |
---|---|
-n | ホスト名の解決をしない |
-F | カーネルのルーティングテーブルを表示する |
-C | カーネルのルーティングキャッシュを表示する |
route
コマンドを引数なしで実行すると以下のようにパラメータが表示される。
Destination # 宛先ネットワーク/ホスト
Gateway # ゲートウェイアドレス
Genmask # 宛先ネットマスク
Flags # 経路情報(U:経路が有効 H:宛先はホスト G:ゲートウェイを使用 !:経路は無効)
Metric # 宛先までの距離
Ref # ルートの参照数
Use # 経路の参照回数
Iface # この経路を使うネットワークインターフェース
6.1.6. 無線ネットワークの設定
無線LANの主な規格は以下のようなものがある。
規格 | 周波数帯域幅 | 伝送速度 |
---|---|---|
IEEE802.11a | 5.2GHz | 54Mbps |
IEEE802.11b | 2.4GHz | 11Mbps |
IEEE802.11g | 2.4GHz | 54Mbps |
IEEE802.11n | 2.4GHz/5GHz | 600Mbps |
IEEE802.11ac | 5GHz | 433Mbps~7Gbps |
なお無線LANのセキュリティ方式にはWEPとWPAがある。
- WEP ... RC4アルゴリズムで通信を暗号化する(脆弱性あり)
- WPA ... TKIPやAESなどの暗号方式やIEEE802.1x認証などから構成される、AESの方がセキュリティ強度が高い
iwconfigコマンド
WLANの設定や状態を確認するコマンド。
なおWPA/WPA2の場合は、Wpa_passphrase
コマンドで設定ファイルを作成する。
作成した上記ファイルは/etc/wpa_supplicant
以下に保存する。
接続はwpa_supplicant
コマンドで行う。
iwコマンド
無線インターフェースの情報を参照/設定することができるコマンド。
devのコマンド | 説明 |
---|---|
link | 接続状況の表示 |
scan | 接続可能なAPをスキャン |
connect | disconnect |
phyのコマンド | 説明 |
---|---|
interface add | del |
info | 暗号化や周波数の使用可能状況の表示 |
iwlistコマンド
無線インターフェースの情報を取得できるコマンド。
パラメータ | 説明 |
---|---|
scanning | scan [essid ID] |
channel | 設定可能なチャネルを表示 |
rate | 伝送速度の表示 |
6.2. 高度なネットワークの設定/トラブルシューティング
6.2.1. ネットワーク関連のファイル
Linuxのネットワーク関連の設定ファイルに関して記載する。
/etc/hostname
ホスト名を記載する設定ファイル。
/etc/hosts
ホスト名とIPアドレスの対応表を記述するファイル。 記述方法は以下の通り。
/etc/networks
ネットワーク名とネットワークアドレスの対応表を記述するファイル。 デフォルトでは未記載。
/etc/nsswitch.conf
名前解決の問い合わせ順序を記述するファイル。 名前解決の手段は以下の通り。
- /etc/hostsファイルの使用
- DNSサーバの使用
- LDAPサーバの使用
/etc/resolve.conf
問い合わせ先のDNSサーバやドメイン名の設定を記述するファイル。
/etc/sysconfig/network
ネットワーク機能の使用/不使用、ホスト名、デフォルトゲートウェイなどの設定を記述する。 原則RHELL系で使用される。
なおRHEL7/CentOS7系以降ではnmcliコマンドでの設定が推奨されている。 またIPv6はNETWORKING_IPV6で有効化できる。
/etc/sysconfig/network-scripts/
ネットワークデバイスの設定ファイルが設置されるディレクトリ。
/etc/network/interfaces
Debian系で使用されるネットワークデバイスの設定ファイルが設置されるディレクトリ。
6.2.2. NetworkManager
Linuxでネットワークを動的管理する仕組み。
設定ファイルを書き換えてもこのサービスにより書き換えられる可能性があるため、設定する際は無効化するかnmci
コマンドで設定するといった方法が挙げられる。
6.2.3. TCPラッパ
ネットワークサービスに対するアクセス制御を行うプログラム。 デーモン名はtcpd、使用するライブラリはlibwrapとなる。
TCPラッパーには/etc/hosts.allow
、/etc/hosts.deny
という2つの主要なファイルがある。
/etc/hosts.allow
ファイルでアクセス許可の設定を行い、/etc/hosts.deny
ファイルでアクセス拒否の設定を行う。
なお設定ファイルの変更後は再起動しなくても設定は反映される。
これらのファイルの書式は以下の通り。
具体的には以下のような形となる。
6.2.4. ネットワークのトラブルシューティング
ネットワークが正常につながらない場合
確認事項は以下の通り。
ping
による疎通確認- DNSサーバの稼働状況/
/etc/resolv.conf
の確認 route
によるルートテーブルの確認
上記でうまくいかない場合はtraceroute
やmtr
による経路確認も行う。
パケット転送許可
Linux OSをルータとして機能させる場合はカーネルパラメータのnet.ipv4.ip_forward
を1にすることでパケット転送を有効化できる。
IPv4の場合は以下で可能。
6.2.5. その他のネットワークのコマンド
nslookupコマンド
DNSでホスト名とIPアドレスを変換するコマンド。
digコマンド
nslookup
より詳細に行う。
hostnameコマンド
自身のホストに関する詳細を調べられるコマンド。
オプション | 説明 |
---|---|
なし | ホスト名を表示 |
-d | DNSドメイン名の表示 |
-i | IPアドレスを表示 |
-f | FDQNを表示(完全修飾ドメイン名を表示) |
-a | エイリアスを表示 |
nmapコマンド
詳細が不明なネットワークの構造を調査したり、セキュリティ上の問題がないかを検査する目的で、ネットワークのスキャンを行うことができるコマンド。
スキャンタイプ | 説明 |
---|---|
-sT | TCPスキャン |
-sU | UDPスキャン |
-sP | Pingスキャン |
オプション | 説明 |
---|---|
-p | 対象ポート範囲の指定 |
-F | 有名ポートを対象に高速スキャン |
-O | 対象ホストのOS識別を行う |