スクール情報

頭文字D / 藤原文太風:NAT

藤原文太についてはこちら

頭文字D / 藤原文太風:NAT

NAT(ナット)の概要

【文太】
なぁ、拓海。お前、NATって知ってるか?

【拓海】
ん?え、あー、名前だけは聞いたことあるけど。それがどうしたんだよ親父?

【文太】
お前も、少しばかりネットワークに興味持ちだしたから、そろそろ押さえておくべきじゃねえかなって思ってな。

【拓海】
親父にしては何か珍しいな。いつも、具体的には教えてくれないのに。

【文太】
まぁ、あれだ。この手の話はなかなか自分で知る機会ってのがないからな。まぁ、あまり畏まらなくても大丈夫だ。お前にも分かるように、話してやるよ。

ところで、お前、家の台所って聞いて、自分ちの台所が思い浮かぶだろ?

【拓海】
ん?何だよ、家の台所の話か?NATじゃないのかよ。

【文太】
まぁ、おちつけ、この「台所」ってのはどこの家庭でも共通の言葉だ。それだけじゃない。「玄関」「洗面所」「トイレ」もな。まぁ、今じゃ「キッチン」とかいろいろと言い方はあるがな。

そして、俺とお前は、俺たちの家の中の「台所」を把握して利用できる。そうだな?

【拓海】
あ、あぁ。

【文太】
つまり、この呼び方でコミュニケーションが取れるのは、個々の家庭内に限られるってことになる。さっき言ったように、俺たちは俺たちの家の事として捉えるってのがいい例だ。しかも、この家庭内での呼び方は、多少の違いはあるものの、全国で共通しているもんだ。

家族の全員が同じ言葉で呼んでるから、誰でもその場所が分かるんだよ。それとよく似たのが「家庭内LAN」とか「社内LAN」っていうもんなんだ。

家庭内のネットワークで使うIPアドレスは、プライベートIPアドレスって呼ばれるもので、内部で使われるアドレスだ。例えば、「台所」が192.168.2.4/24、「トイレ」が192.168.2.7/24、「玄関」が192.168.2.1/24みたいにだな。

でだな、拓海、仮にだが、外部のネットワークに対して、いきなり、「行き先が台所」なんて呼び方をした時、それを聞いたルーターは、どの家の台所のことを言っているのか分かると思うか?

分かるわけねぇんだよ。もっと言えば、外部ネットワークじゃ、発信者がどこなのかってのも分からなくなっちまう。

理由は簡単で、同じ呼び方(アドレス)を使っちまってるからだ。通信の世界には顔のような手がかりはない。だから、分からなくなるんだ。少し堅苦しい言い方をすれば、重複したアドレスは使えないってことなんだ

ひとこと、断っておくが、重複して利用できないのは外でも内でも同じだ。家庭内LANで利用するローカルIPアドレス(≒プライベートIPアドレス)も、その中では重複できない。

それなのに、仮に、家庭内LANのプライベートIPアドレスが外側で利用されるとなったら、必ずどっかの家のアドレスとぶつかる。(※厳密にはインターネットでは使えないようになっている。)

そこで、登場するのがNATだ。NATってのは、Network Address Translation(ネットワークアドレス変換)っていう言葉を短くしたもんで、ネットワーク上のアドレスを変換するプロセスのことを言う。

主に、ローカルネットワーク内のプライベートIPアドレスグローバルIPアドレスに変換することを指してるが、逆に外部からのアクセスをローカルネットワークの適切な端末にルーティングすることも行ってる優れもんだ。

グローバルIPアドレスっていうのは外部で利用される重複しないアドレスだ。これは「家の住所」みたいなもんだ。

グローバルIPアドレスはプロバイダーがIANA(インターネット番号管理機関)から取得してルーターに取り付けているんだが、内部ネットワークから外部ネットワークにアクセスするときは、このグローバルIPアドレスが使われるってわけだ。

どうして付け替える必要があるかは色々理由があったんだ。例えばIPv4の枯渇問題解とかな。IPv4を節約するために内部と外部で利用できるアドレスを分けたのさ。何はともあれ、そういう技術が作られた。

そして、その技術で、行先や、どこからの通信なのかを、数に限りがあるアドレスで判別できるようにしたってことだ。こうやって、家の中のアドレス(「台所」みたいな呼び方)と家の外のアドレス(家の住所)を使い分けるんだ。

郵便局員は家の風呂やトイレの位置はわからないが、郵便物は届けてくれるだろ?同じだ。

   家の中      ⇔     ルーター    ⇔ 外部インターネットの世界
プライベートIPアドレス    グローバルIPアドレス   宛先グローバルIPアドレス

【拓海】
あー、よくわかったよ。以外にシンプルなんだな。

【文太】
馬鹿言っちゃいけねえぜ。拓海。これは「SNAT(送信元アドレスの変換)」と「DNAT(宛先アドレスの変換)」って呼ばれる基本中の基本の部分だ。まぁ、今のお前にはちょうどいい教材だ。

NAT(ナット)の設定

