使用libvirt 0.8.3从主机到访客的端口转发在Ubuntu上使用KVM

前端之家收集整理的这篇文章主要介绍了使用libvirt 0.8.3从主机到访客的端口转发在Ubuntu上使用KVM前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
主机有一个可用的外部IP,因此我使用NAT设置我的KVM来宾.

如何设置端口转发以将来自外部的一些请求转发给来宾?

我找不到任何关于此的文件.最接近的答案可能是this answer,但后来也提到在libvirt 0.8.3中有更简单的方法可以做到这一点.有谁知道更新的方法来做到这一点?

@H_502_5@
@H_502_5@
这是使用钩子脚本( source)设置端口转发的更好方法.

在/ etc / libvirt / hooks / qemu中:

  1. #!/bin/sh
  2.  
  3. GUEST_NAME=
  4. HOST_PORT=
  5. GUEST_IPADDR=
  6. GUEST_PORT=
  7.  
  8. if [ "$1" = "$GUEST_NAME" ]; then
  9. if [ "$2" = start ]; then
  10. iptables -t nat -A PREROUTING -p tcp --dport "$HOST_PORT" \
  11. -j DNAT --to "$GUEST_IPADDR:$GUEST_PORT"
  12. iptables -I FORWARD -d "$GUEST_IPADDR/32" -p tcp -m state \
  13. --state NEW -m tcp --dport "$GUEST_PORT" -j ACCEPT
  14. elif [ "$2" = stopped ]; then
  15. iptables -t nat -D PREROUTING -p tcp --dport "$HOST_PORT" \
  16. -j DNAT --to "$GUEST_IPADDR:$GUEST_PORT"
  17. iptables -D FORWARD -d "$GUEST_IPADDR/32" -p tcp -m state \
  18. --state NEW -m tcp --dport "$GUEST_PORT" -j ACCEPT
  19. fi
  20. fi

您应该在顶部设置四个变量以适合您的libvirt设置.

您将需要重新启动libvirt-bin,它在ubuntu上完成:

  1. sudo sh -c 'service libvirt-bin stop; service libvirt-bin start'

那么你需要重启客人.在Ubuntu上,您需要调整/etc/apparmor.d/usr.sbin.libvirtd以允许钩子脚本执行:

旁边的

  1. /usr/sbin/* PUx,

附加

  1. /etc/libvirt/hooks/* PUx,

然后重新加载apparmor:

  1. sudo service apparmor reload

可能有一种方法可以使用virsh / dumpxml / iface-dumpxml自动配置$GUEST_IPADDR,但我还没有找到它.或者,可以在网络xml:documentation中静态设置IP.

据我所知,网络过滤器只能用于限制虚拟网络上发生的事情,它们对端口转发没有用.

@H_502_5@

猜你在找的Ubuntu相关文章