再生マシンに Ubuntu 11.10 をインストールしました。また、欠陥のある NIC カードを新しい NIC カードに交換しました。インストール時に 2 つの NIC カードが認識されます。また、プロキシ サーバーとして squid もインストールしました。すべてのワークステーションがルーターに接続されている場合、squid は正常に動作します。ただし...。
1 つの NIC をルーター (ライブ インターネット接続を利用可能) に接続し、もう 1 つの NIC をスイッチ (インターネットを利用できない) に接続すると、2 つの別々のネットワークを作成できますが、2 つの NIC カード間で、また 2 つのネットワーク間でデータを転送する方法がわかりません。
- 両方のイーサネット カードをブリッジしようとしましたが、うまくいきませんでした。
- iptables を更新しようとしましたが、うまくいきませんでした。
- 両方の NIC カードを静的アドレスに設定しましたが、うまくいきませんでした。
- 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 ネットワークを認識し、パケットをそこにルーティングします。