如何使 CentOS 中的 ip 路由设置在持久化?

如何使 CentOS 中的 ip 路由设置在持久化?

我需要通过虚拟 IP 地址路由传出流量。我可以使用 iproute 包中的“ip”工具来执行此操作。

使用ip route我可以看到哪个地址被用作源,并且我可以使用来更改它ip route change,但这是暂时的,并且在重新启动网络服务或机器后我会丢失这个更改。

我如何使用配置文件来实现这一点,以便持久化?例如,我尝试了几个选项,/etc/sysconfig/network-scripts/route-eth0:0但没有成功。

谢谢

答案1

通常,您可以轻松地将要在启动时运行的任何内容添加到/etc/rc.d/rc.local。因此,只需在那里添加ip route所需的任何命令即可。简单且不费吹灰之力。

https://www.centos.org/docs/5/html/Installation_Guide-en-US/s1-boot-init-shutdown-run-boot.html

/etc/rc.d/rc.local 脚本由 init 命令在启动时或更改运行级别时执行。将命令添加到此脚本的底部是一种简单的方法,可以执行必要的任务,例如启动特殊服务或初始化设备,而无需在 /etc/rc.d/init.d/ 目录中编写复杂的初始化脚本并创建符号链接。

或者

您可以采用更复杂的方式并创建 systemd 服务。https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/System_Administrators_Guide/sect-Managing_Services_with_systemd-Unit_Files.html

这样,您就可以设置它以通过网络服务重新启动。

或者

也许你可以使用 CentOS 中的自定义网络脚本

https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/sec-NetworkManager_and_the_Network_Scripts.html

自定义命令和网络脚本

脚本 /sbin/ifup-local、ifdown-pre-local 和 ifdown-local 中的自定义命令仅在这些设备由 /etc/init.d/network 服务控制时执行。如果您修改了 initscripts 本身(例如,/etc/sysconfig/network-scripts/ifup-eth),则这些更改将被 initscripts 包更新覆盖。因此,建议您避免直接修改 initscripts,而是使用 /sbin/if本地脚本,这样您的自定义更改将保留在软件包更新中。启动脚本只检查相关 /sbin/if 是否存在local 并运行它们(如果存在)。initscripts 不会在 /sbin/if*local 脚本中放置任何内容,initscripts RPM(或任何包)也不会拥有或修改这些文件。

答案2

你必须编辑该/etc/sysconfig/network-scripts/route-eth0:0文件,使用以下语法添加条目:<SUBNET>/<PREFIX_LENGTH> via <GATEWAY> dev <INTERFACE>

例如:10.10.10.0/24 via 192.168.1.1 dev eth0:0

相关内容