我有一台机器,我想强制所有流量都通过默认网关。甚至本地网络上的流量。
我已经通过删除该接口的自动生成的路由来使其工作,但是这是通过网络脚本在 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"
。