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

时间:2017-07-13 19:05:55

标签: centos7 qemu portforwarding kvm virsh

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

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

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

如何在KVM中制作它?

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

enter

现在,从主机http://192.168.123.91/打开工作正常,但http://127.0.0.1/未连接,但qemu命令显示# 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

我做错了什么?

1 个答案:

答案 0 :(得分:0)

你的界面类型是什么?根据{{​​3}}接口类型进行端口转发工作必须是用户。喜欢 <interface type="user">