Kvm-Virtualization

帶有 Tap 介面的 QEMU VM 可以看到所有包來自管理程序而不是真實源 IP

  • July 29, 2021

我已經使用 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。

虛擬機只看到 HV IP

有人甚至試圖使用我的伺服器進行 DNS 放大攻擊(儘管在我的 PFSense 防火牆上阻止了傳出) DNS放大攻擊

Fail2ban 也阻止了錯誤的 IP 顯示阻塞的 HV ip 的 fail2ban 日誌

原因是後路由 iptable 規則。

iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE使用命令刪除後,iptables -t nat -D POSTROUTING -o br0 -j MASQUERADE它可以工作。

引用自:https://serverfault.com/questions/1072978