使用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虚拟机配置端口转发(端口映射),实现远程访问
|
4月前
|
安全 网络安全
【Azure 环境】当本地网络通过ER专线与Azure云上多个虚拟网络打通,如何通过特定的网络策略来限制本地部分网段访问云上虚拟机22端口?
【Azure 环境】当本地网络通过ER专线与Azure云上多个虚拟网络打通,如何通过特定的网络策略来限制本地部分网段访问云上虚拟机22端口?
|
6月前
|
Java API Maven
使用Java Libvirt API 访问虚拟机信息
使用Java Libvirt API 访问虚拟机信息
|
6月前
|
Java
使用Java创建虚拟机并管理libvirt
使用Java创建虚拟机并管理libvirt
111 2
|
7月前
|
Linux
【Linux】虚拟机ip端口如何固定
【Linux】虚拟机ip端口如何固定
49 0
|
7月前
|
Oracle 关系型数据库 网络安全
2、Window上的 虚拟机端口 暴露到 宿主机局域网教程
2、Window上的 虚拟机端口 暴露到 宿主机局域网教程
|
网络协议 关系型数据库 应用服务中间件
linux虚拟机中各服务端口及配置文件路径
linux虚拟机中各服务端口及配置文件路径
285 0
|
存储 XML 缓存
关于云平台虚拟机核心组件 libvirt 热迁移流程及关键参数介绍 | 龙蜥技术
一键了解libvirt虚拟机热迁移整体流程,迁移方式及关键迁移参数作用及影响。
|
存储 Linux Shell
虚拟机安装(安装(克隆)虚拟机 配置网络 安装Centos7 配置(修改)虚拟机的静态IP 修改网卡的配置文件 测试网络是否互通外部工具 连接linux系统 设置服务器时间 修改主机名)(下)
虚拟机安装(安装(克隆)虚拟机 配置网络 安装Centos7 配置(修改)虚拟机的静态IP 修改网卡的配置文件 测试网络是否互通外部工具 连接linux系统 设置服务器时间 修改主机名)
449 0
|
分布式计算 Hadoop Linux
虚拟机安装(安装(克隆)虚拟机 配置网络 安装Centos7 配置(修改)虚拟机的静态IP 修改网卡的配置文件 测试网络是否互通外部工具 连接linux系统 设置服务器时间 修改主机名)(上)
虚拟机安装(安装(克隆)虚拟机 配置网络 安装Centos7 配置(修改)虚拟机的静态IP 修改网卡的配置文件 测试网络是否互通外部工具 连接linux系统 设置服务器时间 修改主机名)
437 0