Debian wheezyを使用して、Raspberry Piをブリッジとしてセットアップしようとしています。 hostapd.conf
:(セキュリティのために一部の詳細が変更されました。そうです、WEPは良くないと知っています)...
interface=wlan0
bridge=br0
driver=nl80211
auth_algs=1
macaddr_acl=0
ignore_broadcast_ssid=0
logger_syslog=-1
logger_syslog_level=0
hw_mode=g
ssid=MY_SSID
channel=11
wep_default_key=0
wep_key0=MY_KEY
wpa=0
そしてこれは/etc/network/interfaces
:
auto lo
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
iface wlan0 inet manual
wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
auto br0
iface br0 inet dhcp
bridge-ports eth0 wlan0
何も問題はないようですが、USBスティックの点滅するライトがパケットの交換を示唆しているにもかかわらず、ブリッジされたワイヤレス接続に関連付けることができません。
すべてのカード/デバイスがhostapモードで実行されるわけではないことをどこかで読みました-それらは一方向にパケットを渡さないでしょう:それで正しいですか? (情報は少し古いものでした)-この私のカード:
[ 3.663245] usb 1-1.3.1: new high-speed USB device number 5 using dwc_otg
[ 3.794187] usb 1-1.3.1: New USB device found, idVendor=0cf3, idProduct=9271
[ 3.804321] usb 1-1.3.1: New USB device strings: Mfr=16, Product=32, SerialNumber=48
[ 3.816994] usb 1-1.3.1: Product: USB2.0 WLAN
[ 3.823790] usb 1-1.3.1: Manufacturer: ATHEROS
[ 3.830645] usb 1-1.3.1: SerialNumber: 12345
だから、私はここで何が間違っているのですか?
更新:それで、私はさらなる調査を行い、ブリッジを立ち上げることができますが、それは(有線の)イーサネット接続を破壊するようです、これは奇妙です。例:RPi:
システムを起動します...
ping 192.168.62.1
(ルーター)-これは機能します
無線LANとの関連付けを試みますが失敗します(またはAndroid電話-良くない)で "接続が制限されています")
brctl showmacs br0
これは、この時点でwlan0のmacと電話のmacを示しています。
brctl addif br0 eth0 wlan0
この時点で、電話をワイヤレスネットワークに関連付けることができますが、...
ping 192.168.62.1
...失敗
同様に、ネットワーク上の他のマシンからRasPiにpingすることはできません。
ランニング
ifconfig br0
ブリッジがパケットをドロップしていることを示唆しています...
何か案は?
さらに更新:/etc/network/interfaces
ファイルを(上記のシーケンスでは)読み取ります。
auto lo eth0
iface lo inet loopback
iface eth0 inet dhcp
allow-hotplug wlan0
#wpa-roam /etc/wpa_supplicant/wpa_supplicant.conf
iface default inet dhcp
ブリッジを簡単に:
あなたの状況のためだけに作られたsourceforgeのプロジェクトがあります。 http://sourceforge.net/projects/bridger/ debパッケージとしても提供されます。
「ドロップ」パケットに関して:
iptablesがデフォルトのドロップに設定されているかどうかを確認しましたか?Sudo iptables --list
は、このボックスに対して「ACCEPT、ACCEPT、ACCEPT」と言う必要がありますタイプ。それが問題である場合は、オフにします。
パケットを転送していませんか?「net.ipv4.ip_forward = 1」の行が/etc/sysctl.confでコメント化されていないことを確認してください(デフォルト)、ネットワークを再起動します。
無差別モードはワイヤレスドングルではサポートされていません。 (それが宛先になっていないパケットを受け入れることができないことを意味します)
Pure BridgeとShared Bridgeの比較:
iface br0 inet dhcpは、sharedブリッジを示します。つまり、ブリッジ自体がIPを取得し、トラフィックのエンドポイント。
純粋なブリッジはIPアドレスを取得せず、2つのインターフェース間でトラフィックを転送するだけです
共有ブリッジサンプル/ etc/network/interfaces設定ファイル(Debian/Ubuntu)
#このファイルは、システムで使用可能なネットワークインターフェイス #とそれらをアクティブにする方法を説明します。詳細については、interfaces(5)を参照してください。 #ループバックネットワークインターフェイス auto lo iface lo inet loopback #eth0とwlan0の間のブリッジ auto br0 iface br0 inet dhcp pre-up ip link set eth0 down pre-up ip link set wlan0 down pre-up brctl addbr br0 pre-up brctl addif br0 eth0 wlan0 pre-up ip addr flush dev eth0 pre-up ip addr flush dev wlan0 ポストダウンIPリンクセットeth0ダウン ポストダウンIPリンクセットwlan0ダウン ポストダウンIPリンクセットbr0ダウン ポストダウンbrctl delif br0 eth0 wlan0 ポストダウンbrctl delbr br0
ネットワークを再起動します:Sudo /etc/init.d/networking restart
複雑なネットワーク構成変更を行った後は、再起動ですべてが正しく再起動することを確認するよりも、再起動する方が簡単です。
ルーティングの問題があると思います:
ping 8.8.8.8
を使用してテストすることにより、原因としてDNSを排除します。これが機能する場合は、おそらくネットワークにDNSの問題があります。
Sudo ip route
でゲートウェイを確認してくださいdefault via 192.168.1.1 dev br0 proto dhcp
が表示されます(ゲートウェイが192.168.1.1であると想定しています)。存在しないか間違っている場合は、Sudo ip route add default via 192.168.1.1
を修正してください。もう一度テストしてください:ping 8.8.8.8
dhclient br0
で共有ブリッジipを更新し、ping 8.8.8.8
で再テストします
ifconfig
を使用して「スレーブ」インターフェースを確認し、eth0とwlan0にIPアドレスがないことを確認してください。彼らは今橋の一部です。もしそうなら、それらをすべての設定ファイルから削除し、それらを静的0.0.0.0か何かに設定してください。
どれも動作しない場合は、そのdebianブリッジアプリを試してください。動作しない場合は、ワイヤレスドングルが無差別モードをサポートしていません。 (上記を参照)
ここでいつでも機能する場合は、再起動して、引き続き機能することを確認してください。
私はDebian LinuxとOpenwrtで動作しているワイヤレスブリッジをいくつか持っているので、この問題に非常に精通しています。
重要なコマンドの1つを見逃しました。802.11/ワイヤレスブリッジングに必要な4アドレスフレーム(不適切または歴史的にWDSと呼ばれることもあります)を送信するようにワイヤレスドライバーに指示するのを忘れていました。コマンド「iw dev wlan0 set 4addr on」でこれを行います。ブリッジを起動する前に、ブリッジのDebianインターフェースファイルで「pre-up」ステートメントを使用して適用します。 4アドレスフレームモードにはドライバーサポートが必要であり、一部の古いcrappy 802.11ドライバーまたはハードウェアではサポートされていない場合があります。
また、特にブリッジインターフェイスに影響するLinuxカーネルのバグによって問題が複雑になっているのではないかと強く疑っています。私は自分でこのバグに遭遇し、Debianのバージョンが古くて影響を受けているため、ソースから自分のwpa_supplicantをコンパイルする必要がありました。 wpa_supplicantとhostapdは共通のコードベースを共有しますが、これがhostapdとwpa_supplicantに影響したかどうかは完全にはわかりません。
ここに問題への回避策のコミットがあります:
https://w1.fi/cgit/hostap/commit/?id=e6dd8196e5daf39e4204ef8ecd26dd50fdca604
私はこれが2.5リリースにあるという印象を受けており、現在の2.6ソースにあることを知っています。現在のDebianバージョンは2.4ですが、壊れています。 Debianプロジェクトを苦労して、wpasupplicantおよびhostapdパッケージを更新してください。
次に、インターフェースwlan0とeth0の間のワイヤレスブリッジでWPA/WPA2を使用するワイヤレスブリッジクライアントの構成例を示します。ホストはbr0インターフェイスのDHCPアドレスを取得します(「dhcp」をIPアドレスなしの「手動」に置き換えます)。 APになりたい場合は、hostapd.confにinterface =およびbridge =コマンドを含め、以下のwpa- *コマンドを省略します。
/ etc/network/interfacesファイルで:
allow-auto br0
iface br0 inet dhcp
bridge_ports wlan0 eth0
bridge_stp off
bridge_waitport 5
bridge_fd 0
wpa-ssid mynetwork
wpa-psk abc123abc123abc123abc123abc123abc123abc123abc123abc123abc123
wpa-iface wlan0
wpa-bridge br0
pre-up iw dev wlan0 set 4addr on
post-down iw dev wlan0 set 4addr off
また、wpa_supplicantがバージョン2.5以降であることを確認してください。 wpa_supplicant 2.4および現在のカーネルバージョンでは動作しません。
また、現在ifupには、ブート時にブリッジインターフェイスが起動しないというレースバグがあることにも注意してください。ただし、それはまったく別の問題です。
IP転送が必要なようです。
cat /proc/sys/net/ipv4/ip_forward
もし 0
問題: echo 1 > /proc/sys/net/ipv4/ip_forward
wlan0を構成する
vi/etc/network/interface
iface eth0 inet static
address 192.168.2.1
network 192.168.2.0
netmask 255.255.255.0
broadcast 192.168.2.255
vi /etc/sysctl.conf
net.ipv4.ip_forward=1
vi /etc/rc.local
iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -o wlan0 -j MASQUERADE
ブリッジングは、インターフェイスがすべてのパケットを受信した場合にのみ機能します。それ以外の場合は、それらだけにアドレス指定されたパケットが表示されます。現在のセットアップでは、ルーターの構成が記述されている可能性がありますが、ブリッジの構成は記述されていません。
eth0とwlan0にはIPアドレス(0.0.0.0を意味する)を含めないでください。必要に応じて、常にbr0にIPアドレスを使用することもできます。
こちらも公式のドキュメントです: http://wiki.debian.org/BridgeNetworkConnections