我正在尝试使用 cli 在我的 Ubuntu Desktop 16.04 机器上添加静态路由,但没有成功。我正在使用经典的 ip route 命令:(ip route add x.x.x.0/24 via y.y.y.y dev eno1
在此处隐藏实际地址),我收到以下错误: RTNETLINK answers: Network is unreachable
。我的机器将通过其默认网关访问 yyyy。从默认网关到将路由到 xxxx 的 yyyy 的实际路由已经设置并正在工作。
收到的错误对我来说很好,因为它实际上是可以访问的(我自己测试过),因为它一定是由网络组件(例如 FW)引起的错误错误。
我的问题是:有没有办法忽略这个错误?此错误导致静态路由无法保存,即使命令认为它无法访问,我也希望将其保存。我的route
命令仅显示我的default
和link-local
由 dhcp 获取的,并且还显示我的vmnet
.
为什么我使用 cli?
我知道 Ubuntu 16.04 应该使用/etc/network/interfaces
,而 Ubuntu 18.04 及以上版本使用/etc/netplan
,但是我的/etc/network/interfaces
文件绝对是空的(可能是因为 dhcp 方法)。
编辑:内容/etc/network/interfaces
:
auto lo
iface lo inet loopback
命令输出route
:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default z.z.z.254 0.0.0.0 UG 100 0 0 eno1
z.z.z.0 * 255.255.255.0 U 100 0 0 eno1
link-local * 255.255.255.0 U 1000 0 0 eno1
g.g.g.0 * 255.255.255.0 U 0 0 0 vmnet1
命令输出ip route list
:
default via z.z.z.254 dev eno1 proto static metric 100
z.z.z.0/24 dev eno1 proto kernel scope link src z.z.z.101 metric 100
169.254.0.0/16 dev eno1 scope link metric 1000
g.g.g.0/24 dev vmnet1 proto kernel scope link src z.z.z.1
总的来说,我正在寻找一种方法来有时强制机器的路径,而无需创建虚拟接口并为该接口配置我的网络组件。
这个“答案”很可能会被互联网吞噬,因为它的措辞等等,但是,我对你的问题的假设是你正试图到达你的广播域之外。
在您的最新评论中,您似乎正在尝试使用默认路由器进行外部路由 - 但我将在此处添加以下内容,我们将在进行过程中进行改进。
您的计算机只能在第 2 层广播域中路由。这意味着,您不能尝试在另一个逻辑网络上定义下一跳,除了路由器(忽略更高级的网络;这是一个 Ubuntu 论坛)。在“传统”专用网络上,您将从“/24”网络范围(有时表示为 192.168.0.0/24 或 255.255.255.0 CIDR)进行操作。
当您要添加静态路由时,除非您有一个带或正在运行的路由器
RIP
,否则您必须在设备上有一个逻辑下一跳。以以下网络“设计”为例:OSPF
BGP
在我的主机地址上,如果我不学习内部路由,我的默认值将通过 10.128.129.254 - 在它的
ARP
表中,它应该有一个已知地址来路由到服务器 - 这是第 3 层功能。如果我的路由器没有学习路由,并且它本身不是 VLAN 11 的网关地址,会发生什么?然后,我需要表示一个路由条目(我不会详细介绍
BGP
其他技术)客户端路由
对于我的 Linux 机器上的这种情况,我仍然需要知道我可以在哪里联系 VLAN 11 - 10.128.130.0/24 - 所以我添加了一个静态路由:
为什么这行得通?因为在广播范围内,我的 PC
10.128.129.254
无需第 3 层功能即可到达。例如,我不能添加以下内容:
由于路由器不在同一个逻辑子网中。
配置路由 - 路由器修改
对,所以此时客户端正在使用路由器尝试路由到 10.128.130/24 - 所以现在路由器需要知道它的下一跳。取决于设备取决于语法,以及您有哪些可用的解决方案;现在,我们只是假设您的路由器在逻辑 VLAN 中有一个到路由器的下一跳,并且一切正常。
为什么命令失败?
可以在其他站点上找到相同问题的一些示例,并且还指出不在逻辑网络中。您可以尝试(如果这是多跨)将 IP 别名添加到接口并从那里开始。
只需仔细检查您要路由到的网络和 PC 上的下一跳是否在同一个逻辑网络中。