SNATをiptablesで

これまでのところ、我々一般的なNATの原則は、NATの種類、何がNATのあらゆる種類の場合について議論した。
のnetfilter / iptablesのNATを実行するすべての私たちは議論の方法で使用することができます。実際には、この地域のiptablesでできることはたくさんありますし、我々としても、この資料の可能性をカバーしようとします。前に、我々が得るのは必要なものを見てみましょう正常にLinux上でNATを実行できるようにする。

カーネルの設定

通常、すべてのLinuxディストリビューションは、カーネルのnetfilterのサポートと、iptablesのツール、およびすべてのモジュールが、ネットワークアドレス変換を実行するために必要なコンパイルされています。
非常に良い手引きと2.6カーネルではLinux 2.4のコンパイルにクワンロウと書かれているhttp://www.digitalhermit.com/linux/Kernel-Build-HOWTO.htmlで発見することができます
ときは、新しいカーネルをコンパイルしたりするとしているカーネルを再コンパイルする場合、= y方向のためiptablesを使用するnetfilterを設定する必要があります。 2.6カーネルでは、通常はこのオプションの下にあります デバイスドライバ|サポートネットワーク|サポートネットワーク(NETの[= y]と)|ネットワークオプションしかし、実際には、カーネルのバージョンに依存します。
例えば、カーネル2.6.14は、このオプションの下にあります ネットワーク|ネットワークオプション
場合はmake menuconfigを使用するかを設定し、選択を再コンパイルするためのカーネルxconfigをする ネットワーク|ネットワークオプション|ネットワークパケットのフィルタリング()ipchainsの置き換え| IPアドレス:Netfilterの設定
IPアドレス:Netfilterの設定 場合は、オプションのNATのために必要なセクションを見つける次のとおり:
IP_NF_CONNTRACKまたは 接続の追跡(マスカレード/ NATのために必要) 答えているの順序が正しく要求をそれらから作られたNATをエンドポイントに渡すには、IPパケットには、マシンを介して渡されたレコードを保持します。これはNATが不可欠です。もしあなたが言う いいえ ここでは、NATを実行することができなくなります。

netfilterのNATテーブル

natテーブルの3つのチェーン、すなわちPREROUTING、POSTROUTINGを、および出力が含まれます。各チェーンには、順番に1つのルールまで検討されるルールが含まれる場合、パケットはnetfilterのテーブル内のチェーンの場合と同じにマッチします。これらの鎖は、コマンドiptablesを発行して閲覧することができますトンのNAT - L通常。
モジュールiptable_natとip_conntrackときは、これがないがLinuxのユーティリティを使用することですinsmodやNATのための作業にmodprobe -トンのNAT; iptablesで任意のコマンドを発行する。
OUTPUTチェーンを完全にサポートされていないので、無視する必要がありますが今のところ。
はPREROUTINGそしてPOSTROUTINGチェーンの意味のある名前があります。 PREROUTINGチェーンはカーネルによって任意のルーティングを決定する前に分析される。したがって、我々はPREROUTINGチェーンに何をすべきかは、宛先のIPアドレスを変更してルーティングを処理するためには、宛先は、我々だけ(DNATの変更)を見つけるために残している。
POSTROUTINGチェインのルールは、ルーティングの決定後に、カーネルを分析し、作られています。これは、我々は、宛先へのパスがある場合、そのパスが私たちのネットワーク(SNATと外)ですので、我々のソースIPアドレスを変更することができます。

SNATをiptablesで

SNATを1つのトポロジのためiptablesでのNATの最も一般的に使用されるタイプの場合に使用。
の例は、次のシナリオ:を見てみよう
ネットワーク192.168.1.0/24事務所です。我々は、私たちは、IPアドレス1.2.3.1/30およびデフォルトゲートウェイ1.2.3.2割り当てられて我々のプロバイダから、イーサネット接続している。
192.168.1.0/24のネットワーク内のすべてのコンピュータは、デフォルトゲートウェイを192.168.1.1に設定されている。
われわれのLinuxルータは、2つのEthernetインターフェイスがあります:

  • eth0で、IPアドレスが192.168.1.1、ネットマスクが255.255.255.0は、192.168.1.0/24ネットワーク内の他のデバイスを接続するスイッチに接続されます。
  • eth1のは、IPアドレス1.2.3.1およびネットマスク255.255.255.252とすると、プロバイダのCPE(顧客宅内機器)には、DSLモデム、ケーブルモデム、メディアコンバータ、等することができます接続されて
  

