コンテンツにスキップ

6. ネットワーク管理

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つのマシンに設定する

  1. マスターインタフェースの追加
  2. nmcli connection add type bond ifname bond0 con-name bond0 mode balance-rr
  3. スレーブインタフェースの追加
  4. nmcli connection add type bond-slave ifname eth0 con-name bond-slave-eth0 master bond0
  5. nmcli connection add type bond-slave ifname eth1 con-name bond-slave-eth1 master bond0
  6. マスターインタフェースにIPアドレスを設定
  7. 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 53

netstatコマンド

ネットワーク機能に関する様々な内容を表示するコマンド。 引数なしで実行すると、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.100

6.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のセキュリティ方式にはWEPWPAがある。

  • 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 伝送速度の表示

6.2. 高度なネットワークの設定/トラブルシューティング

6.2.1. ネットワーク関連のファイル

Linuxのネットワーク関連の設定ファイルに関して記載する。

/etc/hostname

ホスト名を記載する設定ファイル。

/etc/hosts

ホスト名とIPアドレスの対応表を記述するファイル。 記述方法は以下の通り。

# 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ファイルでアクセス拒否の設定を行う。

なお設定ファイルの変更後は再起動しなくても設定は反映される。

これらのファイルの書式は以下の通り。

サービス名 : ホスト名|IPアドレス

具体的には以下のような形となる。

ALL : 192.168.10.0/255.255.255.0 : ALLOW
ALL : ALL : DENY

6.2.4. ネットワークのトラブルシューティング

ネットワークが正常につながらない場合

確認事項は以下の通り。

  1. pingによる疎通確認
  2. DNSサーバの稼働状況//etc/resolv.confの確認
  3. routeによるルートテーブルの確認

上記でうまくいかない場合はtraceroutemtrによる経路確認も行う。

パケット転送許可

Linux OSをルータとして機能させる場合はカーネルパラメータのnet.ipv4.ip_forwardを1にすることでパケット転送を有効化できる。 IPv4の場合は以下で可能。

sysctl -w net.ipv4.ip_forward=1

6.2.5. その他のネットワークのコマンド

nslookupコマンド

DNSでホスト名とIPアドレスを変換するコマンド。

nslookup

digコマンド

nslookupより詳細に行う。

hostnameコマンド

自身のホストに関する詳細を調べられるコマンド。

hostname [オプション]
オプション 説明
なし ホスト名を表示
-d DNSドメイン名の表示
-i IPアドレスを表示
-f FDQNを表示(完全修飾ドメイン名を表示)
-a エイリアスを表示

nmapコマンド

詳細が不明なネットワークの構造を調査したり、セキュリティ上の問題がないかを検査する目的で、ネットワークのスキャンを行うことができるコマンド。

nmap [スキャンタイプ] [オプション] 対象
スキャンタイプ 説明
-sT TCPスキャン
-sU UDPスキャン
-sP Pingスキャン
オプション 説明
-p 対象ポート範囲の指定
-F 有名ポートを対象に高速スキャン
-O 対象ホストのOS識別を行う