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
終わり。