私達はSNATを設定することができます192.168.1.0/24のネットワークへのアクセスのみを1つのルールを使用してインターネット上のすべてのデバイス:

iptablesの-トンのNAT - POSTROUTINGを、192.168.1.0/24掲載 -論文SNATを-に1.2.3.1

場合、eth1ののIPアドレスが動的に、または割り当てられている場合、我々は、ダイヤルアップモデム接続の代わりにEthernetカードを使用するこのコマンドは、次のコマンドとして我々は使用するのと同じ効果を持っています:


iptablesの-トンのNAT - POSTROUTINGを、192.168.1.0/24掲載 -論文仮装

の1024以上のインターネットプロバイダーのフィルタを、すべてのポートとしましょう。この例では、我々としても、だけではなく、送信元IPアドレスを発信元ポートを変更する必要があります。これによって行うことができます:

iptablesの-トンのNAT - POSTROUTINGを、1.2.3.1に192.168.1.0/24 -論文SNATを-掲載:1-1024

ノートPCユーザーは、前の図に見られるのIRCのファンであり、彼は私たちに彼はすべてのIRCネットワークに接続することができないと言っ呼び出すことができます。これは、ip_conntrackモジュールには、少しの援助が必要で、我々は彼には、カーネル内のip_conntrack_ircモジュールを挿入することによってそれを与えることができます。また、ユーザーが正常にFTP接続を確認できるように、だから私たちは同様にip_conntrack_ftpモジュールを追加する必要があります。

modprobeはip_conntrack_irc#またはip_conntrack_irc insmodの
modprobeはip_conntrack_ftp#またはinsmod ip_conntrack_ftp

数週間後には、ラップトップユーザーの素晴らしさは、IRCの192.168.1.0/24ネットワーク内の他のユーザーと確信している;ので、約20〜30のユーザーが同じIRCネットワークに接続している。今、それらのためのIRCネットワークだけを許可する方法については難しいのは、IRCネットワーク上に接続するには、文句を開始して、同じIPアドレスからの接続数。私たちは、32のIPアドレスを十分に彼らのためにされるため、私たち/ 27のパブリックIPサブネットを割り当てるには、プロバイダを呼び出し図。数ドルの追加については、彼らは私たち1.2.4.0/27を割り当てます。私たちへの最初のルールを変更する必要があります:

 

iptablesの-トンのNAT - POSTROUTINGを、192.168.1.0/24掲載 -論文SNATを-に1.2.4.0-1.2.4.32

彼らは不満を停止するが、私たちはもはやNATのための当社のLinuxルータのパブリックIPアドレスを使用しないで実現する。のは、あまりにもするので、その余分なIPアドレスを追加してみましょう:

iptablesの-トンのNAT - POSTROUTINGを- 1.2.4.0-1.2.4.32に192.168.1.0/24 -論文SNATを-掲載 - 1.2.3.1へ

弊社のユーザーのIRCでの引数には、取得浸水を取得中にSNATを1.2.4.15に彼のIPアドレスが2007/12/3。我々のプロバイダの洪水の検出システムが自動的にIPアドレスをフィルタし、私たちはそれについて私達を知らせるメールを送信します。我々はSNATを停止するためにIPアドレスを任意の内部アドレスにマップするので、私たちのことを行う必要がある、次の:

iptablesの-トンのNAT - POSTROUTINGを、192.168.1.0/24 -論文SNATを掲載 - 1.2.4.0-1.2.4.14する-に1.2.4.16-1.2.4.32 - 1.2.3.1へ

