如何在 Ubuntu 10.10 中设置永久路由?

如何在 Ubuntu 10.10 中设置永久路由?

我正在尝试配置我的无线网络,以便在访问以 10.0.0 开头的 IP 地址时使用网关 10.0.1.252。

我按照一些关于如何使用接口文件进行操作的解释进行操作,但没有成功。

这是我的初始 /etc/network/interfaces 文件的内容:

auto lo
iface lo inet loopback

经过几个小时的搜索和阅读,我使其看起来像这样:

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth1

iface eth1 inet static
address 10.0.1.171
netmask 255.255.255.0
broadcast 10.0.1.255
gateway 10.0.1.254

# static route
up route add -net 10.0.0.0/24 gw 10.0.1.252 dev eth1

上述配置在我重启网络后以及我重启 Ubuntu 后仍然有效。重启 Ubuntu 后,我失去了网络管理器,无法连接到互联网或目标地址 10.0.0.x。

我做错了什么,或者在较新版本的 Ubuntu 中是否有更简单的方法设置永久路线?

顺便说一下,我正在配置无线连接,因为我不使用有线连接。

更新 1: (~$ ifconfig)

eth0      Link encap:Ethernet  HWaddr 00:24:81:64:9a:5c  
          UP BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:17 

eth1      Link encap:Ethernet  HWaddr 00:21:00:d8:25:45  
          inet addr:10.0.1.171  Bcast:10.0.1.255  Mask:255.255.255.0
          inet6 addr: fe80::221:ff:fed8:2545/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)
          Interrupt:17 

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:284 errors:0 dropped:0 overruns:0 frame:0
          TX packets:284 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0 
          RX bytes:21280 (21.2 KB)  TX bytes:21280 (21.2 KB)

更新2:(〜$ route -n)

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
10.0.0.0        10.0.1.252      255.255.255.0   UG    0      0        0 eth1
10.0.1.0        0.0.0.0         255.255.255.0   U     0      0        0 eth1
169.254.0.0     0.0.0.0         255.255.0.0     U     1000   0        0 eth1
0.0.0.0         10.0.1.254      0.0.0.0         UG    100    0        0 eth1

更新 3: 我意识到此代码存在问题:

iface eth1 inet static
address 10.0.1.171
netmask 255.255.255.0
broadcast 10.0.1.255
gateway 10.0.1.254

如果我将其注释掉,我会获得网络管理器和互联网访问,但不是我想要的路线。

答案1

如果您已通过 ifupdown(即 在 中)配置了网络/etc/network/interfaces,并且它在手动启动网络时有效,但在全新启动后无效,则一种可能性是您的设置正确启动了网络,然后其他系统组件重新配置了网络。明显的嫌疑人是网络管理器。确保在/etc/NetworkManager/nm-system-settings.conf下的中[ifupdown]managed=false。(这是默认设置,至少在 Ubuntu 10.04 下如此,但可能在 10.10 中发生了变化,或者您在之前使用网络管理器的实验中对其进行了更改。)


如果您想继续使用网络管理器,您可以告诉它添加额外的路由。从 Ubuntu 10.04 开始(其他发行版可能不会以相同的方式设置网络管理器),网络管理器将执行 中的 ifupdown 脚本/etc/network/if-*.d/。这些脚本的作用类似于中的up、和指令(网络管理器不会执行)。注释掉所有提及 /etc/network/interfaces 的内容,down以便网络管理器管理此接口。pre-uppost-down/etc/network/interfaceseth1 from

脚本记录在接口(5)手册页。它们在包含有关正在启动或停止的连接的信息的环境中执行,特别$IFACE是接口名称。因此,将以下脚本放入/etc/network/if-up.d/zzzz-milan-wireless-route

#!/bin/sh
if [ "$IFACE" = "eth1" ]; then
  route add -net 10.0.0.0/24 gw 10.0.1.252 dev eth1
fi

使其可执行:chmod 755 /etc/network/if-up.d/zzzz-milan-wireless-route。下次网络管理器启动网络时,您应该有默认路由。

答案2

我通常将静态路由命令放在/etc/rc.local

ip route add 10.0.0.0/24 via 10.0.1.252 dev eth1

顺便说一下,我使用 iproute2 包

相关内容