adr*_*min 18 linux wireless-networking bridge raspberry-pi
我正在尝试使用 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
Run Code Online (Sandbox Code Playgroud)
这在/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
Run Code Online (Sandbox Code Playgroud)
一切似乎都正常,但我无法与桥接无线连接相关联 - 即使 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
Run Code Online (Sandbox Code Playgroud)
那么,我在这里做错了什么?
更新:所以我做了进一步的调查,可以把桥架起来,但似乎破坏了(有线)以太网连接,这很奇怪。例如,在 RPi 上:
启动系统...
ping 192.168.62.1
Run Code Online (Sandbox Code Playgroud)
(路由器) - 这有效
尝试与无线局域网关联……失败(或者说在 Android 手机上“连接受限” - 不好)
brctl showmacs br0
Run Code Online (Sandbox Code Playgroud)
此时只显示 wlan0 的 mac 和手机的 mac
brctl addif br0 eth0 wlan0
Run Code Online (Sandbox Code Playgroud)
此时我现在可以将手机与无线网络关联,但是...
ping 192.168.62.1
Run Code Online (Sandbox Code Playgroud)
...失败
同样,我无法再从网络上的任何其他机器 ping RasPi
跑步
ifconfig br0
Run Code Online (Sandbox Code Playgroud)
表明网桥正在丢弃数据包...
有任何想法吗?
进一步更新:/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
Run Code Online (Sandbox Code Playgroud)
Mat*_*ark 11
桥梁变得容易:
sourceforge 上有一个专为您的情况而设计的项目。http://sourceforge.net/projects/bridger/它甚至是一个 deb 包。
关于“丢弃”数据包:
您是否检查过 iptables 是否设置为默认丢弃? sudo iptables --list 对于这种类型的盒子,应该说“接受,接受,接受”。如果这是问题,请将其关闭。
你甚至转发数据包吗,兄弟?确保 /etc/sysctl.conf 中没有注释“net.ipv4.ip_forward=1”行(默认情况下),然后重新启动网络。
您的无线加密狗不支持混杂模式。(意味着它不能接受不适合它的数据包)
纯桥与共享桥:
iface br0 inet dhcp表示共享网桥,这意味着网桥本身获得一个 ip 并且可以作为流量的端点。
纯网桥不获取ip地址,只转发两个接口之间的流量
共享桥示例 /etc/network/interfaces 配置文件 (Debian/Ubuntu)
# 该文件描述了系统上可用的网络接口 # 以及如何激活它们。有关详细信息,请参阅接口 (5)。 #环回网络接口 自动低速 iface lo inet环回 # eth0 和 wlan0 之间的桥梁 自动 br0 iface br0 inet dhcp pre-up ip link set eth0 down pre-up ip link set wlan0 down pre-up brctl addbr br0 预 brctl addif br0 eth0 wlan0 pre-up ip addr 刷新 dev eth0 pre-up ip addr flush dev wlan0 post-down ip link set eth0 down post-down ip link set wlan0 down post-down ip link set br0 down post-down brctl delif br0 eth0 wlan0 后降 brctl delbr br0
重新启动网络:sudo /etc/init.d/networking restart在进行复杂的网络配置更改后,重新启动更容易,而不是确保在重新启动时一切正常重新启动。
你认为你有路由问题:
排除DNS的原因与测试ping 8.8.8.8。如果这有效,那么您的网络中可能存在 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
更新您共享桥IP与dhclient br0和复试用ping 8.8.8.8
检查你的“奴隶”接口与ifconfig和确保eth0和为wlan0没有IP地址。他们现在是桥梁的一部分。如果是这样,请确保从所有配置文件中删除它们,将它们设置为静态 0.0.0.0 或其他内容。
如果这些都不起作用,请尝试使用 debian 桥接应用程序,如果不起作用,则您的无线加密狗不支持混杂模式。(看上面)
如果它在这里任何时候都有效,请重新启动并确保它仍然有效。
小智 6
我有一些在 Debian Linux 和 Openwrt 上工作的无线网桥,所以我对这个问题非常熟悉。
您错过了一个重要命令:您忘记告诉您的无线驱动程序传输 4 地址帧(有时不正确/历史上称为 WDS),这是 802.11/无线桥接所必需的。使用命令“iw dev wlan0 set 4addr on”执行此操作。在启动桥之前,在桥上的 Debian 接口文件中使用“pre-up”语句来应用它。请注意,4 地址帧模式需要驱动程序支持,而一些旧的蹩脚 802.11 驱动程序或硬件可能不支持它。
我还强烈怀疑您的问题可能因 Linux 内核中的一个错误而变得复杂,该错误特别影响桥接接口。我自己遇到了这个错误,不得不从源代码编译我自己的 wpa_supplicant,因为 Debian 中的版本很旧并且受到影响。wpa_supplicant 和 hostapd 共享一个共同的代码库,但我不完全确定这会影响 hostapd 和 wpa_supplicant。
这里有一个解决问题的提交:
https://w1.fi/cgit/hostap/commit/?id=e6dd8196e5daf39e4204ef8ecd26dd50fdca6040
我的印象是这是在 2.5 版本中,我知道它在当前的 2.6 源中。当前的 Debian 版本是 2.4,已损坏。请纠缠 Debian 项目以更新他们的 wpasupplicant 和 hostapd 包。
这是使用 WPA/WPA2 的无线网桥客户端的示例配置,在接口 wlan0 和 eth0 之间有一个无线网桥,主机在 br0 接口上获得 DHCP 地址(如果没有 IP 地址,请将“dhcp”替换为“manual”)。对于您想要成为 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
Run Code Online (Sandbox Code Playgroud)
并确保您的 wpa_supplicant 版本为 2.5 或更高版本。它不适用于 wpa_supplicant 2.4 和当前内核版本。
我还应该指出,目前 ifup 中存在一个竞争错误,其中桥接接口可能无法在启动时出现,但这是另一个问题。
| 归档时间: |
|
| 查看次数: |
33268 次 |
| 最近记录: |