如何配置路由

分享于 

4分钟阅读

电脑

  繁體 雙語

问题:

我有一个网络,必须配置为循环。 它由 3个节点组成,每个节点有两个接口。 下面的图表解释了它。


+--->(eth0) Node 1 (eth1)--->(eth0) Node 2 (eth1)--->(eth0) Node 3 (eth1)--->+


| 10.0.3.1 10.0.1.1 10.0.1.2 10.0.2.2 10.0.2.3 10.0.3.3 |


+--<----------------------------<--------------------------------------------+



我想从 node 1到 node 3,这样请求通过,回复直接从 node 3到 node 1.


node1$ ping 10.0.2.3



我已经将节点配置为:


node1# route add -net 10.0.2.0/24 gw 10.0.1.2



node2# route add -net 10.0.3.0/24 gw 10.0.2.3



node3# route add -net 10.0.1.0/24 gw 10.0.3.1



运行ping时,来自 node 1的请求到达 node 3。 但是 node 3不回复,它不生成回复( 至少我可以用wireshark捕捉)。

你能给我一些提示?

TA


回答 1:

除非 node 从一个数据包的IP地址中选取一个 ,否则它通常会将IP地址到到达数据包目的地的下一个跃点的下一跳。

从 node 1角度来看,下一跳到 node 3是 10.0.1.2。 与 10.0.1.2 最接近的node 1 IP地址是 10.0.1.1,而不是 10.0.3.1。 目标在同一子网中的IP地址被认为是"closer",而不是在同一子网中的ip地址。)

检查ping的源IP地址。 最可能的是 10.0.1.1 而不是 10.0.3.1。 如果 node 3没有到 10.0.1.1的路由,则无法回复。


回答 2:

节点无法重复,以防止网桥广播失控。 我建议你运行生成树协议。 这将允许你在所有节点之间放置完全功能的路由。 除非你愿意在第 2层或者第 3层的某些链接之间限制连接,否则我不能想到另一种方法。


回答 3:

( /sbin/route 已经废弃,请改用 ip route )。

如果希望包只向一个方向移动,那就意味着每个 node 都需要使用下一个 node 作为它的网关,无论目标是什么。


node1# ip route add 10.0.0.0/22 via 10.0.1.2


node2# ip route add 10.0.0.0/22 via 10.0.2.3


node3# ip route add 10.0.0.0/22 via 10.0.3.1



但是,在大多数发行版中,反向路径筛选通常在默认情况下启用。 反向路径过滤是对传入数据包的过滤,它试图检查对这个数据包的应答是否到达接收数据包的同一个接口。 对于通常是 symetric,但你需要asymetric路由,在你的接收数据包中,你可能只禁用反向路径筛选,因此你可能只是禁用了反向路径过滤,或者至少要将源IP路由到路由器,这样就可以进行路由检查了。


node1# sysctl -w net.ipv4.conf.eth0.rp_filter=2


node2# sysctl -w net.ipv4.conf.eth0.rp_filter=2


node3# sysctl -w net.ipv4.conf.eth0.rp_filter=2



内核文档中提供了关于反向路径过滤和其他旋钮的文档, Documentation/networking/ip-sysctl.txt 在哪里找到这取决于你的发行版( 或者只是浏览网上的ip-sysctl.txt )。

愉快循环 !



route  
相关文章