VLAN間ルーティングについて

さてさて本格的にスイッチの勉強に入りますよー。
スイッチいじるには、VLANについて知っていなければいけません。


VLANとはバーチャルLANのことです。
スイッチの内部で複数のネットワークに分割する機能のことを指します。
スイッチの中に小部屋作るイメージで。


同じ部屋なら同じネットワーク。


↑当然、この場合PC1とPC2は同じネットワークです。

というか、PC1とPC2を直接つないでるようなもんです。普通にping通ります。

↑こういうイメージ。
VLAN10ルームは、1つのネットワークの部屋なのです。



じゃあこの場合はどうでしょう。


VLAN10と20では部屋が違うので、PC1→PC2はping通りません。

だってネットワーク違うから。


ネットワーク違う同士でも通信したいよーって場合は、
間にルータが必要ですね。

               ↑こうなる。


これをVLAN間ルーティングといいます。




でも、ルータにはインターフェースがたくさんあるわけじゃありません。
f0とe0の2つしかなかったら、↓この場合VLAN30はどうしましょう?



そんなときに使うのがトランクポート

VLAN10も20も30も、もーすべてのVLANはここ通すようにしちゃおうっていうやつです。
(あ、別にトランクポート用のケーブルとかないですからね。普通のストレートケーブル使います。設定いじるだけですよ。)


これでルータにつなぐのを1本にまとめられますね。
べんり〜。



ちなみに、個々につないでいるのはアクセスポートといいます。
上の図でいうと、右側の、VLAN10、20、30のポートがそうです。


設定方法などは、また次回。

NATの課題をば。