【拓海】
親父、今晩、パソコン借りるぜ。シミュレーターでNATを設定してみたいんだ。

【文太】
ん、あぁ。拓海、NATの適用にはスタティックNATとダイナミックNATがある。自分で研究してみな。

【拓海】
な!?。。。たく、聞いてねーよ、そんなん。

CiscoルーターでのNAT設定(WAN: GigabitEthernet0)

前提

  • 目的:内部ネットワークの端末からインターネットに出られるようにする(SNAT)
  • LAN側のネットワーク:192.168.1.0/24
  • LANインターフェース:Vlan 1
  • WANインターフェース:GigabitEthernet0(グローバルIPが割り当てられている)
  • グローバルIP:例として 203.0.113.1 を使用
! ===============================
! インターフェースの設定
! ===============================

Router(config)# interface Vlan 1
Router(config-if)# ip address 192.168.1.1 255.255.255.0
Router(config-if)# ip nat inside       ! LAN側に「inside」を指定
Router(config-if)# no shutdown
Router(config-if)# exit

Router(config)# interface GigabitEthernet0
Router(config-if)# ip address 203.0.113.1 255.255.255.0
Router(config-if) ip nat outside       ! WAN側に「outside」を指定
Router(config-if) no shutdown
Router(config-if)# exit

スタティックNAT

【拓海】
えっと、ひとまず、適用前の準備はできたな。じゃ、スタティックNATの方からやってみるか。内部「192.168.1.10(適当に決めたアドレス)」と外部「203.0.113.10」の変換してみるか。

! スタティックNATの設定
Router(config)# ip nat inside source static 192.168.1.10 203.0.113.10

【拓海】
親父、スタティックNATを組んだんだ。見てくれよ。

【文太】
おー、よくできてんじゃねーか。拓海、確認だが、次の意図であってるよな?

  • ip nat inside source static: これがスタティックNATの設定で、特定の内部IPと外部IPを1対1で対応付ける。
  • 192.168.1.10: これは変換元のIPアドレス、つまり内部ネットワークのIPアドレスだ。このIPが外部ネットワークにアクセスするときに、203.0.113.10という外部IPアドレスに変換される。
  • 203.0.113.10: これは変換先の外部IPアドレス。このIPアドレスに対して外部からアクセスが来ると、それが内部の192.168.1.10に転送される。

もう少し詳しく言うと、スタティックNATじゃ、双方向変換(SNATとDNATの両方)が行われる。内部から192.168.1.10が外部にアクセスするときは、常に203.0.113.10に変換され、逆に、外部から203.0.113.10にアクセスがあった場合、必ず内部の192.168.1.10に転送される。これが双方向NAT、つまりSNAT(Source NAT)とDNAT(Destination NAT)が同時に行われるという意味だ。

スタティックNATを使うことで、内部の特定のサーバーなどに外部から直接アクセスできるようにすることができるんだ。

あとは、スタティックNATじゃ、必須ってわけじゃないが、アクセスコントロールリストを定義すると、よりセキュリティがあがるぜぇ。

Router(config)# access-list 10 permit 192.168.1.0 0.0.0.255

それから、注意点だ。

WANインターフェースに設定されているグローバルIPアドレス(203.0.113.1)とスタティックNATのグローバルIPアドレス(203.0.113.10)の違いだが、WANインターフェース に設定されている 「203.0.113.1」 これは、ルーターがインターネットに接続するために使用するIPアドレスだ。GigabitEthernet0 インターフェースに割り当てられた実際の ルーターのグローバルIPアドレスってやつさ。

対して、スタティックNATで指定した 「203.0.113.10」は、内部IPアドレス 「192.168.1.10」 を外部に公開するためのIPアドレスになる。

スタティックNATで使用するグローバルIPアドレスは、必ずしもWANインターフェースのIP(この場合 203.0.113.1)である必要はないんだ。実際、WANインターフェースとは異なるグローバルIPを使用して、特定の内部IPに対してスタティックNATを構成することができる。

どうしてWAN側インターフェースとスタティックNATのIPが違ってもいいのか?

ルーターってのは複数のグローバルIPアドレスを所有していることが多い。当然、ISPから割り当てられた複数のグローバルIPアドレスを使用することができる。そのため、WANインターフェースに設定されているIPアドレスとは別に、スタティックNATの設定で使用するIPアドレスを指定できるってことになる。

もし、ISPから 203.0.113.0/24 というサブネットを割り当てられている場合、ルーターは 203.0.113.1 をインターフェースに設定し、同じサブネット内の他のIP(例えば 203.0.113.10)をスタティックNATで使用することができるんだ。こうやって、異なるIPアドレスで内部ネットワークへのアクセスを制御することが可能になってる。