IPアドレス192.168.1.19と会計から1人の人は、彼192.168.1.32上でのIPアドレスを持つすべてのコンピュータにアクセスできないことが不満。彼が255.255.255.227には、192.168.1.0/24のコンピュータに自分のコンピュータからは、192.168.1.0/27のパスでは、Linuxルーターを介してではなく、SNATedを得るため、すべてのIPパケットを彼のマスクが変更された可能です。この問題を解決するには、2つの選択肢があります。
第一希望SNATを192.168.1.0/24しないようにする際には宛先192.168.1.0/24内の別のコンピュータのことです:


iptablesの-トンのNAT - POSTROUTINGを、192.168.1.0/24掲載 次元! 192.168.1.0/24 -論文SNATを-に1.2.4.0-1.2.4.32 -に1.2.3.1

私たちが2番目の選択肢のみのパケットは、eth1に出掛けるSNATをすることです:

iptablesの-トンのNAT - POSTROUTINGを、192.168.1.0/24掲載 -図書館eth1の -論文SNATを-に1.2.4.0-1.2.4.32 -に1.2.3.1

当社のプロバイダでは、同じ装置に、私たちの会社の別の場所に接続して以来、私たちは、同じVLANにある場合、それぞれの場所でのルータ間のトンネルを構築する必要はありませんが、その場所では、Linuxルーターを介してわずかのルートのネットワーク。他のサイトでは、我々は、ネットワーク192.168.2.0/24している。我々はネットワークアクセスがコンピュータでは、192.168.2.0/24ネットワーク内でそれらSNATingせずにコンピュータを聞かせする必要があります:

iptablesの-トンのNAT -私POSTROUTINGを-次元192.168.2.0/24 -論文同意192.168.1.0/24掲載

このコマンドは、NATルールの前にルールが挿入されます;ので、もし192.168.1.0/24からのパケットは192.168.2.0/24のネットワーク内の任意のIPアドレスを宛先とする場合は、このルールとは、チェーンにマッチする、さらに分析されませんSNATとはは行われません。
ジェーン、私たちの秘書、彼女のおいしいコーヒーのために有名ですが、以来、彼女は、IRC熱が、彼女はいないのはもう何も。マネージャは、この約怒っているが、彼女は彼女の有名なコーヒーに夢中の彼女はジェーン火災したいしませんので、彼女はそれについて何かご依頼をしています。私たちはこの問題にしないことはたくさんあります、ジェーン(192.168.1.31)からインスタンスを削除パケットがアクセスポートの6666から6669へのPOSTROUTINGチェーンにしようとは:

iptablesの-トンのNAT -私POSTROUTINGを、192.168.1.31掲載 - pがtcp - dportと6666:6669 -論文ドロップ

ジェーンに何が許可されているマネージャーに依頼することがあります。例えば、マネージャのジェーンは、ウェブにアクセスできるように、我々は次のようにすることができます:望んで

iptablesの-トンのNAT -私POSTROUTINGを、192.168.1.31掲載 - pがtcp - dportと! 80 -論文ドロップ

このルールがないSNATとジェーンのIPアドレスが何かをTCPポート80以外のアクセスしようとしたが、原因は、UDPパケットがこのルールに一致しない彼女のIPアドレスにアクセスするとき任意のUDPサービスのアドレスをSNATとなる;ので、彼女はすべてのDNSサーバーにアクセスすることができる私たちのネットワーク外。

DNATのiptablesで

我々はDNATのは、前のシナリオと同様に継続されます。ある日、マネージャーたちは家から自分のコンピュータへのアクセスに必要な指示を呼び出します。もちろん彼女はそんなことはできない彼女のプライベートIPアドレスが192.168.1.50のために。我々は1つ私たちが彼女のオフィスのコンピュータのためにしているパブリックIPアドレスを割り当てることが決定する場合、それに対するeth0にエイリアスを作成するが、我々はいくつかのIPアドレスを失うわけじゃないけど、彼女はまた、同じにならないよう他のネットワーク。最良の解決策です 地図 パブリックIPアドレス(と言う)は彼女のオフィスのコンピュータのプライベートIPアドレス(192.168.1.50)に1.2.4.1ことができます。これは、もちろん、DNATのです:

iptablesの-トンのNAT -入り込ん次元1.2.4.1 -論文DNATを-に192.168.1.50

