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

Pocket


adachin

1989年生まれのSRE。ホスティングから大規模なアドテクなどのインフラエンジニアとして携わる。現在はサービスの信頼性向上、DevOps、可用性、レイテンシ、パフォーマンス、モニタリング、オブザーバビリティ、緊急対応、AWS/Azureでのインフラ構築、Docker開発環境の提供、Kubernetes保守、インフラコード化、新技術の検証、リファクタリング、セキュリティ強化などを担当している。個人事業主では数社サーバー保守とベンチャー企業のSREインフラコンサルティングやMENTAで未経験者にインフラのコーチング/コミュニティの運用を実施している。また、「脆弱性スキャナVuls」のOSS活動もしており、自称エバンジェリスト/技術広報/テクニカルサポート/コントリビュータでもある。

0件のコメント

コメントを残す

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