web-dev-qa-db-ja.com

Linuxでワイヤレスブリッジに有線接続

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
17
adrianmcmenamin

ブリッジを簡単に:

あなたの状況のた​​めだけに作られたsourceforgeのプロジェクトがあります。 http://sourceforge.net/projects/bridger/ debパッケージとしても提供されます。

「ドロップ」パケットに関して:

  1. iptablesがデフォルトのドロップに設定されているかどうかを確認しましたか?Sudo iptables --listは、このボックスに対して「ACCEPT、ACCEPT、ACCEPT」と言う必要がありますタイプ。それが問題である場合は、オフにします。

  2. パケットを転送していませんか?「net.ipv4.ip_forward = 1」の行が/etc/sysctl.confでコメント化されていないことを確認してください(デフォルト)、ネットワークを再起動します。

  3. 無差別モードはワイヤレスドングルではサポートされていません。 (それが宛先になっていないパケットを受け入れることができないことを意味します)

Pure BridgeとShared Bridgeの比較:

  1. iface br0 inet dhcpは、sharedブリッジを示します。つまり、ブリッジ自体がIPを取得し、トラフィックのエンドポイント。

  2. 純粋なブリッジはIPアドレスを取得せず、2つのインターフェース間でトラフィックを転送するだけです

  3. 共有ブリッジサンプル/ 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複雑なネットワーク構成変更を行った後は、再起動ですべてが正しく再起動することを確認するよりも、再起動する方が簡単です。

ルーティングの問題があると思います:

  1. ping 8.8.8.8を使用してテストすることにより、原因としてDNSを排除します。これが機能する場合は、おそらくネットワークにDNSの問題があります。

  2. 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

  3. dhclient br0で共有ブリッジipを更新し、ping 8.8.8.8で再テストします

  4. ifconfigを使用して「スレーブ」インターフェースを確認し、eth0とwlan0にIPアドレスがないことを確認してください。彼らは今橋の一部です。もしそうなら、それらをすべての設定ファイルから削除し、それらを静的0.0.0.0か何かに設定してください。

どれも動作しない場合は、そのdebianブリッジアプリを試してください。動作しない場合は、ワイヤレスドングルが無差別モードをサポートしていません。 (上記を参照)

ここでいつでも機能する場合は、再起動して、引き続き機能することを確認してください。

10
MattPark

私は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

3
CSᵠ

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
0
netawater

ブリッジングは、インターフェイスがすべてのパケットを受信した場合にのみ機能します。それ以外の場合は、それらだけにアドレス指定されたパケットが表示されます。現在のセットアップでは、ルーターの構成が記述されている可能性がありますが、ブリッジの構成は記述されていません。

eth0とwlan0にはIPアドレス(0.0.0.0を意味する)を含めないでください。必要に応じて、常にbr0にIPアドレスを使用することもできます。

こちらも公式のドキュメントです: http://wiki.debian.org/BridgeNetworkConnections

0
John Wilcox