在Ubuntu上将Wifi桥接到以太网无法正常工作


22

当运行Windows时,我能够通过笔记本电脑的以太网连接桥接我的wifi连接,因此只有一系列以太网设备才能支持我的wifi(Raspberry Pi,Xbox等)。我现在正在尝试在Ubuntu中执行相同的操作,即设置为:

无线路由器--->笔记本电脑上的Wifi --->桥接到以太网--->需要将Internet连接到以太网端口的设备

现在我一直在尝试使用brctl在Ubuntu中工作

我使用以下命令:

sudo brctl addif br0 eth0 wlan0

并得到以下错误:

can't add wlan0 to bridge br0: Operation not supported

我希望有人能提供帮助,因为我拒绝相信我可以在Windows中轻松完成的工作无法在Linux中完成。

如果您需要更多信息,请告诉我。谢谢


非常类似的问题在[处理askubuntu.com/questions/155041/...
Legionair

Answers:


10

无法做到这一点。您无法桥接WiFi客户端连接。如果可以的话,我们将不需要WDS,只需桥接即可。

问题非常简单-WiFi规范禁止访问点通过WiFi网络广播流量,除非获得授权进行传输。这是WiFi网络非常缓慢且安全性差(如果有的话)时代的遗物。

桥接器仅具有到接入点的客户端连接。这仅授权接入点传输绑定到网桥的流量。由于连接到网桥的任何计算机都不是访问点的客户端,因此访问点没有理由通过WiFi链接发送绑定到它们的流量。因此它不会这样做。

不幸的是,WiFi就像以太网一样足够,很容易期望它像以太网一样起作用。但这足以咬你。

WDS配置是对访问点的特定授权,该访问点可以发送不受任何客户端限制的流量。当两端都支持WDS时,它们将包括桥接端点的地址以及目的地的地址,从而授权访问点发送流量。

您必须使用桥接以外的方法来执行此操作。例如,使用NAT进行路由。如果WiFi链接的两端都支持,则也可以使用四个地址模式。


3
您可以通过使用ebtables
重写

我注意到这里有人说您可以在ubuntu中进行操作。我也已经在Windows中完成了类似的操作。尽管您说这是不可能的,所以也许您可以解释一下这之间的区别。在Windows中,当您执行此youtube.com/watch?v=96Z1_6rX5qU WiFi连接到互联网时。以太网连接器中没有电缆..或以太网连接器中其他组件的电缆。然后选择WiFi适配器和以太网适配器,将它们桥接起来,然后另一台计算机可以插入其电缆并使用Internet连接。我认为笔记本电脑仍然是WiFi客户端(而不是接入点)
barlop 2015年

1
@DavidSchwartz如果某人的笔记本电脑没有正常工作的无线功能,并且没有网络开关可将其插入互联网,但是另一台笔记本电脑具有无线互联网访问权限,则没有多余的无线USB记忆棒。那么看来唯一的解决方案就是弥合伪造。如果两台笔记本电脑都具有正常工作的无线网络适配器,则它们都可以只连接到主要的无线访问点,而无需额外的访问点和WDS。
barlop 2015年

1
不正确 对于初学者来说,WDS是WiFi连接,与其他连接不同。其次,这些称为客户端桥接器或媒体桥接器的可爱设备通过AP连接并透明桥接3-5个有线插孔(可以是集线器等)。可以肯定的是,这些装置的工作方式和他们可以桥接多少个MAC,但是最终...有一种方法。地狱,如果您通过iw命令在设备上将4addr设置为模式,那么即使Linux也会允许您将WDS模式用作STA,而驱动程序则允许您这样做。您可以桥接...只是...附带条件。
Svartalf

1
@DavidSchwartz:路由?认真吗 这是一个提示。该应用程序在网络中可以有500多个节点。您可以通过这种方式使路由正常运行吗?“真正的WDS”?我可以放心,它将与Cisco,Aruba,Ubiquiti和其他公司一起使用吗?如果是这样,那么是...如果不是...前提是一个开箱即用的问题。我已经使其与WDS-Station模式下的疯狂工作相当不错...但是它可以与hostapd或类似的衍生Linux设备之外的其他设备一起工作吗?
斯瓦尔塔尔夫

3

LXC也有类似的问题,我解决了wifi设备中的桥接问题。首先,您在计算机中需要一个备用的以太网设备。诀窍是创建从以太网设备到wifi的路由。

在服务器文件中,更改/ etc / network / interfaces,为您的虚拟主机选择一个未使用的网络,即10.0.0.0。为您的备用以太网接口分配一个IP,这里是eth0,像这样桥接它:

auto br0
iface br0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    bridge_ports eth0
    bridge_fd 0
    bridge_maxwait 0

完成后,您可以按照Kostyantyn之前在此处回答的MASQUERADE方式进行操作。这些应该位于rc.local或必须在启动时或启动虚拟域之前运行的脚本中:

# iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
# echo "1" > /proc/sys/net/ipv4/ip_forward

在虚拟服务器中,在/ etc / network / interfaces中配置静态IP。我正在使用网络10.0.0.0,我将从.2开始使用,当您创建更多虚拟主机时,您可能会使用3,依此类推。如果您有很多,可以考虑为这些服务器安装dhcp服务器。如前所述,.1是网关。

auto eth0
iface eth0 inet static
    address 10.0.0.2
    netmask 255.255.255.0
    broadcast 10.0.0.255
    gateway 10.0.0.1

在/etc/resolv.conf中还配置一个DNS服务器,我的是网络路由器:

nameserver 192.168.1.1

希望这可以帮助


这是第3层欺骗,不是真正的“桥接”-在使用iptables的那一刻,您正在路由。
斯瓦尔塔夫夫

0

我认为您真正需要的不是桥梁,而是:

  • SNAT(如果WLAN具有静态IP)(请参阅本页

要么

  • 伪装(如果WLAN具有动态IP,即IP更改)

1)创建forwarding_enable_file.sh具有以下内容:

#!/bin/bash
echo "1" > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE

2)运行文件:

