我希望能够通过特定的网络接口发出请求,如下所示:
ping -I eth0.1 google.be
ping -I eth0.2 google.be
此示例适用于我的多宿主 OpenWRT 路由器。
我现在想在我的电脑上做类似的事情。
问题是:这不是一个真实的接口,而是VPN接口。
现在我已经设置了 OpenVPN,它已经创建了一个TUN
设备。我目前选择它,因为它是默认的。我不介意切换到TAP
orPPTP
是否会让这更容易。
所以我想做的是执行与第一个命令类似的操作,但是:
ping -I tun0 google.be
现在,这不起作用并且超时。我也尝试过使用TAP
界面,这给了我网络不可达错误。
我想我需要添加一些iproute
条目或类似的内容。
重要提示:我不知道哪个我需要通过 VPN 设备联系的服务器/IP,这是一个变量,所以我不能只为其设置路由。
答案1
为了使其发挥作用,必须满足几个条件:
- 您的系统必须通过 VPN 将数据包路由到目标。
- VPN 端点必须将数据包转发到目标。
- 目标的路由必须将数据包返回到 VPN 端点。这是非常不可能的。实现这一目标的唯一真正选择是使用 SNAT。目标必须相信数据包是从 VPN 端点的 WAN 接口发送的。