我的系统偶尔会出现路由问题。查看路由表时,我得到以下信息:
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
应该可以解决问题,其中aa
和b
是来自路由表的各个八位字节。