强制所有网络流量通过默认网关

强制所有网络流量通过默认网关

我有一台机器,我想强制所有流量都通过默认网关。甚至本地网络上的流量。

我已经通过删除该接口的自动生成的路由来使其工作,但是这是通过网络脚本在 RHEL/Centos 中永久执行此操作的一种方法吗?

默认路由表过去看起来像这样:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0

但我希望它是在网络重新启动后:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0         UG    0      0        0 eth0

答案1

至少到网关的路由需要是直接的,即你需要

Kernel IP routing table
Destination     Gateway         Genmask           Flags Metric Ref    Use Iface
default         192.168.1.1     0.0.0.0           UG    0      0        0 eth0
192.168.1.1     0.0.0.0         255.255.255.255   U     0      0        0 eth0

最好的方法是修改本地网络的网络掩码(从/24 = 255.255.255.0到 ) /32 = 255.255.255.0并将网络地址设置为“192.168.1.1”。然后所有流量都应该通过网关。

答案2

看起来没有方法可以通过网络脚本删除我想要的路由。我想这不是一个非常常见的用例,但我真的不希望同一网络上的服务器能够相互通信。

但我确实发现了一个在网络初始化后运行的脚本。

该脚本在末尾/etc/sysconfig/network-scripts/ifup-post调用(如果存在)。/sbin/ifup-local

所以我确实用以下内容创建了一个:

#!/bin/bash
ip route delete 192.168.1.0/24

网络重启后,我没有这个本地网络路由。

答案3

要使您的更改保留在 rhel/centos 中,请创建一个文件/etc/sysconfig/static-routes,其中一行以关键字开头any,后跟您提供给 的参数route add

在文件中/etc/sysconfig/network-scripts/ifcfg-<interface>替换或添加一行DEFROUTE="no"

相关内容