TL;DR:我想从同一主机上的 VM 内部访问主机 IP 地址的端口 443,并将我的请求转发到同一主机上的其他 VM。
我正在使用 Libvirt 管理 Debian 9 主机上 QEMU/KVM 上运行的一些虚拟机。我已使用 Libvirt 配置 NAT 网络(子网 192.168.122.0/24,网关 192.168.122.1),并有一个设置以下 iptables 规则的钩子脚本:
iptables -D FORWARD -m state -d 192.168.122.0/24 --state NEW,RELATED,ESTABLISHED -j ACCEPT
iptables -t nat -D PREROUTING -p tcp -d 192.168.0.2 --dport 443 -j DNAT --to-destination 192.168.122.128:443
它们本质上是将主机端口的连接端口转发到客户机。这样,运行在 192.168.122.128 虚拟机 443 端口上的服务就可以通过 443 端口上的主机 (192.168.0.2) 的外部 IP 访问。
我希望能够从在同一主机上运行的虚拟机访问端口转发的服务(192.168.0.2:443 或 192.168.122.1:443)。目前,当我访问同一 NAT 网络上的虚拟机上的端口 443 时,我的请求不会被转发。
如何使用 iptables 将端口从主机转发到客户机以及将客户机转发到客户机?