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

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

参考

在/etc/libvirt/hooks添加qemu脚本,模板如下,需要根据自己的配置进行修改,修改完毕后,重启libvirtd服务

获取虚拟机的名字:virsh list

#!/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

完。

相关文章
|
Linux 应用服务中间件 虚拟化
Linux系列——VMware虚拟机配置端口转发(端口映射),实现远程访问
Linux系列——VMware虚拟机配置端口转发(端口映射),实现远程访问
|
7月前
|
域名解析 API PHP
VM虚拟机全版本网盘+免费本地网络穿透端口映射实时同步动态家庭IP教程
本文介绍了如何通过网络穿透技术让公网直接访问家庭电脑,充分发挥本地硬件性能。相比第三方服务受限于转发带宽,此方法利用自家宽带实现更高效率。文章详细讲解了端口映射教程,包括不同网络环境(仅光猫、光猫+路由器)下的设置步骤,并提供实时同步动态IP的两种方案:自建服务器或使用三方API接口。最后附上VM虚拟机全版本下载链接,便于用户在穿透后将服务运行于虚拟环境中,提升安全性与适用性。
|
安全 网络安全
【Azure 环境】当本地网络通过ER专线与Azure云上多个虚拟网络打通,如何通过特定的网络策略来限制本地部分网段访问云上虚拟机22端口?
【Azure 环境】当本地网络通过ER专线与Azure云上多个虚拟网络打通,如何通过特定的网络策略来限制本地部分网段访问云上虚拟机22端口?
184 0
使用Java创建虚拟机并管理libvirt
使用Java创建虚拟机并管理libvirt
253 2
|
Java API Maven
使用Java Libvirt API 访问虚拟机信息
使用Java Libvirt API 访问虚拟机信息
295 1
|
Linux
【Linux】虚拟机ip端口如何固定
【Linux】虚拟机ip端口如何固定
169 0
|
Oracle 关系型数据库 网络安全
2、Window上的 虚拟机端口 暴露到 宿主机局域网教程
2、Window上的 虚拟机端口 暴露到 宿主机局域网教程
|
测试技术 网络安全 虚拟化
libvirt虚拟机热迁移
验证不同迁移特性下的热迁移效率。
3277 0
|
存储 XML 缓存
关于云平台虚拟机核心组件 libvirt 热迁移流程及关键参数介绍 | 龙蜥技术
一键了解libvirt虚拟机热迁移整体流程,迁移方式及关键迁移参数作用及影响。
|
网络协议 关系型数据库 应用服务中间件
linux虚拟机中各服务端口及配置文件路径
linux虚拟机中各服务端口及配置文件路径
580 0
下一篇
oss云网关配置