VLAN間ルーティングについて
さてさて本格的にスイッチの勉強に入りますよー。
スイッチいじるには、VLANについて知っていなければいけません。
VLANとはバーチャルLANのことです。
スイッチの内部で複数のネットワークに分割する機能のことを指します。
スイッチの中に小部屋作るイメージで。
同じ部屋なら同じネットワーク。
というか、PC1とPC2を直接つないでるようなもんです。普通にping通ります。
↑こういうイメージ。
VLAN10ルームは、1つのネットワークの部屋なのです。
VLAN10と20では部屋が違うので、PC1→PC2はping通りません。
だってネットワーク違うから。
ネットワーク違う同士でも通信したいよーって場合は、
間にルータが必要ですね。
↑こうなる。
これをVLAN間ルーティングといいます。
でも、ルータにはインターフェースがたくさんあるわけじゃありません。
f0とe0の2つしかなかったら、↓この場合VLAN30はどうしましょう?
そんなときに使うのがトランクポート。
VLAN10も20も30も、もーすべてのVLANはここ通すようにしちゃおうっていうやつです。
(あ、別にトランクポート用のケーブルとかないですからね。普通のストレートケーブル使います。設定いじるだけですよ。)
これでルータにつなぐのを1本にまとめられますね。
べんり〜。
ちなみに、個々につないでいるのはアクセスポートといいます。
上の図でいうと、右側の、VLAN10、20、30のポートがそうです。
設定方法などは、また次回。
実習やった: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の情報が残っている場合、怒られます。
ちなみに。
ルータは、スイッチと違い、
(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(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→PC1にpingうつ。と。
↑失敗・・・?
PC2のWireshark見てみると。
↑変なことになってる。replyのパケットだけPC2で受け取ってるようだ。しかもSourceは192.168.1.1だ。
この変な現象は、ルータが賢いがゆえ起こっているのです。。。
R2が、返ってきたパケットを自分で止めずに
わざわざNATテーブルを見て変換し、PC2に転送しちゃっているのですね。
実習やった:拡張ACL その2
192.168.2.1→スイッチへのtelnetを拒否したいときの、設定の注意点です。
R1からスイッチにtelnetしてみると・・・
成功しちゃう!!
なぜなら、自分のルータのインターフェースが送信元の場合、
アクセスリストの適用は無視されてしまうのです!!
ここ、アクセスリストの落とし穴です。ご注意を。
なのでこの場合の、適切な適用場所はR2のs0です。
R2(config-if)#ip access-group 102 in
ですね。
余談ですが・・・
1つ1つインターフェースに設定するのって、正直めんどくさいですよね。
そんなめんどくさがり屋さんにはもってこいの、
簡単でわかりやすい設定方法があります。
それは、ルータのvty回線自体にアクセス制御をかけてしまうというやり方です。
(このやり方は、PC→スイッチへのtelnetは拒否できないです。あくまでPC→ルータへのtelnet禁止のやり方ですよ)
リストの作成は今までと一緒で、適用だけちょっと違います。
↑標準アクセスリスト。送信元だけわかってればOKですから。宛先は自分だし、ポート番号は23て決まってるし。
↓
↑access-classなんでご注意を。
これで
telnet禁止できた。