これを行うには次のことを、彼女とそのたびに彼女のオフィスのコンピュータに自宅から接続しようとする彼の教えを呼び出すためには、彼女は1.2.4.1に接続する必要があります。
当社のイントラネットサーバーのIPアドレスを192.168.1.100ている。金融部門から1人の人は、ブロードバンド接続しているし、もし彼が自宅からイントラネットサーバーにアクセスできることを教え求めている。彼は私たち1.2.5.17として彼のパブリックIPアドレスを与えます。我々は彼の教えは、彼のWebブラウザでは、IPアドレス1.2.4.2てみてください自宅から、我々を実行する:

iptablesの-トンのNAT -入り込ん-次元1.2.4.2 - 1.2.5.17掲載pがtcp - dportと80論文DNATの- 192.168.1.100に

我々はどこからでもイントラネットサーバーにSSHするかもしれないと思う。として、当社にとって極めて重要ですこれは非常に賢明なアイデアは、イントラネットサーバーに1つのIPアドレスをマップするためには、ではない場合は、SSHのバグが発見されると、我々は、そのサーバーしたくないハッキングされています。良いアイデアは、イントラネットサーバー上のSSHポートへの高い番号のポートをマップする(これはPATのかNAPTはです)になります。

iptablesの-トンのNAT -入り込ん次元1.2.4.2 - pがtcp - dportと65521 -論文DNATの- 192.168.1.100:22する

このようなとき、私たちのオフィスではないが、我々は、イントラネットサーバーにSSHをするには、我々 1.2.4.2ポート65521へのSSH接続を開きます。
しばらくして、我々はIPアドレス192.168.1.200を持つWebサーバーをインストールしたと仮定します。 Webサーバーwww.mycompany.whateverとポイントがDNSで1.2.4.5です。外の世界にアクセスできるようにするために、我々の実行は、次の:

iptablesの- 192.168.1.200にtのNAT -入り込ん次元1.2.4.5 - pがtcp - dportと80論文DNATを-

透過プロキシ

透過プロキシは、ユーザーがプロキシサーバーの場合でも、自分のブラウザに設定されていません使用を強制する方法です。おそらく、キャッシュされたページとアクセス制御の実施のための帯域幅を節約するプロキシサーバーを使用する利点については、(例えば、危険な拡張子を持つファイルのダウンロードを拒否)を知っている。
我々のすべてまたは一部のユーザーにプロキシをバイパスするから、いつでもしたいそれらを防ぐために、透過プロキシを実行することができます。これは、特に子供たちのコンピュータにそれらを性的に露骨なサイトへのアクセスを拒否するのが良い例です。
当社のLinuxルータでは、キャッシュには、WebサイトからいくつかのコンテンツSquidプロキシサーバーにインストールされます。また、ユーザーのためのセックスサイトや悪意のあるダウンロードへのアクセスを拒否します。ユーザーは非常に我々のプロキシサーバーの使用について満足していないが、彼らは通常、そのブラウザの設定から削除します。我々はそれらをいずれにせよ、プロキシサーバーを使用するように強制することができます。場合は、プロキシサーバーを我々は次のようになるのポート3128をリッスンします:

iptablesの-トンのNAT -入り込ん- 192.168.1.0/24掲載 - pがtcp - dportと80論文リダイレクト-にポート3128

もし我々が管理できるようにしたい(WHO)は、プロキシサーバーをバイパスするためのIPアドレス192.168.1.50は、私たちがこのような年齢:

iptablesの-トンのNAT -私入り込ん- 192.168.1.50秒-pがtcp - dportと80論文同意する

したがって、このルールは、PREROUTINGチェーンで、照合されるため、彼女は、POSTROUTINGチェインでSNATedされます。

記事は、フィリップクレア提出


免責事項:弊社のウェブサイトは、この資料の内容については責任を負いません。 Webarticles無料の情報リソースです。
重要: この記事は"iptablesでSNATを"自動ソフトウェアによって翻訳された。大変申し訳ございませんが発生した可能性があります任意のスペルミスを感じている。お客様のご理解いただき、ありがとうございます。


Online: 259 users browsing the articles directory