问个弱弱的网络问题

274 天前
 fighterhit
公司有时候服务器 A ping 不通服务器 B ,运维一查说缺路由,两边都要加。我有点纳闷为啥两边服务器都要加,不是 A 上加了就行了,A 上加了能 ping 通 B ,路由不是会自学习吗?数据包都知道咋去了回来还不知道吗?
999 次点击
所在节点    问与答
26 条回复
Andim
274 天前
AB 中间隔了两个路由器?
fighterhit
274 天前
@Andim 可能有路由器,但为啥只加一个方向不行呢而是要在两个服务器上都加?
billlee
274 天前
不会。这个不能自学习的,否则我伪造一个 IP 发包给你,你学习了以后就会把数据都发给我了
fighterhit
274 天前
@billlee 但记得之前上学学的时候路由器之间不是会广播学习吗?
billlee
274 天前
@fighterhit 那是交换机
cdlnls
274 天前
交换机也不能学习路由的,交换机是二层的,二层的交换机是没有路由功能的,交换机能学习 mac 地址。。
你说的学习路由,我估计是记错了,在动态路由协议里面,路由器可以通过和其他路由器交换信息,来学习路由,比如 OSPF 。 但是它也不是根据一个方向的数据包来实现学习路由的。
revelationtan
274 天前
路由得一去一回,AB 间如果隔着一个网段那必然两边的设备都得加路由信息。不然能送到但没法回信
fighterhit
274 天前
@cdlnls 对对,我记得就是你说的“路由器可以通过和其他路由器交换信息”,百科也这么说的 @billlee
https://baike.baidu.com/item/%E5%8A%A8%E6%80%81%E8%B7%AF%E7%94%B1/100533?fr=ge_ala 。这样的前提下去的包经过这些路由器学到了路由,那回包经过这些路由器不是也知道往哪走吗?
fighterhit
274 天前
@revelationtan 不太理解,隔着一个网段为啥就必须两边都加呢?单加一边的话,去的包中间经过的路由器不都学会了路由信息了吗?回来时候再经过这些路由器按理说不是能回来吗?
billlee
274 天前
@fighterhit 只有专用的路由器会开动态路由,并且只会和已知的可信的其它路由器交换。作为终端的服务器、PC 、手机是不会运行动态路由的
cdlnls
274 天前
@fighterhit 路由协议不是通过“包经过那里”去实现的发现/学习路由的。它就是路由器和路由器之间交互的一个协议,这个协议通常只是定义了怎么发现其他路由、怎么和其他路由交换他们各自的路由表,和路由器上传输了哪些数据包没啥关系。
revelationtan
274 天前
@fighterhit
路由器只会自动学习自己的直连网段,非直连网段要么写静态,要么用动态路由协议。写静态路由条目的话必须所有经过的路由器都写。
包能送达目的主机不代表目的主机能回信。路由器连接的是网段不是主机
fighterhit
274 天前
@cdlnls 那换个角度说,既然去的包经过这些路由器能顺利到达目的端,说明路由器上有两端通信的路由,那回包理论上不是也可以按照路由信息回到源端呢?为啥反过来就不行了呢
cdlnls
274 天前
@fighterhit 这个不一定的,路由表怎么配,数据包怎么走的,来去的路由表有时候不一定是一样的。
cdlnls
274 天前
@fighterhit 如果数据包能通过这些路由器能顺利到达目的端,这个只能说明,去的方向,经过的路由器里面的路由表是正确的。 比如在路由器上配置了一个 A 到 B 的路由。那就只能是 A 到 B ,B 不会到 A 。这里路由表 A 到 B 和 B 到 A 是两个路由信息。
fighterhit
274 天前
@revelationtan “写静态路由条目的话必须所有经过的路由器都写” ,印象里运维每次仅仅是在两端服务器上加了一条这样的路由:目的地是对端服务器网段(或者具体 ip ),配置一个网关掩码以及网卡,中间经过的路由器都没配,这样就可以了。运维的配置看上去是只要把到那个网段的包送到配置的网关好像就可以了(这又是为啥呢?),但按你说的好像中间路由器也都要配?
fighterhit
274 天前
@cdlnls 印象里运维每次是在两端服务器上加了一条这样的路由:目的地是对端服务器网段(或者具体 ip ),配置一个网关、掩码以及网卡,这样就可以了。运维这样配置看上去是只要把 到对方那个网段的包 送到配置的网关上就可以了?这是为啥呢?
fighterhit
274 天前
其实我对路由、路由器、网关、交换机这些概念有点迷,他们功能上有区别,但网上很多又说路由器也能当网关、交换机。
qishouvip2022
274 天前
@fighterhit 因为,回包的时候,服务器得首先知道需要把数据包送回到这个路由器,然后路由器才会转发。所以在中间路由器都无法配置动态路由协议的情况下,B 服务器需要手动指定去往 A 服务器所在网段的静态路由。如果是在一般企业的内网,跨网段访问的场景下,如果 A 或 B 其中一台服务器的默认网关不是 VLAN 的 SVI (旁路由的场景),一般只需要手动指定其中一台服务器的静态路由,就可以实现两边互通了。
icegaze
274 天前
@fighterhit 因为实际使用中,普通人看到的路由器都是低能力路由,它基本上只有两个方向(两个网络),只能把数据包往 A 或者 B 扔。而它的上级路由器(更高层级的多网口路由器)一般配置了 OSPF 学习能力,可以比较容易地进行路由决策… 所以,终端用户那里,基本不需要配置什么信息,或者只需要大概的路由方向(哪个网络)就行,至于后面怎么走的,都交给上级路由器去管吧。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/964267

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX