桥接 DD-WRT 导致无法路由 IP 地址

桥接 DD-WRT 导致无法路由 IP 地址

我正在桥接两个路由器。主路由器(连接到互联网)是运行固件版本 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,但您应该能够根据您特定的路由器调整说明。

相关内容