基于策略的路由优先级行为

基于策略的路由优先级行为

我对使用基于策略的路由时优先级的行为有一个简单的问题。我正在运行 Ubuntu 18.04(内核是 4.15.0-1021-aws)。

我使用这台机器作为网关,将数据包从一个接口转发到另一个接口。假设 eth0 -> eth1。

对于机器本身生成的数据包,我不希望它们通过 eth1 路由。但是,来自不同机器(与 eth0 位于同一子网中192.168.0.0/24)的数据包需要通过 eth1 路由。

eth0 的 ip 地址是192.168.0.1。转发数据包的路由表称为forwarded。因此我添加了以下规则:

0:  from all lookup local 
1:  from 192.168.0.1/32 lookup default 
10: from 192.168.0.1/24 lookup forwarded 
32766:  from all lookup main 
32767:  from all lookup default 

但是,当我尝试从这台机器 ping 时,它使用forwarded路由表。有没有办法做到这一点,还是我在这里犯了什么错误?

答案1

在本地机器上创建的数据包首先接收0.0.0.0/32源 IP,这称为,unspecified address并且该地址在某些时候会被内核用数据包离开机器的接口的 IP 替换。

为了正确路由本地来源数据包,使用规则将这些数据包委派到正确的方向通常很有帮助from 0.0.0.0/32。这对于来自未绑定到特定接口 IP 的服务的数据包尤其重要。

相关内容