在Ubuntu 16.04中的/ etc / network / interfaces中应用静态IP地址更改

TL; DR:在Ubuntu 14.04中,如果更改/etc/network/interfaces的静态IP地址并使用ifdown应用更改,然后ifup命令一切正常。 但是这个序列在16.04不起作用。 什么是最好的选择?

在ubuntu 16.04中,在更改interfaces文件和ifdown/ifup序列之后, ip addr show 命令显示ip addr show 新旧静态IP地址。 我在ubuntu 14.04和16.04中使用了ifdown/ifup -v (详细)参数。 不同之处在于ifdown。 在ubuntu 14.04中, ifdown执行以下命令:

 ip -4 addr flush dev  label  

而在16.04:

 ip addr del / dev  label  

所以我想,在16.04,如果我第一次运行ifdown命令。 然后更改/etc/network/interfaces文件中的IP地址,然后使用ifup命令重新启动接口,将正确删除旧的IP地址。

另一个解决方案是在ifdown/ifup之前运行ip addr flush命令:

 ip addr flush dev  

似乎我已经回答了我的问题,但我想知道在Ubuntu 16.04中更改静态IP地址的最佳解决方案是什么?

你可以添加flush内部接口定义,如

iface eth0 inet manual
post-down ip addr flush dev $ IFACE