本地网络的两条路由,如何删除没有GW的路由?

本地网络的两条路由,如何删除没有GW的路由?

我的系统偶尔会出现路由问题。查看路由表时,我得到以下信息:

localnet        static.xx.xx.x  255.255.255.192 UG    0      0        0 eth0
localnet        *               255.255.255.192 U     0      0        0 eth0

第一个是正确的,因为“static.xx.xx.x”是本地网络的网关。出于安全原因,本地网络只能通过此网关访问。

删除第二条路线的“route del ...”的正确语法是什么?它要求我在命令中指定 GW。

这个路由在哪里设置?在 /etc/network/interfaces 中,我在启动时设置了正确的路由。

感谢您对此的意见!

编辑:“route -n”的输出作为请求:

root@lb01:~# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         aa.b.10.214     0.0.0.0         UG    100    0        0 eth0
aa.b.10.192     aa.b.10.193     255.255.255.192 UG    0      0        0 eth0
aa.b.10.192     0.0.0.0         255.255.255.192 U     0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

答案1

如果您在子网上有一个 IP 地址(我假设您指的是本地网络),那么您本质上也会有一个路由,因为您在子网上有一个接口。您无法通过网关将所有流量导向该网络,因为网关也位于该子网上,您需要有一条通往网关的路由。

虽然这绝对是糟糕的网络架构,您应该能够设置具有 IP 地址和子网掩码 /32 的接口。然后,为该接口上的网关添加静态 /32 路由,并为您的网络添加静态 /26 路由:

ip addr add 192.0.2.40/32 dev eth0
ip route add 192.0.2.1/32 dev eth0
ip route add 192.0.2.0/26 via 192.0.2.1 dev eth0

当然,您必须在接口上没有配置任何 IP 地址或路由的情况下执行此操作。我现在不记得 debian /etc/network/interfaces 文件的详细语法,但配置该文件的方法应该是显而易见的。

当然,这样做的问题是,该网络上的其他主机不知道通过该网关向您的主机发送流量,因为它们有一条路由192.0.2.0/26在链路上也有路由。这就是为什么我们对应该通过路由器通信的主机使用不同的子网。既然您有路由器,请为这个特殊主机设置一个 /30 子网并使用它。

仅供参考,不要使用诸如route和 之类的 net-tools 工具ifconfig;它们很古老,而且有很多奇怪的小东西让人困惑。改用 iproute2。删除路由的 iproute2 命令就是删除它,尽可能清楚地指定路由:

ip route del 192.0.2.0/26 dev eth0

它可能允许您这样做,也可能不允许。当然,如果成功,执行此操作后您将无法访问该主机上的任何网络。

答案2

请提供的输出route -n

编辑:

ip route del aa.b.10.192/26 via 0.0.0.0 dev eth0

应该可以解决问题,其中aab是来自路由表的各个八位字节。

相关内容