LINEで送る
Pocket

Adachinですっ。

現在インフラエンジニア3年目なのですが、

インフラの友人/大学の同級生(くにし)とこの前飲みまして、いろいろと語りまくりました。その中でも、

「10年後も必ずネットワークは存在する。サーバ自動化はもっと簡単になるし、インフラやることなくなっても
ネットワークに強ければ食っていける。ハードに強いかネットワークに強いか、このどちらかだ。」

改めて感銘を受けたし、やっぱインフラ面白いし、
開発よりも下のレイヤー(サーバ、ネットワーク)をゴチャゴチャいじるのが興味深い。
しかし、開発より明らかに覚えることが多いので毎日が勉強である。

今回はネットワークでおなじみの「NAT」についてブログしていきます。


■NATってそもそも何なのか、何の略なのか

Network Address Translation(NAT)

まさに言葉通りネットワークアドレス変換ですが、
アドレス変換ってどんなことをしているのかと言うと、
パソコンから送信されたパケットの中から、
IPアドレスを見つけて、IPアドレスを付け替えてしまうこと。


■なんでNATの技術が必要なのかnat-1

プライベートアドレスとグローバルアドレスは直接通信できないため、
内部から外部に接続できるようにしないといけません。

これはネットワークの歴史から説明していきたいと思います。(白目)

元々IPアドレスは枯渇しており、
ISP(Internet Service Provider)は/16のアドレスを持ってる場合が多く、
65534個のホスト番号が使用できます。
このホスト番号数よりさらにユーザーが増えた場合に問題が発生するため
アドレス変換/NATが必要となります。(応急処置的な)
ちなみにプライベートアドレスとホスト番号の範囲について以下にまとめてみた。

・10.0.0.0 – 10.255.255.255/8  (16777216ホスト)
・172.16.0.0 – 172.31.255.255/12 (1048576ホスト)
・192.168.0.0 – 192.168.255.255/16 (65536ホスト)

NATの問題点としては
ルータが保持しているグローバルIPアドレス数しか同時に接続が出来ないということ。
つまり、どのアドレスに置き換えればよいのか判断出来ません。
これを解決するのがNAPT(Network Address Port Translation)/IPマスカレードを使用します。
ポート番号を置き換えることで複数の通信が可能となります。
Linuxの場合だと主にiptablesやfirewalldで制御します。

NATは入ってくるパケットのうち不要なものをデフォルトで遮断するため、
ファイアーウォールに融合されるようになりました。
今後IPv6が普及してもNAT技術は使われるであろう。

ちなみにこのadachin-serverブログもまさにNATとNAPT/IPマスカレードを使用して
公開しています。


■アドレス変換の種類

NATを大きく分類すると以下のようなかんじ。

・NAT
IPアドレスを変換

・NAPT/IPマスカレード
IPアドレスの他にポート番号も変換

・SNAT(すごいNAT)
送信元アドレスを変換%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-08_23_24_27

・DNAT(デカイNAT)
送信先アドレスを変換(逆もある)%e3%82%b9%e3%82%af%e3%83%aa%e3%83%bc%e3%83%b3%e3%82%b7%e3%83%a7%e3%83%83%e3%83%88_2016-10-08_23_24_33

もちろんSNAT/DNATは同時に必要となり、
SNATの戻り通信は DNATによる変換をしなければならない。
例えばHTTPのリクエストはSNAT で相手に届き、レスポンスはDNATにより戻ってきます。


■まとめ

以上がNATの概念についてまとめてみたが、家庭用ルータ、Linuxでも動きは同じなので、
これくらいちゃちゃっと説明できるとカッコイイ!!

・参考
コンピュータネットワーク(第5版)
http://yoru9zine.hatenablog.com/entry/2015/12/19/072304

LINEで送る
Pocket


あだちん

1989年生まれ。 ランサーズ/SRE。 ホスティングから大規模なアドテクなどのインフラエンジニアとして携わり、他社インフラレスポンス改善、ランサーズでの副業、ansibleでのインフラコード化を推進し、未経験によるエンジニアのMENTAなども実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/広報/VulsRepo init file,chatwork通知のコントリビュータでもある。現在はDocker開発環境の提供,AWSで新サービスのインフラ構築,PHPバージョンアップ,分析基盤を担当しておりDigdag,embulk,BigQueryを使いこなし中。

コメントを残す

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください