我已禁用网络管理器并使用 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] ~]#