路由零配置接口

路由零配置接口

请原谅这里的长描述,但我认为在提出问题之前有必要解释一下设置:

我有 2 个 USB 以太网设备连接到我的机器 (debian),它们通过 avahi 使用 169.254.xx 地址进行自我配置。

连接到每个 USB 以太网设备的另一端的是 ssh 主机(host1host2

什么时候任何一个 host1或者host2通过其设备连接我可以 ssh 到 host1.local 或 host2.local 。

当两者都连接时,我只能连接到host1.localOR host2.local(我收到主机未知/无法访问和类似的消息)

如果我跑

ifconfig

我看到两个接口均已启动并且有 IP 地址

如果我跑

ip route show

我看到有两条匹配的路由设置如下

169.254.0.0/16 dev eth0 scope link src 169.254.3.232 metric 212
169.254.0.0/16 dev eth1 scope link src 169.254.79.120 metric 213

所以我思考这里发生的情况是,这些路由之一正在获取 Zeroconf 范围内的所有流量并将其发送到其中一台设备,这意味着当两个设备都插入时,只有一个设备响应,因为流量仅适合该设备末尾的主机设备。

为了测试这一点,我尝试删除正在工作的设备的路由,以允许其他路由接管并将流量发送到其他设备,但我尝试过的路由删除命令的所有变体似乎什么也没做,路由保持在地方。

eth0相反,如果我运行此命令,则到(连接到)的路由host1会与设备的所有其他设置(例如 ip,这是预期的)一起进行(被删除)。host1.local停止回应并host2.local开始回应在证明理论之前没有回应的地方。

ip addr flush dev eth0

所以我的解决方案是尝试删除这些自动创建的通用路由,这些路由胜过一切,并添加到设备的更具体的路由(我应该添加每个主机都有一个固定的IP)。

所以像

ip route add 169.254.102.0/24 dev eth0
ip route add 169.254.116.0/24 dev eth1

甚至

ip route add 169.254.102.23/32 dev eth0
ip route add 169.254.116.74/32 dev eth1

但这并不完全有效,ip addr flush因为强制删除路由的方式过于严厉 - 路由进入,但接口由于被刷新而严重关闭。

所以我的问题是:

  • 为什么ip route delNOT 的所有变体都可以删除不良路由?

  • 除了使用命令之外还有其他方法删除路由吗ip

我还能如何解决这个问题:

  • 桥接接口使它们像负载均衡器一样工作作为解决方案更有意义吗?

  • 我是否完全错过了一些我应该尝试的其他事情,以便使路由更加具体(也许就 Zeroconf/avahi 如何设置这些连接而言)?

答案1

不建议更改这些路由的网络;它们也会被avahi再次刷新,最好的情况是回到后面的掩码,最坏的情况是路线/掩码乱七八糟。

另外,我建议停止沉迷于路由零配置/自动私有地址。它们是网络本地的,并且根据定义不可路由。

我建议按照书本进行操作,并使用私有 RFC 1918 IP 地址。

相关内容