首页 > 其他分享 >使用libvirt的端口转发,实现虚拟机跟外界互通

使用libvirt的端口转发,实现虚拟机跟外界互通

时间:2024-03-25 21:00:41浏览次数:27  
标签:iptables Guest -- 端口 虚拟机 ipaddr libvirt Host port

参考

在/etc/libvirt/hooks添加qemu脚本,模板如下,需要根据自己的配置进行修改:

#!/bin/bash
# used some from advanced script to have multiple ports: use an equal number of guest and host ports

echo `date` hook/qemu "${1}" "${2}" >>/root/hook.log


# Update the following variables to fit your setup

### First VM
Guest_name=VM_1_NAME
Guest_ipaddr=VM_1_IP
Host_port=(  '1234' )
Guest_port=( '22' )

length=$(( ${#Host_port[@]} - 1 ))
if [ "${1}" = "${Guest_name}" ]; then
   if [ "${2}" = "stopped" ] || [ "${2}" = "reconnect" ]; then
       for i in `seq 0 $length`; do
            echo "kvm-Ho." >>/root/hook.log
            /sbin/iptables -D FORWARD -o virbr0 -d  ${Guest_ipaddr} -j ACCEPT
            /sbin/iptables -t nat -D PREROUTING -p tcp --dport ${Host_port[$i]} -j DNAT --to ${Guest_ipaddr}:${Guest_port[$i]}
       done
   fi
   if [ "${2}" = "start" ] || [ "${2}" = "reconnect" ]; then
       for i in `seq 0 $length`; do
               echo "kvm-Hey." >>/root/hook.log
            /sbin/iptables -I FORWARD -o virbr0 -d  ${Guest_ipaddr} -j ACCEPT
            /sbin/iptables -t nat -I PREROUTING -p tcp --dport ${Host_port[$i]} -j DNAT --to ${Guest_ipaddr}:${Guest_port[$i]}
       done
   fi
fi

### Second VM
Guest_name=VM_2_NAME
Guest_ipaddr=VM_2_IP
Host_port=(  '7465' )
Guest_port=( '22' )

length=$(( ${#Host_port[@]} - 1 ))
if [ "${1}" = "${Guest_name}" ]; then
   if [ "${2}" = "stopped" ] || [ "${2}" = "reconnect" ]; then
       for i in `seq 0 $length`; do
            echo "kvm-Ho." >>/root/hook.log
            /sbin/iptables -D FORWARD -o virbr0 -d  ${Guest_ipaddr} -j ACCEPT
            /sbin/iptables -t nat -D PREROUTING -p tcp --dport ${Host_port[$i]} -j DNAT --to ${Guest_ipaddr}:${Guest_port[$i]}
       done
   fi
   if [ "${2}" = "start" ] || [ "${2}" = "reconnect" ]; then
       for i in `seq 0 $length`; do
               echo "kvm-Hey." >>/root/hook.log
            /sbin/iptables -I FORWARD -o virbr0 -d  ${Guest_ipaddr} -j ACCEPT
            /sbin/iptables -t nat -I PREROUTING -p tcp --dport ${Host_port[$i]} -j DNAT --to ${Guest_ipaddr}:${Guest_port[$i]}
       done
   fi
fi

修改完毕,增加可执行权限:

sudo chmod +x /etc/libvirt/hooks/qemu

重启libvirtd服务:

systemctl restart libvirtd

下面是我的机器上的配置:

#!/bin/bash
# used some from advanced script to have multiple ports: use an equal number of guest and host ports

echo `date` hook/qemu "${1}" "${2}" >>/tmp/hook.log


# Update the following variables to fit your setup

### First VM
Guest_name=fedora39
Guest_ipaddr=192.168.122.40
Host_port=(  '9090' )
Guest_port=( '22' )

length=$(( ${#Host_port[@]} - 1 ))
if [ "${1}" = "${Guest_name}" ]; then
   if [ "${2}" = "stopped" ] || [ "${2}" = "reconnect" ]; then
       for i in `seq 0 $length`; do
            echo "kvm-Ho." >>/tmp/hook.log
            /sbin/iptables -D FORWARD -o virbr0 -d  ${Guest_ipaddr} -j ACCEPT
            /sbin/iptables -t nat -D PREROUTING -p tcp --dport ${Host_port[$i]} -j DNAT --to ${Guest_ipaddr}:${Guest_port[$i]}
       done
   fi
   if [ "${2}" = "start" ] || [ "${2}" = "reconnect" ]; then
       for i in `seq 0 $length`; do
               echo "kvm-Hey." >>/tmp/hook.log
            /sbin/iptables -I FORWARD -o virbr0 -d  ${Guest_ipaddr} -j ACCEPT
            /sbin/iptables -t nat -I PREROUTING -p tcp --dport ${Host_port[$i]} -j DNAT --to ${Guest_ipaddr}:${Guest_port[$i]}
       done
   fi
fi

exit 0

完。

标签:iptables,Guest,--,端口,虚拟机,ipaddr,libvirt,Host,port
From: https://www.cnblogs.com/pengdonglin137/p/18095332

相关文章

  • pve 下的群晖虚拟机硬盘空间扩容的记录
    pve下,105号群晖虚拟机,btrfs系统,sata硬盘。虚拟机容量硬盘130G,扩展至140G,还需要命令行和网页存储管理器界面操作,以实现扩容的目的。df-hFilesystemSizeUsedAvailUse%Mountedon/dev/md07.9G1.8G6.0G23%/devtmpfs......
  • ESXI虚拟机操作系统上安装部署VCSA
    目录一、配置安装VCSA系统二、配置安装VCSA服务三、登录VCSA初始化操作工具:VMware工作站版、VCSA镜像前提工作:VMware工作站版中创建ESXI虚拟机、配置网络口和DNSweb登录虚拟机,检查许可、NTP服务状态、添加数据存储这里我已经添加完成一、配置安装VCSA系统......
  • 使用libvirt创建快照时提示权限不足
    问题在ubuntu20.04上使用virt-manager安装了一个fedora虚拟机,在创建快照时提示权限不足:Errorcreatingsnapshot:internalerror:Childprocess(/usr/local/bin/qemu-imgsnapshot-csnapshot1/vol_8t/fedora39_kvm/fedora39.qcow2)unexpectedexitstatus126:libvirt:......
  • redis主从搭建(测试环境单机多端口)
    采用一主两从完成搭建,实现了主节点做写操作,从节点做读操作,并且主从会进行同步。步骤需要注意的有以下几点:replica-announce-ip设置为自己虚拟机的ip地址requirepass设置为无密码,否则主从节点将连接失败如果端口被占用,需要首先找到占用端口号的进程,然后将其杀死......
  • 实验二:通过Console端口对交换机进行配置
    目录实验目的:实验环境配置:实验原理:实验步骤:实验结果:实验分析:结论:实验目的:(1)掌握通过Console端口对交换机进行配置的方法。(2)理解并掌握交换机初始配置。实验环境配置:选择设备(一台PC和一台交换机)——连控制台线(PC0:RS232—交换机0:Console)——通过Console端口对交换机......
  • vmware虚拟机安装2024(超详细)
    vmware虚拟机安装(超详细)前言前言之前安装vmware时发现没有适合小白下载的详细步骤,发现大部分博客一部分详细一部分不详细,并且没有2024版的,我就出了一个非常详细的步骤,直接傻瓜式安装,照着点就可以了。一、安装vmware下载vmware链接链接:https://www.vmware.com/......
  • 计算机常用端口号
    ftp:(20端口)用于ftp服务,用于数据传输。ftp:(21端口)用于文件上传和下载。ssh:(22端口)用于安全Shell访问和文件传输。telnet:(23端口)用于远程命令行计算机管理。smtp:(25端口)用于发送电子邮件。dns:(53端口)用于域名解析。dhcp:(67和68端口)用于动态分配IP地址和配置网络参数。tftp:(69......
  • 端口镜像,STP
    端口镜像,STP端口镜像:常用于抓包或者审计监控。1、SPAN——本地端口镜像switchportanalyzer;2、RSPAN——二层远端端口镜像;3、ERSPAN——三层远端端口镜像。----------------------------------------------------------------------------------------===============......
  • 为什么连接数据库的端口号与配置文件中的端口号不一致?
    为什么连接数据库的端口号与配置文件中的端口号不一致?背景介绍:在安装openGauss3.0数据库时,发现配置文件中写的端口号是5432,但是数据库连接时,执行gsql--dpostgres-p5432提示错误,无法连接到数据库。报错内容:[omm@hostname]$gsql-dpostgres-p5432failedtoconn......
  • 交换机高级-端口安全
    端口安全1、一旦接口开启端口安全功能,那么接口所学到的动态MAC就会转换成安全MAC地址;2、安全MAC地址默认情况下只能学习1个,可以通过命令手动修改学习数量;3、安全MAC地址没有老化时间(但是依然存在内存中,接口shudown或者设备重启会瞬间老化)可通过命令设置老化时间:port-securi......