我已经使用 Alpine Linux 设置了一个非常简单的 Hypervisor,我的 VM 看到所有流量都来自 hypervisor 的 IP。
这也意味着如果 fail2ban 试图阻止攻击,它总是会阻止虚拟机管理程序 IP
如何让 VM 看到真实的 IP 地址,而不仅仅是管理程序的 IP?
接口设置
在 HV ( 192.168.5.5
) 上,我有一个br0
工作正常的桥接接口
# tun1 setup script on Hypervisor
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
iptables -P FORWARD ACCEPT
ip tuntap add dev tap1 mode tap user root
ip link set dev tap1 up
ip link set tap1 master br0
qemu-system-x86_64 [..non related parameters removed ..] \
-device virtio-net-pci,netdev=network0,mac=02:1f:ba:26:d7:56 \
-netdev tap,id=network0,ifname=tap1,script=no,downscript=no
VM 可以访问 Internet,但它看到的所有流量都来自管理程序的 IP。
原因是后路由 iptable 规则。
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
使用命令删除后,iptables -t nat -D POSTROUTING -o br0 -j MASQUERADE
它可以工作。