更改特定目标主机的源IP

这是对我这个问题的跟进。 (仍在Debian 7.8)

问题不是真正的IPSec相关或任何东西,因为我甚至不能用“正确的”源IP ping通远程主机(通过ping -I eth1:ipsec)。

这里是必要的信息:

inet xxx.xxx.xxx.94/24 brd xxx.xxx.xxx.255 scope global eth1 inet xxx.xxx.xxx.92/29 brd xxx.xxx.xxx.95 scope global secondary eth1:ipsec 

我希望我的连接使用eth1:.94的默认gw和标准IP,但使用eth1:ipsec:.92的一个连接到远程主机。

我相信这是一个路由问题,所以我添加了一个路由规则表:

 0: from all lookup local 2: from all to xxx.xxx.xxx.21 lookup 17 32766: from all lookup main 32767: from all lookup default 

和17有:

 xxx.xxx.xxx.21 via xxx.xxx.xxx.91 dev eth1 src xxx.xxx.xxx.92 

但即使是现在,如果我ping的数据包的源IP为.94(即使使用ping -I eth1:ipsec或-I xxx.xxx.xxx.92):

 xxx.xxx.xxx.94 > xxx.xxx.xxx.21: ICMP echo request, id 20865, seq 9, length 64 IP xxx.xxx.xxx.21 > xxx.xxx.xxx.94: ICMP echo reply, id 20865, seq 9, length 64 

另外SNATTING通过iptables数据包不会做任何事情,仍然错误的源IP。

我完全迷失在这里

经过几天痛苦的debugging,路由和路由表和一个冒充的头,我放弃和重新configuration所有IPSec客户端直接控制使用.92 IP和一切正常工作现在。

我仍然为什么不能源路由或SNAT数据包…在我的testing环境中进行一些严重的testing(我怀疑IP混叠,起搏器和路由表之类的一些疯狂的不兼容或类似的东西,或者只是简单的愚蠢)。