web-dev-qa-db-ja.com

Linuxブリッジングがパケットを転送しない

2つのイーサネットインターフェイスを備えたLinuxブリッジをセットアップしようとしていますが、正しく機能しません。私はGentooLinuxを使用していて、それは非常に簡単だと思いましたが、パケットがブリッジを通過するのに問題が発生します。 Hyper-Vで仮想化されていることはすべて、何にとっても重要です(しかし、私はそれを疑っています)。

これが私の設定です。

 ------              ------------------           --------         -----------
| NUX3 |------------|eth1  BRIDGE  eth0|---------| ROUTER |-------/ INTERNET /
 ------              ------------------           --------        -----------
192.168.1.195/24    192.168.1.197/24 (br0)     192.168.1.101/24
00:15:5d:00:01:12   00:15:5d:00:01:08 (eth0)   00:15:5d:00:01:03
                    00:15:5d:00:01:13 (eth1)       

#cat /etc/conf.d/net

bridge_br0=( "eth0 eth1" )
config_eth0=( "null" )
config_eth1=( "null" )
config_br0=( "192.168.1.197 netmask 255.255.255.0 brd 192.168.1.255" )
routes_br0=( "default via 192.168.1.101" )

#brctl show

bridge name      bridge id              STP enabled      interfaces
br0              8000.00155d000108      no               eth0
                                                         eth1

#brctl showstp br

<...>
eth0 (1)               state               forwarding
eth1 (2)               state               forwarding
<...>

#cat /etc/sysctl.conf

net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-arptables = 0
net.bridge.bridge-nf-call-iptables = 0

#ifconfig

<...>
br0    UP BROADCAST RUNNING MULTICAST
       inet addr:192.168.1.197  Bcast:192.168.1.255  Mask:255.255.255.0
<...>
eth0    UP BROADCAST RUNNING PROMISC MULTICAST
<...>
eth1    UP BROADCAST RUNNING PROMISC MULTICAST
<...>

#brctl showmacs br

port no mac addr                    is local?        ageing timer
  1     00:15:5d:00:01:03           no                   1.51
  1     00:15:5d:00:01:08           yes                  0.00
  2     00:15:5d:00:01:12           no                  36.22
  2     00:15:5d:00:01:13           yes                  0.00

BRIDGEはROUTERにpingできますが、NUX3にはpingできません。NUX3はBRIDGEにもROUTERにもpingできません。すべては私には良さそうですが、私は明らかに何かを逃しています。誰かが私にそれを教えてくれたら本当に嬉しいです!

ありがとう。

7

Hostの基盤となるネットワークデバイスで無差別モードが有効になっていない可能性があります。たとえば、VMWareでは、基盤となる仮想ネットワークアダプターが+ promiscでない場合、ゲストブリッジは惨めに失敗します-無差別モードに入ることができると思っていても、できません。

私はHyperVを使用したことがありませんが、ロジックは同じである必要があります。ホストがゲストの無差別モードへの移行を許可しない場合、ネットワークカードはアドレス指定されたフレームのみを処理するため、ブリッジはパケットをやり取りできません。特にそれに。

ブリッジを無効にすると、NUX3とルーターにpingを実行できますよね?

7
John Ewart

hyper-Vマネージャーで、ブリッジを使用するVMの設定に移動し、ブリッジの一部として使用するすべてのネットワークインターフェースの下で、[MACアドレスのスプーフィングを許可する]チェックボックスをオンにします。 Windows Server 2008r2 SP1を使用しています。それが私がそれを機能させるためにしたことです。また、すべてのHyper-VドライバーがプリインストールされているUbuntu 12.04を使用していますが、それは重要ではないと思います。

6
Clint

ブリッジは正常に機能します。

  1. 前に言ったように、MACアドレスのなりすましを有効にする必要があります
  2. 最新のカーネルでは、iptablesは実際のブリッジのルールも規定しています。したがって、構成または無効にする必要があります。ブリッジのiptablesルールを無効にするには、次のコマンドを実行します。sysctlnet.bridge.bridge-nf-call-iptables = 0
2
Roman Ivanov