问题描述
当运行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中完成。
如果您需要更多信息,请告诉我。谢谢
最佳答案
无法做到这一点。您无法桥接WiFi客户端连接。如果可以的话,我们将不需要WDS,只需桥接即可。
问题非常简单-WiFi规范禁止访问点通过WiFi网络广播流量,除非获得授权进行该传输。这是WiFi网络非常缓慢且安全性差(如果有的话)时代的遗物。
桥接器仅具有到接入点的客户端连接。这仅授权接入点传输绑定到网桥的流量。由于连接到网桥的任何计算机都不是访问点的客户端,因此访问点没有理由通过WiFi链接发送绑定到它们的流量。因此它不会这样做。
不幸的是,WiFi就像以太网一样足够,很容易期望它像以太网一样起作用。但这足以咬你。
WDS配置是访问点的特定授权,可以发送不受其任何客户端约束的流量。当两端都支持WDS时,它们将包括桥接端点的地址以及目的地的地址,从而授权访问点发送流量。
您必须使用桥接以外的方法来执行此操作。例如,使用NAT进行路由。如果WiFi链接的两端都支持,则也可以使用四个地址模式。
次佳答案
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或必须在boot-up上运行的脚本中,或者在启动虚拟域之前:
# 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
希望这可以帮助