6.1. ネットワークの設定
6.1.1. ネットワークデバイス
Linuxではネットワークデバイスを以下のような名称で扱う。
またネットワークインターフェースの確認にはifconfigコマンドで行える。
| インターフェイス | 説明 | 
|---|---|
| eth0 | 1番目のEthernetインターフェイス | 
| eth1 | 2番目のEtrernetインターフェイス | 
| ppp0 | 1番目のPPPインターフェイス | 
| lo | ループバックインターフェイス | 
またネットワークインターフェースの命名規則は以下の通り。
| 種別 | 説明 | 
|---|---|
| en | イーサネット | 
| wl | 無線LAN | 
| ww | 無線WAN | 
ifconfigコマンド
ネットワークインターフェースの設定/確認が行えるコマンド。
ipconfig
ipconfig [インターフェース] [IPv4アドレス] netmask [サブネットマスク]
ipconfig [インターフェース] [ up | down ]6.1.2. ARP
EthernetではIPアドレスではなくMACアドレスで通信を行う。そのためIPアドレスをMACアドレスに変換する仕組みであるARPを用いる。
取得した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コマンドを使う。
ping [ホスト名] [IPアドレス]| オプション | 説明 | 
|---|---|
| -n | ホスト名を指定せずにIPアドレスを表示する | 
| -c 回数 | 指定した回数のみICMPパケットを送信する | 
| -i 間隔 | 指定した間隔ごとにICMPパケットを送信する | 
| -s サイズ | 指定したパケットデータのサイズで送信する | 
tracerouteコマンド
指定したホストまでパケットが伝わる経路を表示するコマンド。
ネットワークの途中経路に障害がある場合、障害個所を特定できるコマンドといえる。
なお注意事項としてネットワーク経路上にICMPパケットを返信しないホストが存在する場合は適切な動作は期待できない。
なおIPv6の場合はtraceroute6コマンドを使う。
traceroute [ ホスト名 | ドメイン名 | IPアドレス ]| オプション | 説明 | 
|---|---|
| -i インターフェース | ネットワークインターフェースを指定する | 
| -n | ホスト名をIPアドレスで表示する | 
mtrコマンド
pingやtracerouteなどのようにICMP等を使って通信の可・不可や経路などを確認することができるコマンド。
mtr -r [IPアドレス | ドメイン名]tcpdumpコマンド
指定したネットワークインターフェースを監視し、そこに到達したデータをコンソールに表示するコマンド。
用途としては以下の通り。
- 不審な挙動をしているプログラムのデータの送信先の調査など
tcpdump [オプション] [条件式]| オプション | 説明 | 
|---|---|
| -i インターフェース | 監視するインターフェース指定する | 
| -s バイト数 | パケットから取り出すバイト数の指定 | 
| -X | 16進数とASCII文字で表示 | 
| -n | 名前解決せずに表示する(IPアドレスで表示) | 
| -N | ホストのドメイン名を表示しない | 
| -l | 標準出力のバッファリング | 
| -t | 時刻表示しない | 
| -v | 詳細に出力 | 
| 条件式 | 説明 | 
|---|---|
| port | ポート番号の指定 | 
| tcp | udp | 
| src | 指定した送信元からのパケットを対象 | 
| dst | 指定した送信元へのパケットを対象 | 
使用例は以下の通り。
# eth0の53ポートの通信を表示
tcpdump -nil eth0 port 53netstatコマンド
ネットワーク機能に関する様々な内容を表示するコマンド。
引数なしで実行すると、Active接続とActiveなUnixドメインソケット情報(ローカルホストのプロセス間通信)を表示する。
netstat [オプション]| オプション | 説明 | 
|---|---|
| -a | すべてのソケットを表示 | 
| -c | 状況を1秒ごとにリアルタイムで定期的に表示する | 
| -i | ネットワークインターフェースの統計を表示 | 
| -l | 接続待ち状態にあるソケットのみ表示する | 
| -n | アドレスやポートを数値で表示 | 
| -p | PIDとプロセスの表示 | 
| -r | カーネルのルーティングテーブルの表示 | 
| -t | TCPを表示 | 
| -u | UDPを表示 | 
ssコマンド
netstat互換のコマンド。機能はnetstatコマンドとほぼ同じ。
ss [オプション]| オプション | 説明 | 
|---|---|
| -a | すべてのソケットを表示 | 
| -n | アドレスやポートを数値で表示 | 
| -p | PIDとプロセスの表示 | 
| -r | ホスト名の解決 | 
| -t | TCPの表示 | 
| -u | UDPの表示 | 
| -4 | IPv4のみを表示 | 
| -6 | IPv6のみを表示 | 
ncコマンド
ncコマンドはTCP/UDPを使ったネットワークの通信を行うコマンド。
ポートスキャンや通信状態の確認が可能。
nc [ ホスト名 | IPアドレス ] [ポート番号]なおオプション-vzを指定することでポータ範囲の指定とポートスキャンが可能。
なおudpの場合はuを追加する。
ipコマンド
ネットワークインターフェース、ルーティングテーブル、ARPテーブルの管理ができるコマンド。
ipconfig, route, arpコマンドの統合した操作が可能。
ip [オプション] [操作対象] [コマンド] [デバイス]| オプション | 説明 | 
|---|---|
| -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.1006.1.5. ルーティングの設定
Linuxにおいてルーティングテーブルの操作行う場合はrouteコマンドを使用する。
引数なしで実行するとルーティングテーブルが表示される。
routeコマンド
route [オプション]
route [add | del] [-host|-net] [ターゲット] [network ネットマスク] [gw ゲートウェイ] [[dev] デバイス]| オプション | 説明 | 
|---|---|
| -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の設定や状態を確認するコマンド。
iwconfig [wlanN] [essid ESSID] [key [s:]WEPキー]なおWPA/WPA2の場合は、Wpa_passphraseコマンドで設定ファイルを作成する。
wpa_passphrase windsor wlan_no_passphrase ] ファイル名.conf作成した上記ファイルは/etc/wpa_supplicant以下に保存する。
接続はwpa_supplicantコマンドで行う。
iwコマンド
無線インターフェースの情報を参照/設定することができるコマンド。
iw dev [デバイス名] [コマンド] # インターフェースに関する表示設定を行う
iw phy [デバイス名] [コマンド] # デバイスに関する表示設定を行う| devのコマンド | 説明 | 
|---|---|
| link | 接続状況の表示 | 
| scan | 接続可能なAPをスキャン | 
| connect | disconnect | 
| phyのコマンド | 説明 | 
|---|---|
| interface add | del | 
| info | 暗号化や周波数の使用可能状況の表示 | 
iwlistコマンド
無線インターフェースの情報を取得できるコマンド。
iwlist 無線インターフェース パラメータ| パラメータ | 説明 | 
|---|---|
| scanning | scan [essid ID] | 
| channel | 設定可能なチャネルを表示 | 
| rate | 伝送速度の表示 |