≪課題≫
・R1側のホストがインターネットに接続できるようにする。
・R1でNAT各種を設定(スタティック、ダイナミック、オーバーロード
・PC1からSERVERにpingtelnet、httpでアクセスする。
・show、debugコマンドを駆使して、NAT変換を検証する。



時間があるときにやります!

実習やった:NATの設定(オーバーロード その2)

前回はアドレスプールの中のひとつをグローバルアドレスとして使う、
という内容でしたが、結構それもめんどくさいっていうお話です。
インターフェースに設定したグローバルアドレスを、そのまま使い回しちゃえばいいんじゃね?っていうことです。


★手順
これも前回の流れとほとんど同じ。

①内部・外部のネットワークの設定


ローカルアドレスのアクセスリストを作る

③②とグローバルアドレスを設定したインターフェースを関連付ける

↑プールをインターフェースs0に変えただけです。違うのここだけ。


PC2にping打って、

NATテーブル見ると。

↑R1のs0のIPアドレスがグローバルアドレスとして使われてます。



一般的には、アドレスプール作るより、この方法を使うのが多いそうです。

実習やった:NATの設定(オーバーロード)

前回やった内容は、多対多のアドレス変換でしたが、
ローカルアドレス1つにつきグローバルアドレス1つを割り当てていて、
結局ローカルアドレス分だけグローバルアドレスが必要になってました。


内線番号の数だけ外線番号が必要、とか言われたら、
そりゃあ「え〜〜〜〜〜・・・(‐”‐;)そんなたくさん買えないしー。不便すぎるしー。 」てなりますよね。


そこで出てくるのがNAPT(Network Address Port Translation)です。(PAT(Port Address Translation)、またはIPマスカレードともいう)
※PATはCisco独自の呼び方で、一般的な呼称はIPマスカレード


IPアドレスとポート番号を合わせて変換してくれるので、
1つのグローバルアドレスで、複数台あるローカルホストがインターネットにつなげる!ってことですね。
多対1の変換です。



余談ですけどマスカレード(masquerade)って仮面舞踏会とか仮装って意味なんですね。10年くらい前ですかねー、TRFの「masquerade」って曲あったの知ってます?たぶん有名だと思うんだけど。あのサビ部分が頭の中にすごい流れるんですよね・・・まぁ、どうでもいいですけど。
調べたら1995年でした、14年前ですね、いやはや・・・。。
まぁ、どうでもいいですけど。


★手順
IPマスカレードも、前回アドレスプール設定した流れとほぼ同じです。(今回もRIPv1使用。R1にデフォルトルート設定でもよい。)


①内部・外部のネットワークの設定


ローカルアドレスのアクセスリストを作る

③グローバルアドレスのプールを作る

④②と③を関連付ける


・・・はい!前回と違うのはここです!ここで「overload」とオプションをつけましょう。

                                         ここっ!!



PC1からPC2へpingをうって、NATテーブル見てみると。

↑こーなる。

pingはのプロトコルはICMPですから、左端の「Pro」に「icmp」と表示されます。(本当は4層のプロトコルが表示されますが、該当がないので)
で、送信元のグローバルアドレスが「100.100.100.10」、ローカルアドレスが「192.168.1.1」でポート番号が「512」番。
宛先のグローバルアドレスが「192.168.2.1」、ローカルアドレスが「192.168.2.1」でポート番号が「512」番。
・・・という情報がのってますね。
※ICMPはポート使わないのですが、512番が割り当てられてます。512番じゃない場合もありますけど。



オーバーロードは多対1なんで、アドレスプールにいくつもグローバルアドレスがあっても、
基本的に1つのグローバルアドレスしか使いません。

↑100.100.100.10使いまわしてるのわかりますね。



スタティックNATやダイナミックNAT使ったときはNATテーブルは↓こうでしたから、

だいぶ情報量が違いますね。





telnetすると、tcpを使って、23番ポートを使うので、宛先のポート番号にちゃんと「23」と表示されますし、


ブラウザからアクセスすると、tcpを使って、80番ポートを使うので、「80」と表示されます。


あ。
ちなみに。
ダイナミックNAT設定したあと、「あ、やっぱオーバーロードにする!」ってなったときは、
「overload」のオプション付けて上書きすればよいのですが、
NATテーブルにまだダイナミックNATの情報が残っている場合、怒られます。

なのでそんなときは、一旦NATテーブル消しましょう。




ちなみに。
ルータは、スイッチと違い、
(config)#ip http server
とコマンドをうってあげないと、ブラウザからのアクセスを許しません。
でもtelnetと違って、特権パスを設定しなくても入れちゃいます。
なんか、紛らわしいですねー。ふぅ。

実習やった:NATの設定(ダイナミックNAT)

前回スタティックNATで「このローカルアドレスはこのグローバルアドレス」と
1対1で指定して設定しましたが、
今回は、「このネットワークに属するホストは、プールしたアドレスのうちのどれかを使う」という
多対多のダイナミックNATを設定します。




・192.168.1.0/24のホストを、アドレスプールに変換する。(RIPv1使用)

やることは、おおまかにいうと
①内部・外部のネットワークの設定
ローカルアドレスのアクセスリストを作る
③グローバルアドレスのプールを作る
④②と③を関連付ける
・・・という感じです。


ではさっそく設定してみましょ〜。

★手順

内部ネットワーク・外部ネットワークの設定。これはスタティックNATでやったやつと同じ。



アクセスリストを作る。これは標準ACLでやったやつと同じ。コマンドは
(config)#access-list [番号] [permit | deny] [送信元ネットワークアドレス] [ワイルドカードマスク]


プールを作る。コマンドは
(config)#ip nat pool [プール名] [開始アドレス] [終了アドレス] netmask [サブネットマスク]
netmask、ご注意を。


アクセスリストとプールの関連付け。コマンドは
(config)#ip nat inside source list [リストの番号] pool [プール名]
※リストの番号とプール名は、上で付けた番号/プール名ですよ〜


PC1からPC2にping


#show ip nat translations でNATテーブル見てみる。

↑1コ増えた。

ではPC1のIPアドレスを.1から、.2に変えてみましょう。


PC1からPC2にping


NATテーブルを見る。

↑さらに1コ増えた。

.2から.3に変えてping、NATテーブル見る。

↑さらにもういっこ増えた。
アドレスプールのアドレスが、ひとつずつ割り当てられている様子。




んじゃあ。
これ、次に.4にしてPC2にpingうったらどうなるんでしょうか。


答えは・・・












↑こうなる。

.4はPC2と通信できないんですねー。

.254までパケットとんで、そっから先に行けず
.254から返ってきちゃうんですね。

「届かなかったよ(unreachable)」と。。。



プールしたアドレスの分しか対応してくれないってことですねー。
これ、結構不便。


次回もっと便利なやつやります。

実習やった:NATの設定(スタティックNAT)

はー、やばいやばい、そろそろちょっとおっつかなくなってきたぞ。。。


・下図のネットワークでNATを設定する。


NAT(Network Address Translation)とは・・・
インターネットなど外部に接続するときに、
内部で使っているローカルのIPアドレスを、
外部で使えるグローバルなIPアドレスに変換する機能のことです。


普段家で使ってるPCとか見ると、IPアドレスが192.168.1.1とか1.2とかになってると思うんですけど。
これはウチの中では使えるけど、インターネットでは使えないんですね。
内線電話みたいなもんです。


たとえばお得意先に電話をかけて、
「私は内線番号1213ですので、折り返しお電話お願いします」なんて言ったって、
「えっ?どこ?どこに電話すりゃいーのよ??(;゜ロ゜)」ってなっちゃいますよね。
外線番号教えてもらわないと、かけるにかけれません。


これじゃ通信なんてできません。


えっ でも今インターネットできてるけど・・・
っていうのは、
家にあるルータさんの、NAT機能のおかげなんです!はい出た!


私のPCに割り当てられた192.168.1.1のIPアドレスを、
インターネットに接続するときに、
ルータさんが、世界で通用するグローバルIPアドレスに変換してくれるのです!


えらいっ。


ではさっそく設定してみましょうか。

★手順

R2側をインターネットと想定します。
見た目はこんなんですけど、世界中のネットワークとつながっている、と想像力を働かせてください。
NATはR1で設定します。


まずは内部のネットワーク統括係と、外部のネットワークとの窓口担当係を決めなきゃいけません。

↑s0を外部連絡担当に。

↑f0を内部統括担当に。
この担当者同士が連絡とりあって初めてNATが機能します。


そして、このローカルアドレスをこのグローバルアドレスに変換します、というコマンドを打ちます。

(config)#ip nat inside source static [内部ローカルアドレス] [外部グローバルアドレス]



↑設定。地元でしか通用しないのが192.168.1.1。世界に通用するのが100.100.100.1。


設定した内容は
#show ip nat translations
で見れます。NATテーブルが見れます。



では疎通確認してみましょうか。Wiresharkでパケットモニタリングするとわかりやすいです。(PC2でモニタリング)
PC1→PC2にping




↑PC2側。192.168.1.1から送られているのに、
グローバルIPアドレスである100.100.100.1がSource(送信元)がになってますね!

宛先であるPC2は、要求があった100.100.100.1にパケットを送ります。
で、R1でそれを受け取り、100.100.100.1に対応する192.168.1.1に向けて転送します。


こうやって通信するわけですねー。
NATすごい。


すごいがゆえ・・・こんなことも起こります。(余談ですけど)

今度はR2で以下のように設定。


で、R2→PC1にpingうつ。と。

↑失敗・・・?

PC2のWireshark見てみると。

↑変なことになってる。replyのパケットだけPC2で受け取ってるようだ。しかもSourceは192.168.1.1だ。


この変な現象は、ルータが賢いがゆえ起こっているのです。。。


R2が、返ってきたパケットを自分で止めずに
わざわざNATテーブルを見て変換し、PC2に転送しちゃっているのですね。


↑こういうこと。

実習やった:拡張ACL その2


192.168.2.1→スイッチへのtelnetを拒否したいときの、設定の注意点です。


↑リスト作成、R1のs0に適用。


R1からスイッチにtelnetしてみると・・・

成功しちゃう!!


なぜなら、自分のルータのインターフェースが送信元の場合、
アクセスリストの適用は無視されてしまうのです!!
ここ、アクセスリストの落とし穴です。ご注意を。


なのでこの場合の、適切な適用場所はR2のs0です。


R2(config-if)#ip access-group 102 in
ですね。




余談ですが・・・
1つ1つインターフェースに設定するのって、正直めんどくさいですよね。


そんなめんどくさがり屋さんにはもってこいの、
簡単でわかりやすい設定方法があります。


それは、ルータのvty回線自体にアクセス制御をかけてしまうというやり方です。
(このやり方は、PC→スイッチへのtelnetは拒否できないです。あくまでPC→ルータへのtelnet禁止のやり方ですよ)


リストの作成は今までと一緒で、適用だけちょっと違います。

↑標準アクセスリスト。送信元だけわかってればOKですから。宛先は自分だし、ポート番号は23て決まってるし。


access-classなんでご注意を。


これで

telnet禁止できた。