スタティックNATの目的は、内部ネットワークの特定のホストを外部ネットワークからアクセスできるようにすることだ。スタティックNATでの外部IPは、WANインターフェースに設定されたIPでも、ISPから提供された他のグローバルIPでも構わない。一応、頭に入れておけ。

    ダイナミックNAT

    【拓海】
    次は、ダイナミックNATだ。最初の設定は変わらないから、スタティックNATの削除だけしっかりとしておこう。

    ! スタティックNATの削除
    Router(config)# no ip nat inside source static 192.168.1.10 203.0.113.10

    ダイナミックNATはACL(アクセスコントロールリスト)が必要だ。親父がさっき作ったアクセスコントロールリストをそのまま使わせてもらおう。

    あとは、プールとダイナミックNATの設定だ。

    ! プールの作成
    Router(config)#ip nat pool trueno 203.0.113.10  203.0.113.13 netmask 255.255.255.248
    
    ! ダイナミックNATの設定
    Router(config)#ip nat inside source list 10 pool trueno

    【拓海】
    netmaskの計算、きっつ。ただ、出来なくなはいな。

    ポイント1つ目はプールの作成だ。

    NATプール trueno に対して、203.0.113.10 から 203.0.113.13 の 4つのIPアドレス (203.0.113.10, 203.0.113.11, 203.0.113.12, 203.0.113.13) をプールとして設定。

    ポイント2つ目はサブネットマスクだ。

    サブネットマスク 255.255.255.248 は、IPアドレス範囲として 203.0.113.8 から 203.0.113.15 をカバーしている。つまり、この範囲内で 8 つのIPアドレスが利用可能だ(203.0.113.8 ~ 203.0.113.15)。

    結果的に、203.0.113.10 ~ 203.0.113.13 の範囲はこのサブネットマスクで問題なく使えるはず。

    NATテーブルの確認は「show ip nat translations」コマンドを利用だ。

    Router#show ip nat translations

    【文太】
    お前にしては良くできてるじゃねぇか。

    但し、netmaskの部分で割りだしたIPアドレスは用途を区別してるか?内容はこうだ。最初のアドレスはネットワークアドレス、一番最後はブロードキャストアドレスだ。

    • ネットワークアドレス: 203.0.113.8
    • 利用可能なIPアドレス(ホストIP): 203.0.113.9 ~ 203.0.113.14
    • ブロードキャストアドレス: 203.0.113.15

    きちんと理解しておきな。

    NATは、インターネットを利用する上で欠かせない技術の一つだ。特にIPv4アドレスの枯渇を防ぐためにも重要な役割を果たしている。

    それに、ポート番号を利用したポートマッピングを使って、複数の端末からの通信を管理することもできる。これはいいぜ。1つのグローバルIPアドレスを使って、家庭内の複数の端末が同時にインターネットに接続できるんだ。

    【拓海】
    ポートマッピングって何だよ?

    【文太】
    ポートマッピングは、NATの応用技術だ。外部から通信が来たとき、ルーターがその通信を特定のプライベートIPアドレスとポート番号に振り分ける仕組みだ。似たようなものにPATがある。これも便利だ。

    今日はここまでだ。下にITスクール情報を置いておく。俺は現役の時は夢の中でも秋名の山を走ってた。知識ってのは一日やそこらじゃ身にならね。負けんなよ。

    「2025年版」 最新おすすめ ITスクール情報 | 現役エンジニア&プログラミングスクール講師2025年 最新 ITスクール情報です。Winスクール、インターネット・アカデミー、DMM WEBCAMP、テック・アカデミー、Aidemy  Premium、スキルアップAIといった人気スクール、注目度が急上昇中のスクールを掲載しています。...
    【最大70%OFF】AI×IoTを本気で学ぶなら今がチャンス!python AI IoTを学ぶならインターネット・アカデミー『Reスキル通学講座』(経済産業省から認定を受けた講座)認定数が日本一!AI・IoT関連の最先端スキルを受講料が最大『70%OFF』で学べる。Reスキル講座で身に着けることのできるスキルは経済産業省が策定する「ITスキル標準(ITSS)」のレベル4の水準となります。レベル4水準のIT人材の年収平均は『726.1万円』と高く、これからIT分野のスキルを新しく身に着けたい方、さらなるスキルアップ・年収アップを目指したいIT職の方まで、魅力的な講座となっています。...
    【現役エンジニアが本音で解説】おすすめのITスクール「Winスクール」はこんな人にぴったり!ITスクールの選び方を説明しています。もっとも譲れない条件を基にしてスクールを選び、学びたい教科を学ぶことをお勧めします。ページ下部に「おすすめ求人サイト」について情報を掲載中。...
    RELATED POST
    no image
    スクール情報

    ITのトレンドから読み解ける現状のITスクール受講生数

    2025年5月1日
    プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
    no image
    雑記

    聖闘士星矢風解説:スケーラビリティ、スケールアップ、スケールアウト

    2025年6月7日
    プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site
    06-Django

    「Django」が学べる ITスクール情報【2025年版】 | 現役エンジニア&プログラミングスクール講師

    2025年6月15日
    プログラミング学習 おすすめ書籍情報発信 パソコン初心者 エンジニア希望者 新人エンジニア IT業界への就職・転職希望者 サポートサイト Programming learning Recommended schools Recommended books Information dissemination Computer beginners Prospective engineers New engineers Prospective job seekers in the IT industry Support site