我有一台运行 Centos 7 的服务器,需要重新启动才能升级某些软件。
某些物理网卡每个都有大约 5-10 个 VLAN 接口。它们可能每周/每月发生变化,因此存储详细信息以/etc/sysconfig/network-scripts
在重新启动后持续存在是不切实际的。
有没有一种简单的方法可以拍摄当前网络堆栈的快照并在重新启动后恢复?类似于保存/恢复 iptables 规则的方式?
我找到了一些参考资料,system-config-network-cmd
但我对使用这个工具持谨慎态度,因为它会覆盖我们所拥有的物理接口的静态配置/etc/sysconfig/network-scripts
谢谢!
答案1
Iptables 是您提出的问题中最简单的部分。
iptables-save
可用于保存当前的 iptables 规则,然后可以使用iptables-restore
.
# backup current iptables rules
iptables-save > /root/iptables-$(date +%F).save
# restore a previous set of iptables-rules
iptables-restore < /root/iptables-<date of file to restore>.save
对于任务的网络部分,如果您不使用“网络管理器”服务(许多人在服务器上不使用该服务),则可以使用system-config-network-cmd
或以后的替代品,例如nmtui
|nmcli
不会做太多事。
最初,您必须编写自己的解决方案的脚本,该解决方案看起来类似于捕获 的输出ip addr show
,然后解析它以创建 ip 批处理文件(请参阅:https://support.cumulusnetworks.com/hc/en-us/articles/202395708-Bringing-up-Large-Networks-Using-ip-batch有关有用的信息),然后通过 重播该批处理文件ip --batch <batchfile>
,并根据您的详细程度进行调整。您需要 MAC 相同吗?其他设备选项?有具体的vlan吗?或者仅仅是 IP 地址都在同一子网上?哦,ip route show
如果您配置了重启后需要的任何临时路由,您可能也想捕获。
从长远来看,也许可以考虑使用 Ansible(或类似的)来管理临时iptables
规则和临时网络接口配置的部署。然后你就可以重播你的剧本,让一切恢复到原来的样子。
答案2
首先,您必须确保网络管理器已安装并且nmcli
命令存在。
之后,通过以下方式显示您当前的网络连接nmcli
:
# nmcli c
NAME UUID TYPE DEVICE
enp0s3 346f92f2-e6b5-4464-b424-4083fb09e6ae 802-3-ethernet enp0s3
enp0s8 537dd740-423a-42ab-8e62-d49a0e91de00 802-3-ethernet enp0s8
enp0s8.10 1db1ea0f-f67e-4777-bd58-e4c6d36a8520 vlan enp0s8.10
enp0s9 410c1405-b2fa-4182-900b-51defe29c681 802-3-ethernet enp0s9
接口enp0s8.10
没加我过来网络管理器。我已将其添加到vconfig
,ip l up
和ip a
。
接口必须已启动并已分配 IP 地址!如果接口未启动或没有分配 IP,则网络管理器将显示为不受管理的。
之后,您可以调用nmcli
编辑您的活动连接:
# nmcli connection edit enp0s8.10
===| nmcli interactive connection editor |===
Editing existing 'vlan' connection: 'enp0s8.10'
Type 'help' or '?' for available commands.
Type 'describe [<setting>.<prop>]' for detailed property description.
You may edit the following settings: connection, 802-3-ethernet (ethernet), vlan, ipv4, ipv6, proxy
nmcli> help
------------------------------------------------------------------------------
---[ Main menu ]---
goto [<setting> | <prop>] :: go to a setting or property
remove <setting>[.<prop>] | <prop> :: remove setting or reset property value
set [<setting>.<prop> <value>] :: set property value
describe [<setting>.<prop>] :: describe property
print [all | <setting>[.<prop>]] :: print the connection
verify [all | fix] :: verify the connection
save [persistent|temporary] :: save the connection
activate [<ifname>] [/<ap>|<nsp>] :: activate the connection
back :: go one level up (back)
help/? [<command>] :: print this help
nmcli <conf-option> <value> :: nmcli configuration
quit :: exit nmcli
------------------------------------------------------------------------------
nmcli> save
Connection 'enp0s8.10' (1db1ea0f-f67e-4777-bd58-e4c6d36a8520) successfully updated.
nmcli> quit
/etc/sysconfig/network-scripts
执行此步骤后,您将在文件中看到接口的配置文件ifcfg-enp0s8.10
(如我的情况)。
当然,您应该检查所有界面。