如何在同一台机器上添加两个网关

Omi*_*uin 3 rhel ip

我有一台具有两个接口的测试服务器。给一个接口分配了 ip 172.16.122.1 和 GW 172.16.xxx.xxx

现在我将电缆连接到第二个接口并给它 ip 10.2.2.98。

现在他们都在不同的子网上。

那么如何在 /etc/sysconfig/network 文件中添加第二个网关。当我尝试 ping 时,它将通过哪个接口 ping 远程系统。

Joh*_*han 8

从技术上讲,您可以拥有多个默认网关,但这在大多数情况下是核心 Internet 服务器、网络负载平衡器等的领域。

更常见的是需要多条路由,每条路由都有自己的路由器。

示例:您有一台位于两个网络之间的计算机,如下所示:192.168.1.5/24 和 192.168.2.5/24

您使用 192.168.1.1 作为默认网关 - 这是任何非本地连接的默认路由。本地连接被明确定义为任何子网中的任何内容,您在其上有一个处于 UP/RUNNING 状态的接口,并且没有定义明确的静态路由。

在此配置中,您已经拥有三个路由: 192.16.8.1.0/24 上本地所有内容的路由,网关是您在该子网上的 IP 地址。对于 192.168.2.0/24 上的系统,您有一个类似的路由……最后,您有一个默认路由,即“0.0.0.0”指向默认网关。(在某些操作系统上还有一些其他“伪”路由,例如用于访问环回设备,或用于广播流量)

现在假设 192.168.2.2 有一个路由器,它提供对多个网络的访问。通常这些是“内部”网络。您现在可以向这些网络添加“静态路由”。子网为 192.168.5.0/24 的网络示例

Linux 示例:

route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.2.2
Run Code Online (Sandbox Code Playgroud)

您可以通过一台路由器添加多个“静态”路由,或者路由可以根据需要使用任意数量的路由器/网关。

您可以使用命令查看已知路由表

netstat -rn
Run Code Online (Sandbox Code Playgroud)

Linux 特定命令将以略有不同的格式显示相同的信息。

ip route show
Run Code Online (Sandbox Code Playgroud)

指定的路由器必须“知道”如何到达目标网络,否则它将转到自己的默认网关并以这种方式转发您的数据包。

要使此配置更改持久化,您需要将其添加到系统配置文件中。静态路由与一个特定接口相关,因此它们不会进入 /etc/sysconfig/network。相反,这些进入位于/etc/sysconfig/network-scripts/

例如: /etc/sysconfig/network-scripts/route-eth0

您将“via”条目添加到此文件中以用于路由。这些行读作“通过网络接口设备 Z 上的网关 Y 访问网络 X。示例

default 192.168.1.1 dev eth0
192.168.5.0/24 via 192.168.2.2 dev eth0
192.168.6.0/24 via 192.168.2.2 dev eth0
Run Code Online (Sandbox Code Playgroud)

等等。