我正在尝试配置一个路由器来将流量转发到同一网络上的另一个路由器(这样我就不必在网络上的每台机器上配置静态路由)。
这是网络的简单图表。
目标:我希望能够从 station_a 联系 station_d(无需在 station_a 上配置静态路由)。
我尝试在 inet_gateway 上创建静态路由,例如192.168.3.0/24 10.0.0.5
。创建完成后,我可以从 inet_gateway 联系 station_d。但是,我无法从 station_a 联系 station_d。联系 station_d 的尝试被路由到 Internet。
看来 inet_gateway 不知道它应该路由流量。我从 station_a 发送的 ping 在以太网报头中含有 inet_gateway 的 MAC 地址,但 inet_gateway 似乎没有将流量转发到 router_b。
如果我在 station_a 上配置静态路由(与我在 inet_gateway 上配置的完全相同),station_a 可以联系 station_d。不过,我并不想在网络上的所有站点上都维护这样的静态路由。
这种事情可能吗:让路由器通过与发起者位于同一网络上的另一个路由器“路由”流量?
附加信息 以下是路由表(IP 地址已更改以匹配图表并保护无辜者)。互联网流量通过 192.168.0.1/24。
(inet_网关)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default 192.168.0.1 0.0.0.0 UG 0 0 0 eth0
loopback * 255.0.0.0 U 0 0 0 lo
10.0.0.0 * 255.255.0.0 U 0 0 0 eth2
192.168.0.0 * 255.255.255.0 U 0 0 0 eth0
192.168.3.0 10.0.0.5 255.255.255.0 UG 0 0 0 eth2
(路由器_b)
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.3.0 * 255.255.255.0 U 0 0 0 ath0
10.0.0.0 * 255.255.0.0 U 0 0 0 br0
default 10.0.0.1 0.0.0.0 UG 0 0 0 br0
//桥接适配器//:这种桥接方式是我使用的 Ubiquiti 设备的默认方式。我没有尝试取消桥接某些适配器。我将设备置于“路由器”模式,但适配器仍然处于桥接状态。我不确定是否可以更改这一点。我认为这与根本问题无关。
ICMP 重定向
这似乎是我需要的。非常感谢您的所有建议。
我无法让 inet_gateway 发送 ICMP 重定向。我相信设备已配置为发送它们,但它的行为表明它认为它不知道应该发送重定向。
尝试从 station_a 到 station_d 的跟踪路由结果如下:
> tracert -d 192.168.3.10
Tracing route to 192.168.3.10 over a maximum of 30 hops
1 <1 ms <1 ms <1 ms 10.0.0.1
2 1 ms 7 ms 2 ms 192.168.0.1
3 15 ms 15 ms 16 ms 10.30.0.1
4 34 ms 37 ms 22 ms 216.229.64.249
5 35 ms 32 ms 27 ms 216.229.80.185
6 25 ms 50 ms 35 ms 10.92.1.38
7 32 ms 30 ms 28 ms 10.92.1.86
我的结论是 inet_gateway(Ubiquiti EdgeMax)不知道是否应该发送 ICMP 重定向。
答案1
也许你需要在图表中添加网关
假设 station_a 的 IP 为 10.0.0.10/16,网关为 10.0.0.1/16,该网关连接到 Router_b 10.0.0.5/16,内部 IP 为 192.168.3.1/24(因此网络为 192.168.3.0/24)
您需要告诉(Inner_gateway)添加一条到 192.168.3.0 255.255.255.0 的静态路由,下一跳为 10.0.0.5
而在路由器 B 中什么也没有(因为它是直接连接的,所以它知道网络)
如果客户端是 Windows,请使用 Pathping IP 查看路由和 tracert。
答案2
据我所知inet_gateway
,Ubiquiti 正在运行 EdgeOS。您能确保接口确实配置为 ICMP 重定向吗?
...在 EdgeOS 级别:
admin@router# set firewall send-redirects enable
...在 Linux 层面呢?
# sysctl –w net.ipv4.conf.all.send_redirects = 1
# sysctl –w net.ipv4.conf.lo.send_redirects = 1
# sysctl –w net.ipv4.conf.<if>.send_redirects = 1
# sysctl –w net.ipv4.conf.default.send_redirects = 1
<if>
您连接到的接口名称在哪里main_network
我在类似情况下使用了 Vyatta,并且必须通过 sysctl 手动设置要发送的重定向,而不管静态路由如何。
希望能帮助到你!