如何通过主机中运行的代理路由所有 VM(qemu-kvm、libvirt)流量?

如何通过主机中运行的代理路由所有 VM(qemu-kvm、libvirt)流量?

主机:Ubuntu 20.04
代理客户端和服务器:
连接到服务器的 V2ray 代理客户端,在主机上可通过 127.0.0.110808 使用 Socks,可通过 127.0.0.1:10809 使用 http。
虚拟机:通过 qemu-kvm 和 libvirt 在主机中运行的多个虚拟机

我的目标:通过在主机中运行的代理路由所有虚拟机流量。

我以前能够在主机中使用 OpenConnect,因为这会影响所有机器的流量(我认为),所以它解决了问题。但现在我被迫使用 V2Ray,无法弄清楚如何通过主机中的代理客户端路由所有虚拟机流量。当我说路由所有流量时,我的意思是我已经设法使用第三方软件,例如 v2raya,它具有系统代理和 ip 转发等选项。这会影响虚拟机中的浏览器,但当使用dig命令检查虚拟机公共 ip 时,例如:dig +short myip.opendns.com @resolver1.opendns.com它不会受到影响。我根本不需要配置虚拟机!
我试过 iptables,但我对网络很陌生,并不认为我做对了。

以下是我尝试过的:

sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1
sysctl -w net.ipv4.conf.all.send_redirects=0

iptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 80 -j REDIRECT --to-port 10809
iptables -t nat -A PREROUTING -i virbr0 -p tcp --dport 443 -j REDIRECT --to-port 10809
ip6tables -t nat -A PREROUTING -i virbr0 -p tcp --dport 80 -j REDIRECT --to-port 10809
ip6tables -t nat -A PREROUTING -i virbr0 -p tcp --dport 443 -j REDIRECT --to-port 10809

virbr0 是 libvirt 在安装时自动创建的网络接口,用于为虚拟机执行网络操作(分配 ip 等)。我应该怎么做?我也很愿意接受任何可能有用的建议谢谢

相关内容