在Linux中有线连接到无线网桥


17

我正在尝试使用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 

(路由器)-这可行

尝试与无线局域网关联...失败(或者在Android手机上“连接受限”)-不好)

brctl showmacs br0

这仅显示了wlan0的mac和手机的mac

brctl addif br0 eth0 wlan0

现在,我可以将手机与无线网络关联了,但是...

ping 192.168.62.1

...失败

同样,我无法再从网络上的任何其他计算机ping RasPi

跑步

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

对于超级用户,这绝对是主题,因此无需担心。祝您好运,我很想知道答案也很好。
突破

是什么iw dev wlan0 info节目?在您的设备ID上使用Google搜索会显示您需要最新的内核或无线模块才能在AP模式下运行该设备。看到这个ath9k您正在运行什么内核和驱动程序?
gertvdijk 2012年

Answers:


10

桥梁变得容易:

在sourceforge上有一个专为您的情况而设计的项目。http://sourceforge.net/projects/bridger/它甚至是作为deb软件包提供的。

关于“丢弃”数据包:

  1. 您是否检查过iptables是否设置为默认丢弃? sudo iptables --list 对于这种类型的盒子,应该说“接受,接受,接受”。如果那是问题,请将其关闭。

  2. 你甚至在转发数据包吗,兄弟?确保/etc/sysctl.conf中没有注释行“ net.ipv4.ip_forward = 1”(默认情况下),然后重新启动网络。

  3. 无线加密狗不支持混杂模式。(这意味着它不能接受非预定的数据包)

纯桥与共享桥:

  1. iface br0 inet dhcp表示共享网桥,这意味着网桥本身会获得ip,并且可以作为流量的终结点。

  2. 纯网桥不获取IP地址,仅在两个接口之间转发流量

  3. 共享网桥示例/ etc / network / interfaces配置文件(Debian / Ubuntu)

#此文件描述了系统上可用的网络接口
#以及如何激活它们。有关更多信息,请参见interfaces(5)。

#环回网络接口
自动搜索
iface lo inet回送

#eth0和wlan0之间的桥梁
自动br0
iface br0 inet dhcp
  前置ip链接将eth0设置为down
  前置ip链接将wlan0设置为down
  预配置brctl addbr br0
  pre-up brctl addif br0 eth0 wlan0
  前置ip addr flush dev eth0
  pre-up ip addr flush dev wlan0
  post-down ip链接将eth0设置为down
  后下ip链接将wlan0设置为下
  后置ip链接将br0设置为down
  下向下brctl delif br0 eth0 wlan0
  下向下brctl delbr br0

重新启动网络:sudo /etc/init.d/networking restart进行复杂的网络配置更改后,只需重新启动,而不是确保在重新启动后一切都正确地重新启动就容易了。

您认为自己存在路由问题:

  1. 通过使用进行测试,消除DNS原因ping 8.8.8.8。如果可行,则您的网络中可能存在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. 更新您共享桥IPdhclient br0和复试用ping 8.8.8.8

  4. 使用检查您的“从”接口ifconfig并确保eth0和wlan0没有IP地址。他们现在是桥梁的一部分。如果确实如此,请确保将其从所有配置文件中删除,并将其设置为静态0.0.0.0或其他。

如果以上方法均无效,请尝试使用该Debian桥接应用程序,如果该方法无效,则您的无线加密狗不支持混杂模式。(往上看)

如果在这里随时可以使用,请重新启动并确保它仍然可以使用。


请查看interfaces文件的最新更新,是的,所有链都设置为ACCEPT
adrianmcmenamin 2012年

这些指令有效,至少在某种意义上说,如果我应用dhclient br0并指定eth0锁定为0.0.0.0,现在只需要弄清楚如何使其自动:)
adrianmcmenamin 2012年

好的,我通过rc.local脚本启动并运行了一个有点混乱的扑克(基本上我必须重新启动hostapd)-这样您就可以得到赏金。但是现在我在同一个盒子上的鱿鱼服务器出现了故障-但是我没有问过这个,所以这将是另一个问题。
adrianmcmenamin 2012年


此示例中的eth0wlan0设置是什么?具体来说,如何设置SSID和任何身份验证wlan0
2014年

6

我在Debian Linux和Openwrt上有一些无线网桥,所以我对这个问题非常熟悉。

您错过了一个重要的命令:您忘记了告诉无线驱动程序传输4地址帧(有时不正确/历史上称为WDS),这是802.11 /无线桥接所必需的。使用命令“ iw dev wlan0 set 4addr on”执行此操作。在启动网桥之前,在网桥上的Debian接口文件中使用“ pre-up”语句将其应用。请注意,四地址帧模式需要驱动程序支持,某些老旧的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地址(将“ dhcp”替换为“ manual”(无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中目前存在一个竞赛错误,其中桥接口可能在启动时无法启动,但这是另一个问题。


3

您似乎需要IP转发。

尝试 cat /proc/sys/net/ipv4/ip_forward

如果有0问题:echo 1 > /proc/sys/net/ipv4/ip_forward


sys.net.ipv4.ip_forward用于IPv4路由,NAT等。网桥在网络堆栈的下面一层工作。
Thomas Guyot-Sionnest'7

0

只有当接口接收到所有数据包时,桥接才起作用,否则它们将只能看到发给它们的数据包。您当前的设置可能描述了路由器的配置,但是没有描述网桥。

eth0和wlan0应该没有IP地址(意味着0.0.0.0),并且如果需要,可以始终为br0使用IP地址。

这里也有一些官方文档:http : //wiki.debian.org/BridgeNetworkConnections


1
我知道这是一篇过时的文章,但是由于我是在搜索其他内容时发现的,所以我想提一下,就桥接而言,网桥接口是否具有IP地址并不重要。在Linux上,桥接接口还将中继ARP数据包(OSI第2层)。任何交换机都将映射连接到网桥另一侧的多个设备作为该交换机端口上可接受的映射。我的参考经验是将Linux服务器用作路由器,网桥,防火墙等,以在顶级数据中心中进行高可用性部署的经验,其中包括用于美国的一个主要美国NAP
jetole 2016年

0

配置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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.