在不使用lo的情况下在不同的别名别名之间路由

我有一个名为eth0:0 eth0的别名。

短版本:我想通过外部网关将数据包从一个虚拟接口路由到另一个虚拟接口,而不是通过回送接口。

详细:我想从eth0:0 (通过使用LD_PRELOAD ,我可以更改src IP地址)到eth0路由数据包。 但是这是由lo接口处理,我不想这样做。 我想要的是从eth0:0数据包应该去一些默认网关,然后将发送处理的数据包,然后发送到eth0

我可以使用eth0:0别名的源IP地址发送数据包,但是完整的设置不起作用,因为我无法为eth0eth0:0分配不同的MAC地址,所以当外部网关必须发回数据包时,它不知道在哪里发送数据包。

什么是实现这一目标的好方法?

编辑:我被告知这个问题不清楚。

 eth0: IP address: 10.0.0.1 eth0:1: IP address: 10.0.0.2 Gateway: 10.0.0.10 

我想通过外部网关10.0.0.10从10.0.0.2到10.0.0.1发送数据包,这样我可以对数据包做一些处理,然后发送到10.0.0.1。

基本上,10.0.0.0.2 < – >网关< – > 10.0.0.1

这听起来像是你想要一种开发设置。 我在一台主机上实现这一点的方式是使用虚拟化。

如果您使用的是Linux的桌面版本,那么只需安装Virtual Box并在其中安装另一个Linux副本。 将虚拟机设置为使用networking桥接进行networking连接。

然后使用这样的两个不同的子网

主办。

 address 10.0.0.0.1 netmask 255.255.255.0 gateway 10.0.0.254 

VM

 address 10.0.1.1 netmask 255.255.255.0 gateway 10.0.1.254 

将您的路由器设置为使用ip别名在两个子网上。

如果2个接口位于同一个子网上,那么数据包不会通过线路发送出去,而是使用物理适配器的快捷方式 – 不使用环回设备。 如果你真的想以这种方式路由数据包(我无法想象为什么),那么他们将不得不被configuration在单独的子网(并连接到一个路由器,知道在哪里发送数据包)。

我不能为eth0和eth0:0分配不同的MAC地址,所以当外部网关需要发回数据包时,无法确定发送数据包的位置。

我想你的路由器正在把它当作一个桥接回路,在这种情况下,只需要在networking上的其他地方使用reflection器。

如果你从本地路由表中删除IP(这是可能的,它将发送出eth0),然后在返回的路上(有争议的,它将永远退回),Linux将认为它是一个数据包被转发,而不是本地交付。 你永远不会处理你回来的数据包,但尝试转发它们。

如果您想将networking问题添加到设备。 试着看看netem

例如。

 tc qdisc add dev lo parent root netem loss random 50 

将丢弃发往lo的数据包的50%。