RHEL7 中的 DEFROUTE 与 GATEWAY

RHEL7 中的 DEFROUTE 与 GATEWAY

我已禁用网络管理器并使用 ifcfg- 脚本进行网络配置。我正在尝试找出 DEFROUTE="yes" 和 GATEWAY 选项之间的区别。

我理解“ifcfg 文件按数字升序解析,并且要读取的最后一个 GATEWAY 指令用于在路由表中组成默认路由。”根据 RHEL 文档。但是 DEFROUTE 如何使用?

例如,ifcfg-em1 具有 DEFROUTE="yes" 和指定 GATEWAY 选项。而 ifcfg-em2 仅具有 GATEWAY 选项。我看到 ifcfg-em2 GATEWAY 被添加到路由表中作为默认网关。到底有什么理由使用 DEFROUTE?

谢谢,
祝好,
罗曼

答案1

按照RHEL7 文档

在动态网络环境中,移动主机由 NetworkManager 管理,网关信息可能特定于接口,最好由 DHCP 分配。在需要影响 NetworkManager 选择用于到达网关的出口接口的特殊情况下,请对不通向默认网关的接口使用 ifcfg 文件中的 DEFROUTE=no 命令。

所以DEFROUTE语句仅由NetworkManager使用。

答案2

假设您有两张网卡。

您已经在两个网卡中提供了 IP、子网和网关;现在系统使用两张网卡来到达目的地。

当你放“DEFROUTE=是”然后系统使用该卡到达每个未知的目的地。

答案3

DEFROUTE 选项决定是否使用该接口到达默认网关。如果 DEFROUTE 设置为“yes”,则使用该接口到达默认网关。如果 DEFROUTE 设置为“no”,则不使用该接口到达默认网关。

在您的示例中,ifcfg-em2 仅指定了 GATEWAY 选项,因此它被用作默认网关。如果在 ifcfg-em1 中将 DEFROUTE 设置为“yes”,它也将用于到达默认网关,但它本身不会被设置为默认网关。

需要注意的是,DEFROUTE 选项仅影响默认网关,不会影响其他流量的路由。如果要控制通过特定接口的特定流量的路由,可以使用该接口的 ifcfg 文件中的“ROUTE”选项。

答案4

这个问题的正确答案是:“看起来合法”

好了,我们都知道DEFROUTE是什么意思(DEFault ROUTE)

我们不知道的是:如果在 ifcfg-interface 中有 GATEWAY= 声明,则会在 ifup 接口上向操作系统添加默认路由

DEFROUTE 的作用是仔细检查这个 GATEWAY 声明并真正添加默认路由或者不添加它。

这些内容和逻辑在 /etc/sysconfig/network-scripts/network-functions 中实现

[[email protected] ~]# grep GATEWAY /etc/sysconfig/network-scripts/network-functions
    if [ -n "${GATEWAY}" -a "${GATEWAY}" != "none" ] ; then
        dev=$(LC_ALL=C /sbin/ip route get to "${GATEWAY}" 2>/dev/null | \
            GATEWAYDEV="$dev"
# FIXME: This function doesn't support some newer features (GATEWAY in ifcfg,
    if [ "$GATEWAYDEV" != "" -a -n "${GATEWAY}" -a \
             "${GATEWAY}" != "none" ]; then
            if [ "$GATEWAY" = "0.0.0.0" ]; then
                /sbin/ip route add default dev ${GATEWAYDEV}
                /sbin/ip route add default via ${GATEWAY}
[[email protected] ~]# 

相关内容