首页 文章

如何在KVM中本地设置端口转发?

提问于
浏览
0

我使用Virsh使用KVM管理虚拟机 . 拥有一个带有http服务的主机和虚拟机(端口80) . 如何在不使用iptables,firewalld或route等防火墙的情况下设置端口转发以将http服务公开给互联网?

Actualy我使用iptables,很难管理所有连接类型 .

我可以在KVM中设置规则来重定向主机和虚拟机之间的http流量吗?例如,VirtualBox在网络配置中有一个端口转发选项,比如主机ip,主机端口,虚拟IP,虚拟端口和主机端口的监听端口localhost(0.0.0.0) .

Howto如何在KVM中做到这一点?

我尝试使用qemu artguments使用本机端口转发编辑XML但不起作用:

# virsh edit demo
  > <domain type='kvm' xmlns:qemu='http://libvirt.org/schemas/domain/qemu/1.0'>
  >  <name>...
  > ...
  >   <qemu:commandline>
  >     <qemu:arg value='-redir'/>
  >     <qemu:arg value='tcp:80::80'/>
  >   </qemu:commandline>
  > </domain>
# virsh start demo
# ps -aux | grep qemu
root     30119 58.8  2.9 3421616 330084 ?      Sl   15:38   0:07 qemu-system-x86_64 -enable-kvm -name demo -S -machine pc-i440fx-xenial,accel=kvm,usb=off -cpu Haswell -m 2048 -realtime mlock=off -smp 2,sockets=2,cores=1,threads=1 -uuid c996f3b2-5e16-470f-9ad6-e591fc9a2537 -nographic -no-user-config -nodefaults -chardev socket,id=charmonitor,path=/var/lib/libvirt/qemu/domain-demo/monitor.sock,server,nowait -mon chardev=charmonitor,id=monitor,mode=control -rtc base=utc,driftfix=slew -global kvm-pit.lost_tick_policy=discard -no-hpet -no-shutdown -global PIIX4_PM.disable_s3=1 -global PIIX4_PM.disable_s4=1 -boot strict=on -device ich9-usb-ehci1,id=usb,bus=pci.0,addr=0x4.0x7 -device ich9-usb-uhci1,masterbus=usb.0,firstport=0,bus=pci.0,multifunction=on,addr=0x4 -device ich9-usb-uhci2,masterbus=usb.0,firstport=2,bus=pci.0,addr=0x4.0x1 -device ich9-usb-uhci3,masterbus=usb.0,firstport=4,bus=pci.0,addr=0x4.0x2 -device virtio-serial-pci,id=virtio-serial0,bus=pci.0,addr=0x3 -drive file=/var/kvm/images/demo.img,format=qcow2,if=none,id=drive-virtio-disk0 -device virtio-blk-pci,scsi=off,bus=pci.0,addr=0x5,drive=drive-virtio-disk0,id=virtio-disk0,bootindex=1 -netdev tap,fd=26,id=hostnet0,vhost=on,vhostfd=28 -device virtio-net-pci,netdev=hostnet0,id=net0,mac=52:54:00:43:ed:8d,bus=pci.0,addr=0x2 -chardev pty,id=charserial0 -device isa-serial,chardev=charserial0,id=serial0 -chardev socket,id=charchannel0,path=/var/lib/libvirt/qemu/channel/target/domain-demo/org.qemu.guest_agent.0,server,nowait -device virtserialport,bus=virtio-serial0.0,nr=1,chardev=charchannel0,id=channel0,name=org.qemu.guest_agent.0 -device usb-tablet,id=input0 -device virtio-balloon-pci,id=balloon0,bus=pci.0,addr=0x6 -redir tcp:80::80 -msg timestamp=on

现在,从主机http://192.168.123.91/打开工作正常,但http://127.0.0.1/没有连接,但qemu命令说 -redir tcp:80::80 .

我做错了什么?

1 回答

  • 0

    你的界面类型是什么?按照qemu man page接口类型进行端口转发工作必须是用户 . 喜欢 <interface type="user">

相关问题