3 つのネットワーク (1 つはインターネット) 間のルーターとしての Linux

3 つのネットワーク (1 つはインターネット) 間のルーターとしての Linux

XX3.0 と XX4.0 の 2 つのネットワーク間をルーティングする Linux ボックスがあり、これらのネットワークをインターネットに接続できるようにしたいと考えています。

読みましたここ@Kevin の素晴らしい回答によると、これを実現するには NAT、つまり iptables を使用する必要がありますが、現在私のサーバーは iptables を使用していないため、それを有効にするには適切なコマンドを見つける必要があります。

私のネットワークは次のように説明できます: Internet <-(eth0) Linux Router <-[1](eth1) 192.168.3.0 <--[2](eth2) 192.168.4.0 eth2 はルーターに直接接続されています。

2 つのローカル ネットワークは相互に通信できますが、パブリック IP アドレスに ping を実行することすらできません。.3.x ネットワーク内の 1 台のマシンのパブリック IP アドレスに ping コマンドを発行するときに、ルーターでパケットをスニッフィングしようとしましたが、私の知る限り、問題が発生しているようです。3.x IP アドレスを持つマシンに関する eth0 int の ARP 要求が無限に続くようです。ルーターでも NAT のように動作するようにする必要があるようです。検索しましたが、iptables で発行する必要がある正しいコマンドがわかりませんでした。ただし、前述のコマンドは試しました。ここそしてここ. 私は iptables をまったく使用せずに 2 つのローカル ネットワーク間をルーティングする機能を持っていましたが、iptables は必要ないので、iptables なしで NAT を行うことが不可能でない限り (その場合は他のプログラムよりも iptables を好みます)、使用しないことを好みます。

質問をまとめると、1. 3 つのネットワークすべてが相互に通信できるようにする必要があります。2. iptables (可能であれば) やその他の追加プログラムは使用しないことをお勧めします。3. 以上です。

ありがとう。

答え1

2 つのローカル ネットワークが相互に通信できるということは、ip_forward が有効になっていることを意味します。ローカル ネットワークがパブリック IP アドレスを ping できない場合は、マスカレードを行う必要があることを意味します。

この Linux ボックスからパブリック IP アドレスに ping できますか? できない場合は、他の問題があるはずです。おそらく、ルーターをブリッジ モードで設定する必要があります (推測にすぎません)。

Linux マシンがパブリック IP に ping でき、eth0 にパブリック IP が設定されていると想定します。したがって、内部ネットワーク マシンはプライベート IP アドレスを使用してインターネットの外部に接続できないため、NAT を実行する必要があります。iptables は非常に簡単なので、使用してみてください。

iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

システムに iptables がインストールされていない場合は、デフォルトで何らかのファイアウォールがインストールされている必要があります。どのディストリビューションを使用していますか?

答え2

プライベート IP アドレスはインターネットでの使用には無効であり、ルーティングできません。ローカルでのみ使用できます。

インターネット アクセスを有効にするには、IP 転送を有効にする必要があります。これは、説明からわかるように、すでに実行されているようです。次に、NAT を使用する必要があります。ほとんどの場合、ISP が NAT を実行します。これは、接続タイプと割り当てられた IP に応じて変わる可能性があります。

ツールに関しては、Linux でこれを行うには iptables よりも優れたツールはないと思います。

答え3

いくつか調査し、皆さんからのアドバイスを参考にして、iptable が NAT (マスカレード) を実行する最良の方法であるという結論に達しました。そこで、次のように実行しました。

#現在の iptables 設定をすべてフラッシュします:

$>iptables -Fそして $>iptables -t nat -F

次に、ローカル ネットワーク間で ping を試します。iptables のデフォルトで動作するはずですが、次のように入力しない場合は、次のように入力します。

$>iptables -P INPUT ACCEPT

$>iptables -P FORWARD ACCEPT

$>iptables -P OUTPUT ACCEPT

次に、@Sachin Divekar の上記のコマンドを発行します (ethX をインターネット接続のインターフェースに置き換えます)。

$>iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

テストすると、動作するはずです。次に、この設定を次のように保存します。

$>iptables-save > /etc/sysconfig/iptables

終わり。

関連情報