libvirt 默认给了两个网络配置,一个是 NAT,一个是 routed,正常情况下,使用 NAT 可以访问互联网,但是端口转发失效,使用 routed 端口转发有效,但是不能访问互联网。
使用 routed 网卡加伪装
解决方案也非常简单,改用 routed 网卡,然后添加伪装即可
然后按照正常的方式配置端口转发
上面的方法有个问题就是虚拟机不能访问物理机,会被一条防火墙规则拦住,如果要使用物理机的代理就不行
[1059303.451015] filter_IN_policy_libvirt-to-host_REJECT: IN=virbr1 OUT= MAC=52:54:00:00:b0:72:52:54:00:90:e9:e2:08:00 SRC=192.168.100.158 DST=192.168.100.1 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=44103 DF PROTO=TCP SPT=50370 DPT=80 WINDOW=64240 RES=0x00 SYN URGP=0
临时解决方案
还是使用 NAT 网卡,然后把主机当成跳板机。