sudo ./forwarding_enable_file.sh

3)在主机的其余部分,将您的Ubuntu框指定为网关注意:如果某些框也运行Linux,则可以使用以下命令进行操作:

sudo ip route add default via ubuntu-ip

这里的ubuntu-IP应该由你的Ubuntu箱IP地址替换,即192.168.1.10

4)尝试从其他主机ping一些IP,即8.8.8.8:

ping 8.8.8.8

5)通过ping某些域来检查DNS设置,即:

ping slivkoed.ru

6)如果步骤4)有效,而5)无效,则说明DNS设置存在问题。在这种情况下,请以root特权运行:

# echo "nameserver 8.8.8.8" > /etc/resolv.conf

再次运行步骤5)。

有关resolv.conf的更多信息,请参见此处


取决于您的需求。如果您需要透明的(波浪状的手),不,您不需要。说真的 您需要通过Trendnet退役的TEW640-MB媒体桥(连接到4个以太网端口的STA模式会话)证明这种行为。这可能仅在WDS(4addr)模式操作或ebtables MAC伪装(不要与您发布的内容混淆)下发生-两者都有其自身的痛苦和问题。
斯瓦尔塔夫夫

-1

您需要先缩小接口,然后再桥接它们。

ifconfig eth0向下

ifconfig wlan0关闭


1
仍然可以用两个接口相同的错误下来
扎克·鲍威尔

@Zac Powell您正在使用Network-Manager吗?我过去的经验可能会干扰它。在这种情况下,您可以尝试停止该服务,然后再将其恢复
Legionair

是的,我可以,所以我应该尝试将它们同时关闭,并停止网络管理器,然后再进行监视,然后再恢复所有内容?
扎克·鲍威尔

是的,使用service network-manager stop,然后做您的事情,再用service network-manager start
Legionair,

仍然无法正常工作:/一切都已关闭,但仍然出现相同的错误
Zac Powell

-4
sudo iw dev wlan1 set 4addr on

关心解释这如何解决OP的问题?
Braiam

@Braiam我的回答在很大程度上解释了为什么如果AP支持的话,它会起作用。
大卫·史瓦兹

可悲的是,它不适用于许多AP。至于如果它能与大多数AP一起正常工作,它可能如何解决他的问题是,它可以通过向每个802.11帧中给定的数字添加一个额外的MAC来为AP提供中继功能,从而中继帧,而不仅仅是经过身份验证的MAC。
斯瓦尔塔夫夫

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.