pfe*_*ein 10 networking virtualization vpn iptables virtualbox
我有一个 VirtualBox VM(主机和来宾 Ubuntu Maverick)。我的 VPN 提供商使用 OpenVPN 来设置 TUN。我想设置一些东西,以便来自 VM 的流量仅通过 VPN,并且如果 VPN 出现故障(它发生了)就会被丢弃。建议?我的iptables-fu有点弱
我尝试过的:使用 VirtualBox 的“仅主机网络”,它为您提供了主机上到来宾的 vboxnet0 环回接口,但无法正确获取 iptables/路由。我想避免在 VM 上使用 NAT,因为我已经使用了双 NAT(ISP 和家用路由器),再多一个级别会让我大吃一惊。
其他可能性:切换到 TAP(如何?)并桥接到 VM。在 VM 内创建 VPN 并过滤除 VPN 与 iptables 连接之外的所有 eth0 流量(但请参见下文)
加分点:如果您能告诉我如何在主机和来宾上使用不同的 VPN 出口点,而无需从来宾通过主机的 VPN 进行双隧道流量。
小智 4
还会有其他解决方案,但这就是我的想法:
echo 1 > /proc/sys/net/ipv4/ip_forward
此时,主机已建立 VPN 连接,虚拟机会将所有流量路由到主机。剩下要做的就是限制主机,以便它不允许来宾路由任何不会通过 tun0 设备的流量。您可以使用一组 iptables 规则来做到这一点,如下所示:
iptables -P FORWARD DROP
iptables -A FORWARD -o tun0 -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
那应该有效。第一条规则设置默认策略以丢弃 FORWARD 链中的数据包。这仅影响您的主机将路由的数据包,而不影响到主机(输入)或来自主机(输出)的数据包。第二条规则允许任何路由出 tun0 的流量 - 如果需要,您可以使用 --source 来加强它。最后一条规则应该让从 tun0 返回的回复路由回虚拟机。
您的 VPN 是否会期望 tun 接口上的所有数据包都来自单个 IP?如果是这样,您还需要添加 NAT 规则。大概是这样的:
iptables -t nat -A POSTROUTING -o tun0 -j SNAT --to-source {your host tun0 ip}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
14456 次 |
最近记录: |