我正在尝试配置我的无线网络,以便在访问以 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-up
post-down
/etc/network/interfaces
eth1 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 包