编辑网络接口而无需重新启动系统

我想通过编辑/etc/network/interfaces文件对我的网络配置进行一些更改。 对这个文件进行更改并使它们生效的最简洁方法是什么,而不必重新启动? 通常情况下,我一直在做:

  1. 编辑文件
  2. service networking restart

但我的印象是,这不是进行这些改变的“正确”方式。

使用关闭网络接口

 sudo ifdown eth0 

(将eth0替换为您想要更改的界面)并使用再次启动它

 sudo ifup eth0 

使用停止所有接口

 sudo /etc/init.d/networking stop 

然后根据需要配置(编辑)您的接口

再次启动它们

 sudo /etc/init.d/networking start 

无需重启。

为什么你不认为这是正确的方式。 想想,ubuntu在启动过程中可以做些什么? Ubuntu有一个需要在引导期间运行的服务列表,每个服务都有一个连续命令列表来启动它自己。 Ubuntu只需通过/etc/init.d/networking脚本运行网络服务,该脚本包含一些需要运行网络服务的命令。 因此,如果需要对网络进行任何更改,则必须重新启动服务,然后重新调用服务的连续命令。

/etc/network/interfaces控制ifupdown工具。

因此,在进行更改后,您可以说例如sudo ifup eth0

实际上这些都不起作用。 在Ubuntu 16.10上测试过。 这些都没有效果。

  • ifdown ens3和ifup ens3
  • 服务网络停止并开始
  • 服务网络重新加载
  • systemctl停止networking.service然后再次启动。

通过所有这些旧的dhcp ip回来了,而不是静态。 我想知道这是故意的吗?

在Ubuntu Server 16.04中,必须使用ip命令刷新地址才能重新启动网络,否则interfaces文件中的任何地址更改都不会生效:

 $ sudo ip addr flush interface-name $ sudo systemctl restart networking 

我从这篇有用的文章得到了这个答案