Linuxルータ制作計画 第1話「 IPマスカレード 」


cach

なぜLinuxでルータを作るのか?

技術を効率よく学習する方法を考えて思いつくことは、「車輪の再発明」です。
仕事では、先行事例やライブラリ等があるのに、再び一から作ってしまうことを、皮肉をこめて使うことがありますが、
教育の現場では、技術の意味を理解するために、意図的に「車輪の再発明」を行うことがあります。

私はLinuxや、ネットワークの学習のためにLinuxを利用したルータ(ゲートウェイ)を制作してみようと思いました。
Vyattaという偉大な先行事例がありますので、そういったプロジェクトをよき先輩として、「車輪の再発明」を行っていきます。

IPマスカレードとは

複数のNICがあるゲートウェイとなる機器上で、IPアドレスを変換することで、1つのグローバルIPアドレスでも複数の機器をインターネットに接続することが出来ます。
家にあるブロードバンドルータにも実装されている機能の1つです。今回はLinuxで同様の動作をさせてみましょう。

NATとNAPT(NAT+)、IPマスカレードの違い

NAT(Network Address Translation)とは、グローバルIPアドレスとプライベートIPアドレスを変換するための技術です。
ただし、NATだけでは機能的に1体1の変換しかできないので、ネットワークアドレス+ポート番号の形に拡張したものを、
NAPT(Network Address Port Translation)あるいはNAT+と呼んでいます。
また、IPマスカレードも機能的にはNAPTと同じです。この機能を実装したときにIPマスカレードと名称が付けられたため、そう呼ばれています。
最近はNATというものは、現在ではほとんど使われていないので、NATがIP Masqueradeと同じ意味で使われていたりもします。
こういう所が、ネットワークを勉強しはじめた方が混乱する原因ですね。
では設定をしていきます。

ゲートウェイ Linux の設定

まず前提条件としてゲートウェイになるLinuxにはNICが2つ必要です。(グローバル側とローカル側)
今回は eth0 がグローバル側で、 eth1 がローカル側のNICとして設定をしていきます。

ネットワークをリスタートするとnicにIPアドレスが適用されて、pingが届くようになると思います。

しかしまだこの状態では、LAN側からインターネットへ接続することはできません。

ゲートウェイ側のLinuxのカーネルパラメータで、IPパケットの転送を許可する必要があります。
今回はipv4だけ転送できればいいので、 net.ipv4.ip_forward=1のコメントアウトをはずします。

iptables の設定も、FORWARDが許可になっている必要があります。
下のの例ではデフォルト設定をACCEPTにしました。

最後にIPマスカレードの設定をしましょう。

これでLANからインターネットへ通信が可能になっていると思います。

今回はここまで。またいつの日か2話があるかもしれません。


コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です