![连接我的笔记本电脑的无线和有线适配器](https://linux22.com/image/1233559/%E8%BF%9E%E6%8E%A5%E6%88%91%E7%9A%84%E7%AC%94%E8%AE%B0%E6%9C%AC%E7%94%B5%E8%84%91%E7%9A%84%E6%97%A0%E7%BA%BF%E5%92%8C%E6%9C%89%E7%BA%BF%E9%80%82%E9%85%8D%E5%99%A8.png)
我希望能够将没有无线适配器的台式计算机连接到我的无线网络。
我可以直接从我的 ADSL/无线路由器接一条网线到台式电脑,但有时这并不实际。
我真正想要做的是将我的笔记本电脑的无线和有线适配器桥接起来,这样我就可以将一条网线从我的笔记本电脑连接到交换机,再将另一条网线从交换机连接到台式电脑,这样台式电脑就可以通过我的笔记本电脑通过我的 ADSL/无线路由器访问互联网:
+--------------------+
|ADSL/wireless router|
+--------------------+
|
+-------------------------+
|laptop's wireless adaptor|
| |
|laptop's wired adaptor |
+-------------------------+
|
+------+
|switch|
+------+
|
+-----------------------+
|desktop's wired adapter|
+-----------------------+
经过谷歌搜索,我发现我可以通过桥接笔记本电脑的无线和有线适配器来实现这一点。
在 Windows XP 的网络连接中,我选择本地连接和无线网络连接,右键单击并选择桥接连接。
据我所知,这个(第 2 层?)桥接器将检查来自无线网络的流量的 MAC 地址,如果它怀疑具有该 MAC 地址的网络适配器可能位于有线端,则将其传递到有线网络,反之亦然。
如果是这种情况,我会假设当台式计算机尝试从 DHCP 服务器(在 ADSL/无线路由器上运行)获取 IP 地址时,它会发送一个 DHCP 广播数据包,该数据包将通过笔记本电脑的桥接器传输到路由器,然后答复将通过笔记本电脑的桥接器返回到台式机。
这不会发生。
经过更多的谷歌搜索,我找到了一些如何在 Linux 上实现这一点的说明。我重新启动到 Ubuntu 9.10 并输入以下内容:
sudo apt-get install bridge-utils
sudo brctl addbr br0
sudo brctl addif br0 wlan0
sudo brctl addif br0 eth0
sudo ipconfig wlan0 0.0.0.0
sudo ipconfig eth0 0.0.0.0
再次,桌面无法连接到 ADSL/无线路由器。
我怀疑我遗漏了一些简单而重要的步骤。有人能帮我解释一下吗?
答案1
我希望桥接器在 Ubuntu 下工作,所以我仍在寻找答案,但我能够让桥接器在 Windows XP 上工作。
在桥接局域网连接和无线网络连接后,我打开命令提示符并输入以下内容:
netsh bridge show a
这列出了 ID 为 1 的本地连接和 ID 为 2 的无线网络连接。我的无线网络连接的 ForceCompatibilityMode 显示为未知,因此我输入了以下内容:
netsh bridge set a 2 e
这启用了我的无线网络连接。台式电脑能够从路由器上的 DHCP 服务器获取 IP 地址。结果发现,它获取的 IP 地址与我的无线网络连接通常获取的 IP 地址相同,这导致 Windows 抱怨网络上存在 IP 地址冲突。我为台式电脑提供了一个静态 IP 地址,一切正常。台式电脑和笔记本电脑现在都可以使用互联网了。
答案2
我决定在 Ubuntu 笔记本电脑上使用 NAT 而不是桥接,后者效果很好,但无法使用路由器的 DHCP 服务器。如果我懒得手动配置台式机的网络,我可能会在笔记本电脑上安装 DHCP 服务器。无论如何,这就是我进行无线到有线 NAT 的方式……
我的路由器(以及我的笔记本电脑的无线连接)的网络是 192.168.1.0,我将使用 192.168.0.0 作为笔记本电脑的 eth0 接口和桌面上的网络。
首先,我通过右键单击系统托盘中的网络图标来关闭网络管理器,然后取消勾选“启用网络”。
我创建了一个名为 /etc/wpa_supplicant.conf 的文件(以 root 身份),包含以下内容:
ctrl_interface=/var/run/wpa_supplicant
network={
ssid="myssid"
scan_ssid=1
key_mgmt=WPA-PSK
psk="mypresharedkey"
}
其中“myssid”是我的路由器的 SSID,“mypresharedkey”是我的路由器的 WPA 预共享密钥。
然后我使用以下命令启动无线网络:
sudo iwconfig wlan0 essid myssid
sudo wpa_supplicant -iwlan0 -c/etc/wpa_supplicant.conf -B
并使用以下命令获取 IP 地址、名称服务器和默认网关:
sudo dhclient wlan0
第一部分已经完成。现在我需要让 NAT 工作,这样 eth0 的流量才能进出路由器。
首先我需要告诉 Ubuntu 我想要允许转发:
sudo bash
echo 1 > /proc/sys/net/ipv4/ip_forward
exit
我本来以为我可以使用 sudo 将 1 回显到 /proc/sys/net/ipv4/ip_forward,但由于某种原因,我总是收到权限被拒绝的消息,因此我从 root shell 中 sudo bash 并回显 1。
然后我设置了一些转发规则:
sudo iptables -t nat -A POSTROUTING -o wlan0 -j MASQUERADE
sudo iptables -A FORWARD -i wlan0 -o eth0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i eth0 -o wlan0 -j ACCEPT
最后设置 LAN 端口 eth0:
sudo ifconfig eth0 192.168.0.254
所有操作都在我的笔记本电脑上完成,现在来配置台式机的网络:
sudo ifconfig eth0 192.168.0.1
sudo route add default gw 192.168.0.254
sudo bash
echo "nameserver 192.168.1.254" > /etc/resolv.conf
exit
再一次,除非我先使用 sudo bash,否则我似乎无法使用 echo 来写入文件。
就这样。现在我可以通过笔记本电脑的无线连接从台式电脑访问互联网了。