让 Linux 回复某些 ARP 请求

让 Linux 回复某些 ARP 请求

我正在尝试使用某种路由技巧,希望我的 Linux 服务器能够响应 arp 请求,10.0.0.1尽管eth0

  • 10.0.0.1不是配置的 IP eth0(在这种情况下内核仍然会这样做)
  • 10.0.0.1不是路由到该服务器的其他接口(在这种情况下 arp 代理会有所帮助)。

效果应该是其他设备eth0会将包裹路由到10.0.0.1我的服务器,然后我可以在PREROUTING其他表中处理它们。

我可以这样做吗?最好不需要额外的守护进程?


根据要求,这是我的动机(但请注意,这个问题是不是关于如何通过不同方式实现这一目标的建议——我真正感兴趣的是知道上述是否可能,而不是是否合理:-))。

假设10.0.0.1是公共 IP 地址,并且是唯一路由到相关机器的 IP 地址。系统 ( host) 包含虚拟机 ( guest)。我想guest相信10.0.0.1是他的,所以给它一个不同的 IP 并进行 nat 不是我想要做的。相反,我host

  • 有另一个 IP 地址(192.168.0.1),非公开路由,
  • 表现得eth0好像它有10.0.0.1
  • 将对 的任何访问重定向10.0.0.1:2222192.168.0.1,即在本地处理,
  • 将任何其他流量路由到所连接的10.0.0.1虚拟接口。guest

这解释了问题中的两个约束:机器guest可能不总是处于运行状态,因此提到的路由不会总是存在——这就是排除代理 ARP 的原因。另外,我无法对 进行评估10.0.0.1eth0因为让 Linux 路由发往内核认为是本地地址的包确实很困难。例如,local根据 ,路由表的优先级为 0 。ip rule

答案1

那么使用 IP 别名(例如 eth0:1 )怎么样?这将导致接口响应 ARP,并允许您使用 iptables 管理其行为。

此外,不清楚为什么 proxy-arp 在这里对您没有帮助,因为您可以使用 iptables 规则中断预期的行为。

你能详细解释一下你想要实现的目标吗?

相关内容