我是 Linux 服务器管理新手,正在尝试一些网络命令。我希望通过修改 /etc/network/interfaces 文件来更改网络设置,并希望更改尽快生效。但我不想重新启动网络服务,因为这会导致灾难。我们还想尽可能避免重新启动系统。怎么做?我使用过 ip 命令和 ifup/ifdown 命令,但出于某种奇怪的原因,它们有时会失败。哪里有文档或书籍可以学习这个?抱歉,我是英语水平。
答案1
问题ifup/ifdown
是它读取当前配置来打开和关闭接口。因此,如果您有,例如:
iface eno1 inet static
address 1.1.1.1
netmask 24
而你ifup eno1
,真正发生的是执行了一些ip addr
和ip route
命令。其中你将有ip addr add 1.1.1.1/24 dev eno1
。如果你现在修改文件:
iface eno1 inet static
address 2.2.2.2
netmask 24
并且您ifdown eno1
,它将不会执行ip addr del 1.1.1.1/24 dev eno1
,但是ip addr del 2.2.2.2/24 dev eno1
,因此当您在接口启动时修改配置时会出现错误。
为了解决此问题,请在修改旧配置文件之前备份它:
cp /etc/network/interfaces /etc/network/interfaces.bak
修改配置后,使用以下命令进行备份ifdown
:
ifdown -i /etc/network/interfaces.bak <your_interface>; ifup <your_interface>
如果您正在远程连接到机器,一个好的想法是在超时后撤销操作:
(sleep 180; ifdown <your_interface>; ifup -i /etc/network/interfaces.bak <your_interface>)&
如果失去连接,则应在 180 秒后恢复,否则您可以终止该作业。