我正在桥接两个路由器。主路由器(连接到互联网)是运行固件版本 1.0.39 的普通 Linksys WRV200。辅路由器是运行固件版本 DD-WRT v24-sp2 (10/10/09) mini 的 Linksys WRT-54g。
我按照此处的说明尝试创建无线网桥:http://www.dd-wrt.com/wiki/index.php/Client_Bridged
两个路由器都位于 192.168.1.0/24 - 主路由器是 192.168.1.1,辅助路由器是 192.168.1.2。
我有一台 Linux 机器,通过 cat5 连接到辅助机器,其静态 IP 地址为 192.168.1.9。这可以进行出站连接(我可以 ping 主机器,并且我可以通过该机器访问互联网)。但是,当我尝试从一台通过无线连接到主机器(IP 地址为 192.168.1.103)的笔记本电脑 ping 时,我得到了以下信息:
$ ping 192.168.1.109
PING 192.168.1.109 (192.168.1.109) 56(84) bytes of data.
From 192.168.1.103 icmp_seq=1 Destination Host Unreachable
From 192.168.1.103 icmp_seq=2 Destination Host Unreachable
.
.
.
我能从 192.168.1.103 ping 到辅助路由器本身——除此之外什么也没有。
以下是初选的重要统计数据:
Local IP Address: 192.168.1.1
Subnet Mask: 255.255.255.0
Running as DHCP server
IP Address Range: 192.168.1.100 through 254
Destination LAN IP | Subnet Mask | Gateway | Interface
192.168.1.0 | 255.255.255.0 | 0.0.0.0 | LAN&Wireless
74.138.64.0 | 255.255.240.0 | 0.0.0.0 | WAN
Default Route (*) | 0.0.0.0 | 74.138.64.1 | WAN
127.0.0.1 | 0.0.0.0 | 127.0.0.1 | LOOPBACK
次要的:
Local IP Address: 192.168.1.2
Subnet Mask: 255.255.255.0
Gateway: 192.168.1.1
Local DNS: {not populated}
Routing table:
Destination LAN NET | Subnet Mask | Gateway | Interface
192.168.1.0 | 255.255.255.0 | 0.0.0.0 | LAN & WLAN
169.254.0.0 | 255.255.0.0 | 0.0.0.0 | LAN & WLAN
0.0.0.0 | 0.0.0.0 | 192.168.1.1 | LAN & WLAN
所以......如果我没有看错的话,路由器实际上并没有桥接......辅助路由器实际上充当路由器,并且不允许来自主路由器的数据包到达其网络的另一端,即使它们在同一个子网上。
我做过按照有关禁用辅助防火墙的说明进行操作。以下是有趣的部分iptables -L
(我已删除空链)。
Chain INPUT (policy ACCEPT)
target prot opt source destination
Chain FORWARD (policy ACCEPT)
target prot opt source destination
ACCEPT 0 -- anywhere anywhere
logdrop 0 -- anywhere anywhere state INVALID
TCPMSS tcp -- anywhere anywhere tcp flags:SYN,RST/SYN TCPMSS clamp to PMTU
lan2wan 0 -- anywhere anywhere
ACCEPT 0 -- anywhere anywhere state RELATED,ESTABLISHED
ACCEPT 0 -- anywhere anywhere state NEW
.
.
.
Chain logaccept (0 references)
target prot opt source destination
ACCEPT 0 -- anywhere anywhere
Chain logdrop (1 references)
target prot opt source destination
DROP 0 -- anywhere anywhere
Chain logreject (0 references)
target prot opt source destination
REJECT tcp -- anywhere anywhere tcp reject-with tcp-reset
我认为这里我遗漏了一些简单的东西...我该如何设置才能让连接到任一路由器的盒子都可路由?
答案1
事实证明我做过错过一步。说明书的最后一步说
将您的计算机重新设置为自动 IP 和自动 DNS。
{这是指直接连接副路由器的电脑,也就是之前设置为192.168.1.9的那台电脑,我ping不通}。
一旦我将其设置为 DHCP,我就能够从连接到主路由器的机器上 ping 通。我唯一能想到的是,主路由器在发出 ARP 请求之前无法看到辅助路由器上机器的 MAC 地址,而当它有静态 IP 时它不会这样做……然而,我拥有该盒子的完全网络访问权限,因此它的所有数据包都会消失通过首要的...
我不知道。我打算把它归结为一些奇怪的第 2 层废话。如果有人能给我一个更清晰的答案,我会接受的。我想在辅助路由器上设置 dhcp 和 dns 缓存,因为 DD-WRT 有 dnsmasq,这在家庭网络上非常好用……所以如果 ip 地址只有在向主路由器的 dhcp 服务器注册后才可路由,我将回到这个问题……
编辑:
当我尝试捕获网络上所有机器的 MAC 地址时(我打算使用这些地址来设置 dnsmasq),我找到了答案。
$ sudo nmap -sP 192.168.1.0/24 | egrep '^(Nmap scan|MAC)'
Nmap scan report for 192.168.1.1
MAC Address: 00:18:39:08:1D:14 (Cisco-Linksys) # Primary
Nmap scan report for 192.168.1.2
MAC Address: 00:12:17:12:96:22 (Cisco-Linksys) # Secondary
Nmap scan report for 192.168.1.100
MAC Address: 00:12:17:12:96:22 (Cisco-Linksys) # Connected to secondary
Nmap scan report for 192.168.1.101
MAC Address: 90:18:7C:2A:21:C4 (Unknown)
Nmap scan report for 192.168.1.103
Nmap scan report for 192.168.1.123
MAC Address: 00:12:17:12:96:22 (Cisco-Linksys) # Connected to secondary
这里的关键是,所有通过辅助设备连接的机器都共享辅助设备的 MAC 地址。
如果我有一个真正的网桥,那么两个路由器实际上将充当单个交换机(第 2 层设备)。子网上给定设备的数据包将通过 MAC 地址传送到另一个设备。
那是不是这里发生了什么。相反,我有两个具有相同 IP 地址空间的交叉子网。通常,这不是一个好主意;如果你不小心,它可能会导致 IP 地址冲突。在这种情况下,它不是所以不好,因为所有 DHCP 请求都由主路由器处理(我在辅助路由器上设置了 DHCP 转发)
来自主设备的数据包通过 MAC 地址传送到辅助设备。路由器以外的机器位于第二个网段上,因此不与主网络共享 MAC 地址。
我提到我之前曾将 DD-WRT 与另一个路由器桥接。这曾是通过 WDS 建立的真正桥梁(无线分布系统)。WDS 的注意事项是两个路由器必须使用相同的芯片组。
在设置它的时候,我不知道这为什么重要,但是一旦我开始思考,它就变得有意义了。如果我在两个路由器之间创建一座桥,我实际上是在创建一个大型交换机——一个第 2 层设备。交换机具有通过 MAC 地址传送数据包的“智能”,而不是广播数据包并让网络上的每个设备决定是否接受它们(这将是一个集线器,而不是交换机)。交换机如何实际传送数据包的具体细节是第 1 层(即硬件)的决定。通常,您不必担心硬件层,因为所有决定都是在同一台物理机器内做出的。您可以将其视为一个黑匣子。这不适用于 WDS,因为此时您试图在第 1 层(即硬件层)混合两个盒子,并且在该层,芯片组很重要。
答案2
我想我可以解释为什么会发生这种情况,并且可以解释我是如何在系统上修复它的。
我遇到过类似的情况,两个 DD-WRT 路由器连接在一起(在这种情况下通过电力线以太网)。在我的场景中,可能更严重的情况是它们不充当单个交换机。
我能够让第二个路由器工作,方法是将 WAN 端口更改为交换机的一部分,然后将电力线以太网适配器连接到 WAN 端口(在本例中为 eth1)。通过这样做,桥接机制将它们识别为不同的网络,并将数据包从 eth1 路由到 eth0(有线计算机所在的位置)。我无法以其他方式对其进行调试,因为 br0 桥显然成功地在无线 ath0 和 eth0 网络之间路由数据包。
答案3
在无线网桥的 Web GUI 页面上,转到无线 -> 基本设置。对于物理接口 ath0(2.4 GHz 通道),将“默认网关模式”设置为手动,并将主路由器的 IP 指定为网关(通常为 192.168.1.1 或 192.168.0.1)。(如果您还使用 5GHz 通道,请对 5GHz 通道的物理接口执行完全相同的操作。)
为了使我的辅助路由器作为无线网桥工作,这一改变是绝对必要的。
就我而言,我的辅助路由器是 dir-825,但您应该能够根据您特定的路由器调整说明。