我尝试做的事情基本上是这样的。我所在的网络的路由表是这样的。
Destination Gateway Genmask Flags Metric Ref Use Iface
default thebrain 0.0.0.0 UG 0 0 0 wlan0
link-local * 255.255.0.0 U 1000 0 0 wlan0
192.168.1.0 * 255.255.255.0 U 2 0 0 wlan0
当我将路由器连接到网络时,我得到一个类似这样的路由表。
Destination Gateway Genmask Flags Metric Ref Use Iface
default DD-WRT 0.0.0.0 UG 0 0 0 eth0
link-local * 255.255.0.0 U 1000 0 0 eth0
192.168.11.0 * 255.255.255.0 U 1 0 0 eth0
当我将计算机连接到个人路由器 (DD-WRT) 网络时,我获得的 IP 地址超出了 192.168.1 范围。这意味着我可以从我的计算机 ping 网络上的机器(IP 地址为 192.168.1.xx 的机器),但我无法通过其他方式 ping 机器。
我需要做的是设置路由,以便我可以 ping 192.168.1.0 上的机器,以便它们可以 ping 192.168.11.123,或者我的路由器所连接的任何设备。目前它显示 icmp 数据包被过滤。
我使用 Ubuntu 12.04,Buffalo WZR- 600DHP 作为路由器。我安装了 DD-WRT,但如果有充分的理由,我不介意将固件更改为 Openwrt。
答案1
首先,您应该将 DD-WRT 配置为“路由器”模式而不是“网关”模式——这将禁用 NAT。
[Setup]->[Advanced Routing]->[Operating Mode]
您需要添加一个 iptables 规则以允许流量从现有路由器传递:
iptables -I FORWARD -s 192.168.1.0/24 -j ACCEPT
在现有路由器(192.168.1.1)上,您应该使用 DD-WRT 的 WAN IP 创建静态路由。
Dest Network: 192.168.11.0
Net Mask: 255.255.255.0
Gateway: 192.168.1.100 (DD-WRT's WAN IP)
您可能需要 DD-WRT 上的静态路由,但在这种情况下默认路由应该可以起作用。