将发往VPN子网内未分配的别名IP的所有stream量redirect到另一个VPN内的固定IP

我有一个服务器托pipe多个桥接(即水龙头)VPN使用openvpn,其中每个VPN有一个不同的10.8.X.0 / 24子网。

我希望将发送到每个VPN中的特定未分配IP地址(例如10.8.X.254)的stream量redirect到不同VPN上的固定地址(例如10.8.1.10)。 这样做的目的是通过保持VPN服务器上大量的路由configuration,使得客户端configuration保持相对干净(即它知道某些stream量总是到达自己的子网上的地址254),并且也更容易修改目的地知识产权在未来。

首先,在VPN服务器上,我用内核启用了IP转发

echo 1 > /proc/sys/net/ipv4/ip_forward 

然后,我尝试使用iptables在VPN服务器上为每个VPN设置NATredirect

 sudo iptables -t nat -A PREROUTING -s 10.8.2.0/24 -d 10.8.2.254 -j DNAT --to-destination 10.8.1.10 

但是,从VPN内ping请求到10.8.2.254失败,出现Destination Host Unreachable并且tshark在服务器的VPN接口上报告以下networking通信

 6.943311 10.8.2.12 -> 10.8.2.1 SSH 274 Encrypted response packet len=208 6.943347 10.8.2.1 -> 10.8.2.12 TCP 66 42926 > ssh [ACK] Seq=97 Ack=625 Win=563 Len=0 TSval=3930766820 TSecr=80207294 6.959100 9e:10:2c:67:91:2a -> Broadcast ARP 42 Who has 10.8.2.254? Tell 10.8.2.12 7.983824 9e:10:2c:67:91:2a -> Broadcast ARP 42 Who has 10.8.2.254? Tell 10.8.2.12 

这似乎表明服务器不知道在哪里发送stream量,即使我已经configuration了redirect规则如上。

我以为也许我应该/也是通过VPN设置来configuration路由,但是对于包含多个桥接VPN的系统却无法解决这个问题。 我能find的与redirectstream量相关的所有特定于VPN的信息均基于路由(tun)VPN。

我想避免将目标主机添加到每个VPN中的解决scheme,因为当VPN服务器托pipe的VPN数量以及最终增加的VPN服务器数量会变得越来越复杂。

10.8.2.12看到10.8.2.254在同一个子网上,因此它请求10.8.2.254的MAC地址将它作为一个目的MAC插入到将来的数据包到10.8.2.254。 由于10.8.2.254不存在,所以没有人回复,10.8.2.12从来没有find什么MAC设置为目的MAC。

尝试在主服务器上使用proxy_arp。 echo 1> / proc / sys / net / ipv4 / conf / ethXX / proxy_arp

运行tcpdump,你应该看到VPN服务器响应10.8.x.254的ARP查询和自己的MAC地址,这应该让你更进一步。