Virtualbox IP 转发内的隧道接口

Virtualbox IP 转发内的隧道接口

我正在研究一种解决方案,通过 OpenVPN 隧道将驻留在 Virtualbox 客户机内部的开发堆栈公开到互联网。

OpenVPN 客户端在来宾虚拟机内部启动,并成功连接到具有公共 IP 的 EC2 实例。

我在 EC2 盒子上添加了一条路由,以包含客户虚拟机端的 LAN。实际上,客户虚拟机具有以下接口:

客人

eth0:10.0.2.15 tun0:10.8.0.2

EC2

tun0:10.8.0.1 eth0:10.254.254.234

我可以从 EC2 ping 到客户机端的 tun0(10.8.0.2) 以及 eth0(10.0.2.15)

现在有趣的部分开始了,当我在 EC2 端包含一个 DNAT 规则以将 SIP 流量从 10.254.254.234 定向到 10.0.2.15 时。

iptables -t nat -I PREROUTING -d 10.254.254.234 -j DNAT --to-destination 10.0.2.15

由于存在正确的路由,流量通过隧道发送,当我使用 tcpdump 通过 tun0 时,我看到消息到达另一端 (Virtualbox)。但是该数据包的最终目的地是虚拟机上的 eth0,并且它永远不会从 tun0 转发到 eth0。

IP 转发已启用,并且 iptables 中的 FORWARD 链上不存在 REJECT 规则。

此外,如果我让进程(SIP 代理)监听隧道接口,即使我使用 tcpdump 监听时看到数据包,并且代理绑定到隧道的 IP,它也永远不会报告在其日志中接收到流量。

答案1

你难道不是说

iptables -t nat -I PREROUTING -s 10.254.254.234 -j DNAT --to-destination 10.0.2.15

(您的规则是两个目标地址)

相关内容