目次
システム管理者は、システムがネットワークを正常に利用できるよう管理しなければなりません。もし、ネットワーク上にトラブルが発生した場合、発生した問題によって調査項目は多少変わってきますが、問題解決にあたりネットワーク設定を見直しやネットワークインターフェースの動作チェック、疎通確認や名前解決等、設定した内容通りに動作しているかを確認していくことで、問題点を洗い出していきます。
IPアドレスを確認(ip addr show)
LinuxシステムのIPアドレスを確認するにはip addrコマンドを使用します。
書式:
ip a[ddr] s[how] [[dev] デバイス名] |
ipコマンドは、オブジェクト部分のスペルを省略することができます。例えば、「ip addr show」というコマンドは、「ip a s」と省略して実行することができます。
デバイス名を省略すると、認識しているすべてのネットワークインターフェース情報が表示されます。
<実習: IPコマンドの実行>
ネットワークに関連する設定はシステムに関わるため、rootで実行します。
「ip addr show」 でも、 「ip a s」 でも実行できることを確認してみましょう。
# ip addr show
# ip a s
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
:
ip addrをパラメータ無しで実行すると、そのシステムに設定されている全てのインターフェース情報が表示されます。なお、[addr]は[a]と省略して、ip aで実行することができます。先程、VirtualBoxで「アダプター2」というネットワークインターフェースを追加しています。正常に追加されていれば「enp0s8」というインターフェースが表示されます。
インターフェース情報の見方
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 08:00:27:f5:a3:bb brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global noprefixroute dynamic enp0s3
valid_lft 85793sec preferred_lft 85793sec
inet6 fe80::bd92:98e3:c64c:edf3/64 scope link noprefixroute
valid_lft forever preferred_lft forever
上記コマンドの内容表示を元に各要素を説明します。
項目 | 説明 |
---|---|
enp0s3 | インターフェース名:en(ethernet)+p0(バス番号)+s3(スロット番号) |
BROADCAST | ブロードキャストに対応していると表示されます |
MULTICAST | マルチキャストに対応していると表示されます |
UP | NICが有効であることを示します |
LOWER_UP | デバイスがネットワークに接続されていることを示します |
mtu 1500 | MTU(Maximum Transfer Unit)サイズが1500、単位はバイト |
qdisc pfifo_fast | キューイング規則(送信パケットの処理方法)がpfifo_fast |
state UP | 状態が「稼働中」であることを示します |
group default | グループインターフェイス |
qlen 1000 | キューの長さが1000 |
link/ether | MACアドレス |
inet | ホストのipv4のIPアドレス |
inet6 | ホストのipv6のIPアドレス |
brd | ブロードキャストIPアドレス |
scope | global : パケット送信先がグローバル link : パケット送信先がローカルネットワーク内 host : パケット送信先は自分自身のみ |
valid_lft | 有効なアドレスの有効期限 |
preferred_lft | 適切なアドレスの有効期限 |
ゲートウェイ
IPネットワークで通信を行うには、IPアドレスが必要ですが、IPアドレスにはスコープと呼ばれる範囲があり、同じ範囲に属するIPアドレス同士だけが通信を行うことができます。そのため、スコープ範囲毎にネットワークが構成され、その範囲内で通信が行われます。
では、異なるスコープ範囲のIPアドレスを持つ機器と通信する場合はどうしたらよいでしょうか。異なるネットワーク同士を接続したい場合は、「ルーティング」という機能を持った機器を間に設置します。「ルーティング」とは、データの宛先によって適切な場所へ配送するための処理を行う機能の事で、この処理を行う機器の事を「ルータ(Router)」と呼びます。
つまり、別のネットワークに存在する機器と通信を行いたい場合は、この「Router」を通してアクセスすればよいのです。
Routerは、2つ以上の異なるネットワーク同士を接続するためのネットワーク機器です。
接続するネットワークそれぞれに対して、接続するためのインターフェースを持っています。つまり、RouterABなら、ネットワークAにつながるためのインターフェースと、ネットワークBにつながるためのインターフェースを持っています。したがって、IPアドレスも2つ持っています。ネットワークAで通信するためのIPアドレスと、ネットワークBで通信するためのIPアドレスです。これにより、2つのネットワーク間でデータを転送することができるのです。
これがRouterの1つ目の役割です。Router自身が接続しているネットワーク同士のデータを相互に転送し、通信ができるようにします。
Routerには、もう一つ役割があります。上記の図では、Router ABはネットワークAとネットワークBに隣接していますから、ネットワークA宛、B宛の通信は転送できます。しかし、中にはネットワークAからネットワークC宛、D宛、E宛などの通信もやってくることもあります。この時、RouterABは、ネットワークAとBしか隣接していないので、C~Eへのデータ転送はできません。RouterAB自身が接続していないネットワークですから「知らない」といった方が正しいです。
このように隣接していないネットワーク宛のデータが転送されてきた場合は、どうしたらよいでしょうか。このような場合は、他の「知っていそうなRouterに転送する」という機能を使います。
では、実際にRouterABにネットワークC宛のデータが流れてきたら、どうすればよいかを考えてみましょう。
ネットワークCと隣接しているルータはRouterAC、RouterBC、RouterCDの3つです。この3つのRouterのどれかに転送してあげればよいとわかります。では、どれに転送すればよいでしょうか。
3つのうち、明らかに1つは候補から外れます。RouterCDです。理由は、RouterABがRouterCDと通信できないためです。RouterABは、ネットワークAを通ってRouterACと通信するか、ネットワークBを通ってRouterBCと通信することができますが、共通のネットワークを持たないRouterCDが見えないのです。
これで残りは2択ですが、どちらがよいでしょうか。
これは、どちらでも構いません。ネットワークCに転送するために、ネットワークAを通ってRouterACに転送しても、ネットワークBを通ってRouterBCに転送しても、ネットワークCに辿り着くことができるためです。実際のネットワークでは、伝送速度や実際の距離、セキュリティ面などを考慮して決めますが、いずれにしても予めどちらに転送するかを決めておきます。
ルータにはルータ自身が所属していない他のネットワークへ転送することができるように予め決めておく通信経路のリストを作成することが可能で、この情報のことを「経路情報」と呼びます。
経路情報には、宛先と転送先がセットで設定されます。上記、図のように、RouterABには「C→RT-BC」とあるため、RouteAB宛にネットワークC宛のパケットが届いたとしても、RouterBCに転送することができるわけです。
このように、予め決めておく経路情報のことを静的経路(スタティック・ルーティング)と呼び、特殊な技術で都度、最適なルートを設定する経路のことを動的経路(ダイナミック・ルーティング)と呼びます。
また、それぞれのネットワーク上に存在するパソコンなどの機器から見ると、Routerは他のネットワークと通信するための出入り口のように見えます。そのため、Routerのことを「ゲートウェイ」と呼ぶこともあります。Routerからみた他のRouteについても同じです。
例えば、ネットワークAにある端末から見ると、RouterAB、RouterAC、RouterAE及び、インターネットに接続しているMainRouterの4つが他のネットワークのゲートウェイが存在する、ということです。
経路情報は、ルータに限らず、パソコンなどの端末にも設定されています。通信するネットワークが少なければ、静的経路を設定できますが、指定すべき宛先が多いと設定しきれません。このような場合はどうしたらよいでしょうか。
例えば、インターネット。インターネットは、様々なネットワークの寄せ集めです。何通りあるかを把握することもできませんから、設定することもできません。
このような場合は、「デフォルトゲートウェイ」という経路を設定します。デフォルトゲートウェイは、先程のような手動で指定した経路情報に当てはまらない宛先を意味する経路で、インターネットのような、宛先が多すぎて指定できない場合に使用する経路です。デフォルトゲートウェイは特殊な場合を除き1つの機器に1つしか設定できません。
上記の例では、ネットワークAに存在する端末は、RouterAB、RouterAC、RouterAE、MainRouterの4つのゲートウェイ候補がありますが、MainRouterをデフォルトゲートウェイとして設定しています。
この場合、他ネットワーク宛への通信方法は2種類あります。
1つは、ネットワークAの端末自体に、他のRouterと同じような各ネットワーク宛の静的経路を設定する方法、もう一つは、MainRouter自体に、他のネットワーク宛の静的経路を設定する方法です。
どちらも問題なく通信できるようになりますが、前者の場合はネットワークやRouterが増えるたびに、ネットワークA上のすべての端末の経路情報を変更しなければなりませんので、一般的には後者の方法が採用されます。
ゲートウェイの確認(ip route show)
ゲートウェイの確認もipコマンドを使って行います。経路情報に関する設定を操作するには、route オブジェクトを使います。なお、route オブジェクトは、addrオブジェクトと同様に[r]に省略できます。
書式:
ip r[oute] [s[how] [via ゲートウェイ]] |
<実習: IPコマンドの実行>
ネットワークに関連する設定はシステムに関わるため、rootで実行します。
ムに関わるため、rootで実行します。
「ip addr show」の時と同様に、「ip route show」 でも「ip r s」 でも実行できることを確認してみましょう。
# ip route show
default via 10.0.2.2 dev enp0s3 proto dhcp metric 100
10.0.2.0/24 dev enp0s3 proto kernel scope link src 10.0.2.15 metric 100
ip routeをパラメータ無しで実行すると、そのシステムに設定されている全ての経路情報が表示されます。viaを使ってゲートウェイを指定する場合は、そのゲートウェイが持つ経路情報が表示されます。
上記の表示では2つの経路が設定されており、下の行の「10.0.2.0/24」はシステムが所属しているネットワーク宛の経路、つまり同じネットワーク同士で通信するための経路です。上の行が、他ネットワーク宛の経路で、「デフォルトゲートウェイ」です。宛先が「10.0.2.2」であることがわかります。
ちなみに、IPアドレスがDHCPによる自動取得の場合、デフォルトゲートウェイ等の経路情報も一緒に取得することができます。