2 つのローカル インターフェイス間でデータの転送を有効にするにはどうすればよいでしょうか?

2 つのローカル インターフェイス間でデータの転送を有効にするにはどうすればよいでしょうか?

再生マシンに Ubuntu 11.10 をインストールしました。また、欠陥のある NIC カードを新しい NIC カードに交換しました。インストール時に 2 つの NIC カードが認識されます。また、プロキシ サーバーとして squid もインストールしました。すべてのワークステーションがルーターに接続されている場合、squid は正常に動作します。ただし...。

1 つの NIC をルーター (ライブ インターネット接続を利用可能) に接続し、もう 1 つの NIC をスイッチ (インターネットを利用できない) に接続すると、2 つの別々のネットワークを作成できますが、2 つの NIC カード間で、また 2 つのネットワーク間でデータを転送する方法がわかりません。

  1. 両方のイーサネット カードをブリッジしようとしましたが、うまくいきませんでした。
  2. iptables を更新しようとしましたが、うまくいきませんでした。
  3. 両方の NIC カードを静的アドレスに設定しましたが、うまくいきませんでした。
  4. 1 つの NIC をもう 1 つをゲートウェイとして使用するように構成しましたが、うまくいきませんでした。すべて、ping されたアドレス (スイッチに関連するネットワーク) が到達不可能な宛先にあるというエラーが発生します。

何が足りないのでしょうか?

答え1

@laurent が説明したスクリプトは、標準的な方法があるため不要です。必要なのは、次の行を編集し/etc/sysctl.confてコメントを解除する (#先頭を削除する) ことだけです。

net.ipv4.ip_forward = 1

そうすれば、起動時にすでに適用されます。

答え2

Ubuntu では IP 転送がデフォルトで無効になっているため、マシンでパケットをルーティングするには IP 転送を有効にする必要があります。

有効にするには、ターミナルでルートとして次のように入力します ( sudo su):

echo 1 > /proc/sys/net/ipv4/ip_forward

注意: sudo では動作しません

また、このマシンからインターネットをルーティングする場合は、NAT も構成する必要があるかもしれません。

編集:

最初のコマンドはecho 1 ...sudo では機能しません。sudo su前に で root に変更する必要があります (sudo は echo 1 を root として実行しますが、ユーザーとしてファイルにリダイレクトしようとするため、機能しません)。 とにかく、 で 1 があるかどうかを常に確認できますcat /proc/sys/net/ipv4/ip_forward注意:これは起動のたびに実行する必要があるため、スクリプトを記述して update-rc.d を使用できます。

eth0 がインターネット接続 NIC である場合、POSTROUTING ルールは正常に見えます。

確立された接続と関連する接続に使用する FORWARD ルール:

-A FORWARD -p tcp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -p udp -m state -d your_network_ip.0/255.255.255.0 --state RELATED,ESTABLISHED -j ACCEPT

2回目の更新 - 自動スクリプト:

#!/bin/sh
# turn ip_forward on/off

case "$1" in
'start')
        echo 1 > /proc/sys/net/ipv4/ip_forward
        ;;
'stop')
        echo 0 > /proc/sys/net/ipv4/ip_forward
        ;;
*)
        echo "Usage: $0 { start | stop }"
        ;;
esac
exit 0

/etc/init.dこのスクリプトを任意の名前 (router例)でに保存し、実行可能にします ( sudo chmod +x /etc/init.d/router)。

再起動のたびに実行するには、update-rc.d で開始リンクを作成する必要があります。

sudo update-rc.d router defaults

他に確認する必要がある事項:

  • DHCPは2番目のネットワークで動作し、マシンのIPをサブネットへのデフォルトゲートウェイとして送信します。
  • デフォルトゲートウェイ(新しいサブネット内のマシンのIP)は固定IPの方が良いです
  • 2 番目の NIC に ping できないとコメントされていますが、どこからですか? サブネットですか、ルーターに直接接続されているマシンですか?
  • マシンに squid がインストールされていますか? 新しいサブネットを含めるように設定を変更しましたか? squid が必要ですか? 設定はそれほど簡単ではなく、追加機能が必要ない場合は、squid がなくてもインターネットとネットワークを共有できます。

注意: update-rc.d メッセージは OK です。問題はありません。ip_forward ファイルには常に 1 が入るはずです。

答え3

私はこのアドバイスを試してみましたが、ここでは説明されていない問題に遭遇しました。次のコンピューターは、最後のコンピューターに戻る方法を知っている必要があるのです。

私の場合、2 つのネットワークがあります。WiFi ネットワーク 192.168.1.0/24 と Ethernet ネットワーク 192.168.40.0/24 です。私の「ルーター」は、192.168.1.0/24 の WiFi トランシーバーと 192.168.40.0/24 ネットワークの Ethernet インターフェイスの両方を備えたラップトップです。家庭用ルーターにも WiFi トランシーバーと Ethernet インターフェイスがありますが、この Ethernet トランシーバーはインターネットに接続します。家庭用ルーターにはネットワーク アドレス変換 (NAT) もあります。家庭用ルーターにはルーティング テーブルがあり、そのルーティング テーブルには、通常はインターネット サービス プロバイダー (ISP) のルーターを指すデフォルト ルート エントリがあります。

192.168.40.0/24 ネットワーク上のコンピュータがインターネット上のコンピュータにパケットを送信したい場合、コンピュータは自身のルーティング テーブルを参照し、デフォルト ゲートウェイがラップトップの 192.168.40.1 であることを認識します。パケットがラップトップに到着すると、自身のルーティング テーブルを参照し、パケットを家庭用ルーターに転送します。家庭用ルーターはルーティング テーブルを参照し、ネットワーク アドレス変換 (この説明では無視できる詳細) を経て、ISP のルーターに転送します。ある時点で、宛先マシンは私のコンピュータにパケットを送信します。パケットは家庭用ルーターに到着し、リバース NAT を経て、ルーティングされる必要があります。パケットが NAT から出てくると、宛先 IPv4 アドレスは 192.168.40.0/24 ネットワークになります。この時点で問題が発生しました。家庭用ルーターはイーサネット ネットワーク 192.168.40.0/24 を認識していなかったのです。つまり、そのパケットをデフォルト ルータ、つまり ISP のルータに転送するという、本来の動作を実行したことになります。

この問題を解決するには、家庭用ルーターのルーティング テーブルにエントリを作成し、192.168.40.0/24 ネットワーク内の任意のコンピューターにアクセスするには、パケットをラップトップの WiFi アドレス (192.168.1.0/24) に送信するように指示する必要がありました。これで、パケットがラップトップに到着すると、ラップトップは 192.168.40.0/24 ネットワークを認識し、パケットをそこにルーティングします。

関連情報