默认网关更改


28

我在Ubuntu上使用3个以太网接口,但是当我重新启动时,默认网关将更改为其他接口。每次启动时,我必须通过删除默认网关并将其添加回eth1的方式将默认网关改回eth1。我该如何解决这个问题?


您是否使用/etc/network/interfaces文件或通过Network Manager或wicd之类的软件手动配置了它?
Lekensteyn 2011年

1
“网关”不等于“路线”。网关特定于接口,其中路由说明应使用哪个接口。
Lekensteyn 2011年

网关通常是本地节点所依赖的远程设备上的接口,用于进行路由决策。路由语句本身可以引用本地接口,但必须从递归查找,连接的接口或默认路由中发现路由目的地。默认路由或默认网关是“万不得已的网关”-将在没有更具体的可用路由时使用。
belacqua

您能否提供您的路由表和接口列表,以及其他已完成的相关网络配置?
belacqua 2011年

Answers:


33

要临时更改默认路由,可以使用如下的ip命令

$ sudo ip route change default via 192.168.1.1 dev eth0

如果您具有静态ip配置,则/etc/network/interfaces可以添加网关语句以使其永久存在。

iface eth0 inet static
    gateway 192.168.1.1
    […]

使用DHCP配置网络,您必须改为调整另一个文件。在中添加替代语句/etc/dhcp/dhclient.conf

supersede routers 192.168.1.1;

1
可编写脚本的版本(应在引号之间echo supersede routers $(ip route | grep default | cut -f3 -d" ")\; | sudo tee --append /etc/dhcp/dhclient.conf

如果我有多个接口怎么办?他们不应该为每个接口都有一个“网关”吗?但是什么会影响ip route命令的示例“通过192.168.3.1 dev eth6进行默认设置”输出呢?它列出了特定的接口,对吗?
JohnyTex

7

开启档案 /etc/network/interfaces

找到所需的接口并添加以下内容:

gateway 192.x.x.x

重新启动网络:

sudo /etc/init.d/networking restart

16
如果通过DHCP配置了所需的接口,但我不知道它将分配的网关地址怎么办?
devmiles.com 2012年

0

wlp3s0在Ubuntu 18.04上,我的wifi接口存在相同的问题。这影响了我连接家外的Android网络共享和路由器的能力。为我解决问题的方法是在文件中注释/etc/dhcpcd.conf以下内容:

interface wlp3s0
        static ip_address=192.168.0.16/24
        static routers=192.168.0.1
        static domain_name_servers=127.0.0.1

得到以下

#interface wlp3s0
#        static ip_address=192.168.0.16/24
#        static routers=192.168.0.1
#        static domain_name_servers=127.0.0.1

然后,我已断开与当前网络的连接,并重新连接了一个尝试过的服务器route -nnmcli查看了更改

当您确定它适合您时,也可以删除相同的行。

由于这些线路,NetworkManager总是添加带有错误网关的默认路由,尤其是当我不在家庭网络中时。在执行时,出现“无法到达目标主机”的信息ping 8.8.8.8。对网关进行硬编码/etc/network/interfaces不是一个可行的解决方案,因为我将大量的公共wifi连接到了wifi(因此,永远不要使用同一个wifi路由器或网关),并且DHCP通常应该“开箱即用”恕我直言。

PS:我从来没有手动编辑过,/etc/dhcpcd.conf所以我不知道文件为什么/etc/dhcpcd.conf包含这些行。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.