在运行 Windows 时,我能够通过笔记本电脑的以太网连接桥接我的 wifi 连接,因此一系列仅支持以太网的设备可以搭载我的 wifi(Raspberry Pi、Xbox 等)。我现在正尝试在 Ubuntu 中执行相同操作,即设置如下:
无线路由器 ---> 笔记本电脑上的 Wifi ---> 桥接至以太网 ---> 需要互联网的设备插入以太网端口
现在我一直在尝试使用 brctl 在 Ubuntu 中运行它
我使用了以下命令:
sudo brctl addif br0 eth0 wlan0
并出现以下错误:
can't add wlan0 to bridge br0: Operation not supported
我希望有人能帮助我,因为我不相信在 Windows 上可以轻松完成的事情在 Linux 上却无法完成。
如果您需要更多信息,请告诉我。谢谢
答案1
这不可能。您无法桥接 WiFi 客户端连接。如果可以的话,我们就不需要 WDS,我们只需要桥接即可。
问题很简单——WiFi 规范禁止接入点在 WiFi 网络上广播流量,除非获得授权。这在很大程度上是 WiFi 网络速度非常慢且安全性很差(甚至根本没有)的时代的遗留问题。
网桥与接入点之间只有客户端连接。这仅授权接入点传输发往网桥的流量。由于连接到网桥的任何机器都不是接入点的客户端,因此接入点没有理由通过 WiFi 链接发送发往它们的流量。所以它不会这样做。
不幸的是,WiFi 与以太网非常相似,因此很容易期望它像以太网一样工作。但它的差异足以让你感到困惑。
WDS 配置是授权接入点发送不绑定到其任何客户端的流量的特定权限。当两端都支持 WDS 时,它们包括桥接端点的地址以及目标的地址,授权接入点发送流量。
您必须使用除桥接之外的其他方法来实现这一点。例如,使用 NAT 进行路由。如果 WiFi 链路的两端都支持四地址模式,您也可以使用四地址模式。
答案2
我在使用 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
还要配置 DNS 服务器,我的是网络路由器,在 /etc/resolv.conf 中:
nameserver 192.168.1.1
希望这可以帮助
答案3
我认为你真正需要的不是桥梁,而是:
- SNAT(如果 WLAN 有静态 IP)(请参阅这一页)
或者
- MASQUERADE(如果 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-box 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 的更多信息,请参见这里。
答案4
sudo iw dev wlan1 set 4addr on