ルーティングとは?コマンド解説-ネットワークのセグメント間通信の仕組み
ネットワークエンジニアになって間もない方や、将来ネットワークSEになるためにネットワーク技術の勉強をしている人は「ルーティング」という仕組みを理解する段階で躓くことが多いかと思います。
最初はCCNAの勉強などを進めて、IPアドレスやMACアドレス、OSI参照モデル、VLANなどを勉強して、データリンク層までの用語や仕組みはある程度理解すると、次にネットワークの要となる技術の「ルーティング」の理解が必要となります。
ルーティングの仕組みや設定方法は本やサイトを読むだけでは理解しづらく、実際に設定を行うかコマンドや図など学習することでしっかり理解することができます。
OSI参照モデルの3層目、「ネットワーク層」ではネットワークSEの実際の作業や、トラブル時に関わりが深い箇所かつ実際のネットワークエンジニアの業務に大きく関係するポイントとなりますので重要となります。
可能であれば実際の機器でルーティングを行ってみるのが一番ですが、ルーターなどのネットワーク機器は高額ということに加えルーティングの検証を行うためには複数の機器が必要となるため、今回は実際の画面や通信の仕組み、実行するコマンド結果、ネットワーク構成図などを用いてルートの考え方、ルーティングについて解説していきます。
ルート、ルーティングとは?
ルーティングとは、異なるネットワークセグメントと通信行う際に、最適な経路を決めること、その経路を示した設定のことです。
例えば[192.168.1.1/24]というアドレスから[10.10.10.1/24]というアドレス通信を行う際は、ルーティングを行わないと通信ができません。
このとき、それぞれのネットワークセグメントのゲートウェイとなっているアドレスに対しルーティングの設定を行います。
ルーティングの設定を行えるネットワーク機器
ルーティングは主に「ルーター」とよばれるネットワーク機器が行う構成が多いですが、ルーティング自体は「FortiGate」などのUTM装置やL3(レイヤ3)スイッチ、アクセスポイントやパソコンなど様々な機器で行うことができます。
ルーティングの考え方
ルーティングは主に別のセグメントへ通信する際に行います。
クライアントPCからの視点で考えるとゲートウェイとして稼働しているルーターに通信を行い、その後のことはルーターに任せるという考え方です。
ルーターが宛先のセグメントのIPアドレスを持っていおり、そのIPを設定したポートのリンクが上がっている場合は、ルーターが経路を選択し接続先の機器へ転送を行います。 つまりルーティングの設定自体が必要となるのは、ルーターも宛先のセグメントがどこにあるか、接続先の機器情報で判断できない場合ということです。
どこに転送すれば宛先へ到達できるかを記載する設定が「ルーティング」という認識だと分かりやすいです。
例を出して説明すると、インターネット上のサイトにパソコンから通信を行う際、パソコンのIPが[10.10.10.1/24]ゲートウェイが[10.10.10.254]だった場合、インターネット上に存在するサーバーはグローバルIPであり、PCとセグメントは当然異なるため一旦ゲートウェイであるルーターに転送します。
その後ルーターはルーティングテーブルの中から宛先の一致する経路を探し、ネクストホップへと転送しますがインターネット上のIP(グローバルIP)が宛先の場合は[0.0.0.0/0]のルーティングが一致するため、ネクストホップとして設定している[2.2.2.1]へと転送します。 この繰り返しを行い目当てのサーバーへと到達します。
インターネット接続の際はNAT(プライベートIPをグローバルIPに変換する技術)の設定が必要となりますが、今回は解説・設定方法は割愛します。
スタティック(静的)ルーティング
上記で解説しているルーティングは「スタティックルーティング」と呼ばれるルーティングで「この宛先へ送信したい場合はここに転送する」と明示的に事前に設定しておく方法です。静的ルーティングとも言います。
LAN内での経路指定や1対1の拠点間VPNなどであれば、大体がスタティックルーティングを使用するかと思います。
LANのゲートウェイとなっているL3スイッチの上位に、ファイアウォール機器やVPN接続を行っている別のルーターなどがある場合にはL3スイッチにルーティングを設定します。
この場合デフォルトルートはファイアウォール機器に向けて設定し、VPN先の通信はWANルーターへ、といったような経路を設定します。
上図の構成図の場合だと「ルーターA」にインターネットに通信するためのデフォルトルート(R1)を設定し、閉域網側の拠点への通信のためのルーティング(R2,R3)を設定します。R2とR3のルーティングに合致する宛先[10.10.12.0/24と10.10.13.0/24]へ通信する際はルーティングのネクストホップに従って[172.17.1.3]のIPアドレスを持つ「ルーターB」へ転送を行います。
「ルーターB」には拠点への宛先は閉域網のルーターである[192.168.1.1]へ転送するスタティックルートを設定し、インターネット通信と[10.10.10.0/24と10.10.11.254]への通信は「ルーターA」へ転送するルーティングを行います。
拠点のルーターにはデフォルトルートを閉域網のルーターへのルーティングを設定すると、インターネット通信もファイアウォールを通ってインターネットへ抜ける構成となります。
今回の図では記載を省略していますが、ファイアウォール機器にもインターネットへの通信のためのルーティング[宛先0.0.0.0/0 ネクストホップ2.2.2.1]が必要となります。
Ciscoルーター、L3スイッチへのスタティックルート設定コマンド
Ciscoの機器でスタティックルートを設定する際は下記のコマンドを入力します。
# ip route [宛先NWアドレス] [サブネットマスク] [ネクストホップ]
宛先ネットワークアドレスには最終的に通信を行いたいネットワークの指定、サブネットマスクの入力も行います。
例えば[10.10.10.1 255.255.255.255]と設定したとすると、[10.10.10.1]に対する通信しかルーティングしないという設定になります。
ネクストホップは次にルーティングを行う機器の宛先を入力します。ネクストホップで指定したIPアドレスを持つ機器が次にその通信をルーティングする、という繰り返しで目的のネットワークへと到達します。
下記は、画像の「ルーターA」へルーティングを設定する際のコマンドです。
switch# configure terminal switch(config)# ip routing switch(config)# ip route 0.0.0.0 0.0.0.0 172.17.1.2 switch(config)# ip route 10.10.12.0 255.255.255.0 172.17.1.3 switch(config)# ip route 10.10.13.0 255.255.255.0 172.17.1.3 switch(config)# exit switch(config)# wr
[ip routing]を入力することでルーティング機能が有効となりますが、デフォルトでは有効となっているので、無効にしていない限りこのコマンドは不要となります。無効にする場合は[no ip routing]と入力します。
デフォルトルートは宛先[0.0.0.0]という記載方法で指定しますが、これはルーティングを機器が行う際にルーティングテーブルを全て確認し、宛先が一致しているルーティングを起用する(※ロンゲストマッチといいます)という仕組みのため成り立ちます。
[10.10.12.0/24]と[10.10.13.0/24]以外のネットワークへの通信は[0.0.0.0]に一致するためこのルートがデフォルトルートということにできます。
したがってこの3つのルーティングを設定した場合は、
- 宛先[10.10.12.0/24]への通信は[172.17.1.3]へ
- 宛先[10.10.13.0/24]への通信は[172.17.1.3]へ
- 上記以外が宛先の通信は[172.17.1.2]へ
とルーティングを行う設定になります。
NEC QX、HPE製L3スイッチのスタティックルート設定コマンド
ルーティングの設定コマンドは機器によっての違いはあまりなく、QXなどの機器もCiscoとほぼ同じです。
#ip route-static [宛先NWアドレス] [プレフィックス] [ネクストホップ]
Cisocとの違いは[route]が[route-static]となっている点と、ネットワーク範囲をサブネットマスクで指定していたの対し、プレフィックス長(/24など)で記載するという点です。
大きな違いはなく考え方も同じで[宛先][ネクストホップ]という順番で入力します。
#system-veiw #ip route-static 0.0.0.0 0 172.17.1.2 #ip route-static 10.10.12.0 24 172.17.1.3 #ip route-static 10.10.12.0 24 172.17.1.3 #save
ダイナミック(動的)ルーティング
スタティックルーティングともう一つのルーティングは「ダイナミックルーティング」と呼ばれるルーティングで、ルーターが自分の持っているNW情報、経路情報を自動でほかのルーターに共有し、通信の際はその自動で構成されたルーティングテーブルももとにルーティングを行うという方法です。
動的ルーティングともよび「RIP」「BGP」「OSPF」などプロトコルが様々ありルールや伝達方法、設定のコマンドもプロトコルによって異なります。
ダイナミックルーティングを利用する機会はインターネット内や、閉域網などのWANを構成するネットワークでのルーティングで設定することがい多いです。
シンプルな拠点間VPNなどではスタティックルーティングで経路を設定しておくことが多く、冗長を行いたい場合や経路を手動で追加することが多く発生しそうなネットワーク、マネージどVPNなどのすでにダイナミックルーティングで構成されている環境に拠点を追加する場合に主に使用します。
RIP (Routing Information Protocol)
ダイナミックルーティングであるRIPはルーターが自分の持っているネットワークアドレスを入力してRIPが設定されたルーター同士で経路を広報し、最適な経路選択をするという方法です。
RIPは現代のネットワークで利用されることは少なくなってきており、ダイナミックルーティングの中で最も古いプロトコルで設定が容易な点が特徴です。
RIPの特徴はルーターのホップ数を表す「メトリック」という数値が、より少ない経路を最適経路として利用します。 メトリックの最大値は15となっており、16以上の場合は到達不可と判断されます。
経路交換は30秒ごとに隣接するネットワークに更新のメッセージ(レギュラーアップデート)をブロードキャストで送信して行います。ブロードキャストを30秒ごとに行うことから通信量が多く、ネットワークセグメントの分割がクラス単位でしか行えなかったため、1998年に「RIPv2」というものも策定されています。設定コマンド自体はRIPv1とRIPv2で大きな差はありません。
RIPv1 設定コマンド [Ciscoルーター]
RIPの設定方法は非常にシンプルで1台のルーターに対し、2行のコマンドで設定を行うことができます。
- [router rip]でRIP機能を有効に設定する
- [network]で共有するネットワークアドレスを指定する
この設定を全てのルーターに入力しておきます。
今回は下記の画像のネットワークの場合のルーター設定するRIPのコマンドを解説します。
「ルーターA」 Router-A(config)# router rip Router-A(config-router)# network 192.168.1.0 Router-A(config-router)# network 172.16.1.0 Router-A(config-router)# network 172.16.3.0
「ルーターB」 Router-B(config)# router rip Router-B(config-router)# network 172.16.1.0 Router-B(config-router)# network 172.16.2.0 Router-B(config-router)# network 172.16.4.0
「ルーターC」 Router-C(config)# router rip Router-C(config-router)# network 172.16.3.0 Router-C(config-router)# network 172.16.4.0
「ルーターD」 Router-D(config)# router rip Router-D(config-router)# network 10.1.1.0 Router-D(config-router)# network 172.16.2.0
上記の設定を各ルーターに行い、ルーターAで自身に直接接続のない[172.16.4.0]と[10.1.1.0]の経路がルーティングテーブルに記載されていることを確認します。
ダイナミックルーティングで広報されたルーティングも[show ip route]で表示することができます。
Router-A # show ip route Codes: C - connected, S - static, I - IGRP, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area E1 - OSPF external type 1, E2 - OSPF external type 2, E - EGP i - IS-IS, L1 - IS-IS level-1, L2 - IS-IS level-2, * - candidate default U - per-user static route Gateway of last resort is not set 192.168.1.0/24 is subnetted, 1 subnets C 192.168.1.0 is directly connected, Ethernet0 172.16.1.0/24 is subnetted, 1 subnets C 172.16.1.0 is directly connected, Ethernet1 172.16.3.0/24 is subnetted, 1 subnets C 172.16.3.0 is directly connected, Ethernet2 172.16.4.0/24 is subnetted, 1 subnets R 172.16.4.0 [120/1] via 172.16.1.254, 00:00:18, Ethernet0 10.1.1.0/24 is subnetted, 1 subnets R 10.1.1.0 [120/1] via 172.16.1.254, 00:00:18, Ethernet0
ルーティングテーブル下の2つの[R]と記載されているルーティング(赤文字)が、RIPで経路を取得しておりネクストホップのIPアドレスが正しく追加されていることを確認します。
BGP (Border Gateway Protocol)
BGPはAS番号という数字を用いて経路交換を行うダイナミックルーティングで、ベンダーが提供する閉域網内のネットワークなどでよくみられるプロトコルです。(AS番号の割り当てに関する参考情報)
宛先のIPアドレスに到達するまでに経由した、「AS番号の一覧を含んだ経路情報」を用い最短ルートの選定を行う方法で、ルーターが受け取った複数の経路情報をまとめて、1つの経路として広報することが可能です。
ルーター間ではTCP-179のポート番号を利用して隣接するルーターと、それぞれ所持している経路情報の交換を行い、この隣接するルーターを「Neighbor(ネイバー)」または「Peer(ピア)」と呼びます。
上の画像ではルーターAがルーターBからB,C,Dの経路情報を受け取っていますが、情報の中に自身のAS番号が含まれていた場合、その経路だけ受け取らないことで経路がループすることを回避します。
BGP 設定コマンド [Ciscoルーター]
BGPの設定は大きく分けて3つのコマンドで行うことができます。AS番号と広報する経路情報、近接のルーターのIPアドレスを事前に確認しておく必要があります。
- [router bgp]でBGP機能を有効に設定する
- ピアを確立する近接ルーターの指定
- 通知する経路の指定
Router-A(config)# rotuer bgp [AS番号] Router-A(config-router)# neighbor [ピアルーターのIP] remote-as [AS番号] Router-A(config-router)# network [ネットワークアドレス] mask [サブネットマスク]
この設定を全てのルーターに入力しておきます。 今回は下記の画像のネットワークの場合のルーター設定するBGPのコマンドを解説します。
「ルーターA」 Router-A(config)# router bgp 100 Router-A(config-router)# neighbor 172.16.0.2 remote-as 200 Router-A(config-router)# network 10.10.10.0 mask 255.255.255.0 Router-A(config-router)# no auto-summary
コマンドの最上段から解説していきます。
まず1行目ではBGPプロセスの指定で、ルーターAのAS番号は「100」としているので[router bgp 100]と入力します。
次にピア(ネイバー)となるルーターのIPアドレスの指定と、そのルーターのAS番号を指定します。
3行目はBGPで他のルーターへ広報する経路情報の指定を行います。
最後に[no auto-summary]と入力して、「BGPへ再配布されるルートに対しての自動集約」の無効化を行っていますが、Ciscoのルーターはデフォルトで無効となっているかと思います。
続いて「ルーターB」と「ルーターC」にも同じように設定を行っていきます。
「ルーターB」 Router-B(config)# router bgp 200 Router-B(config-router)# neighbor 172.16.0.1 remote-as 100 Router-B(config-router)# neighbor 172.17.0.2 remote-as 200 Router-B(config-router)# no auto-summary
「ルーターC」 Router-C(config)# router bgp 200 Router-C(config-router)# neighbor 172.17.0.1 remote-as 200 Router-C(config-router)# no auto-summary
BGPもRIPと同様[show ip route]のコマンドで取得したルーティングテーブルを確認することができますが、[show ip bgp]というコマンドでBGPで取得した情報を確認することも可能です。
Router-B# show ip bgp BGP table version is 2, local router ID is 172.17.0.1 Status codes: s suppressed, d damped, h history, * valid, > best, i - internal Origin codes: i - IGP, e - EGP, ? - incomplete Network Next Hop Metric LocPrf Weight Path *> 10.10.10.0/24 172.16.0.1 0 0 100 i