![默认网关在不同的子网中。如何在 RHEL6.2 中配置](https://linux22.com/image/578931/%E9%BB%98%E8%AE%A4%E7%BD%91%E5%85%B3%E5%9C%A8%E4%B8%8D%E5%90%8C%E7%9A%84%E5%AD%90%E7%BD%91%E4%B8%AD%E3%80%82%E5%A6%82%E4%BD%95%E5%9C%A8%20RHEL6.2%20%E4%B8%AD%E9%85%8D%E7%BD%AE.png)
我有两个子网从 ISP 路由到我的服务器。我只有一个网关 IP。网关与我的 IP 地址位于同一 VLAN 上。例如,网络 1 是 1.0.0.0/24,网络 2 是 2.0.0.0/24。两者都由我的 ISP 路由到 eth0。网关是 1.0.0.1。我的主机 IP 是 2.0.0.1/24 (eth0) 因此我可以使用以下命令手动配置默认网关
ip route add default dev eth0
ip route add default via 1.0.0.1
然后互联网连接就可以正常工作了。如何在 /etc/sysconfig/network-scripts/ifcfg-eth0 中配置它?
我尝试设置 GATEWAY=1.0.0.1,但不起作用。尝试在 /etc/sysconfig/network 中设置 GATEWAY 和 GATEWAYDEV,但它只执行上面列出的第一个命令所执行的操作。
答案1
你真的不会找到对这样的事情的支持,因为它不会通过任何健全性检查。
所以,想一想。您的计算机需要知道网关地址才能访问其本地子网之外的其他计算机。因此,如果您的子网为 10.0.1.0/24,而您的计算机为 10.0.1.12,则它无需使用网关即可访问 10.0.1.0-10.0.1.255 之间的任何计算机。
网关通常需要位于机器的子网内,否则机器无法到达网关(没有像您所做的那样使用一些路由技巧)。回到上面的例子,如果网关的 IP 为 10.0.2.10,机器将无法到达网关(为了将流量发送到其子网之外,它们需要到达网关,而网关位于其子网之外)。
你是绝对肯定您的子网掩码是否正确?再举一个例子,如果您的 IP 为 10.0.1.0/16,网关为 10.0.2.0,则这完全有效。如果您的 IP 为 10.0.1.0/24,网关为 10.0.2.0,则不成立。我怀疑您的 ISP 为您提供了错误的网络掩码信息。
答案2
我自己已经找到了答案。
#cat /etc/sysconfig/network-scripts/route-eth0
1.0.0.0/24 dev eth0
default via 1.0.0.1 dev eth0
它看起来比 rc.local 中的行好一点,至少它与路由有关,如果是 RHEL 的网络配置方式
答案3
您无法使用 initscripts 实现相同的结果。以下是 /etc/sysconfig/network-scripts/network-functions 的相关部分:
if [ "$GATEWAY" = "0.0.0.0" ]; then
/sbin/ip route add default dev ${GATEWAYDEV}
else
/sbin/ip route add default via ${GATEWAY}
fi
这意味着您列出的两个命令中只有一个会运行,但不会同时运行。
更好的解决方案是从 1.0.0.0/24 中获取另一个 IP,并将其提供给服务器上的 eth0,而不是 2.0.0.1。然后,您有常规设置,将所有内容路由到 1.0.0.0/24,并使用 2.0.0.0/24 和完全合法的东西,例如代理 ARP 和 iptables。
如果您不能这样做,只需将这两个ip route
命令粘贴到 /etc/rc.local 中。
答案4
上周遇到了同样的问题。使用 手动设置路线ip route add...
,并使其持久化ip r l > /etc/sysconfig/network-scripts/route-em1
(之后稍微编辑一下),然后就好了