kvm虚拟机配置NAT端口转发的实现方法
目录
- 1. 概述
- 2. iptables创建规则
- 3. 查看和清除
- 4. 一些别的问题
1. 概述
在内网一台物理机部署了kvm虚拟化环境。为了避免虚拟机的IP地址和内网网段冲突,kvm采用的是NAT模式,而非桥接模式。因此在本地访问kvm虚拟机时,必须用物理机来实现转发,才能登录到虚拟机。而kvm的转发,需要使用Linux的iptables工具来实现
2. iptables创建规则
先创建虚拟机,比如创建一台虚拟机node98,其ip地址是192.168.80.98,我想在本地访问node98的22端口,是无法实现的。所以需要进行以下操作:
iptables -t nat -A PREROUTING -p tcp --destination 192.168.212.93 --dport 2298 -j DNAT --to-destination 192.168.80.98:22 iptables -t nat -A POSTROUTING -p tcp --dport 22 -d 192.168.80.98 -j SNAT --to 192.168.212.93 iptables -D FORWARD 5 -t filter iptables -D FORWARD 4 -t filter
上述使用iptables配置了物理机192.168.212.93到其内部kvm虚拟机node98的22端口转发。需要注意的是:
iptables -D FORWARD 5 -t filter iptables -D FORWARD 4 -t filter
这两条需要操作,否则转发不成功,登录失败
3. 查看和清除
物理机创建的虚拟机多了,端口转发规则多了起来。使用以下命令查看当前的转发规则
iptables -nL -v --line-numbers -t nat
会在Chain PREROUTING 和Chain POSTROUTING 看到对应的条目。
清除当前规则:
iptables -t nat -F PREROUTING iptables -t nat -F POSTROUTING
4. 一些别的问题
- 清理规则后,建议重启libvirtd和虚拟机,否则会存在虚拟机无法ping通外网的情况
- 每次添加转发规则时,应该都需要执行iptables -D FORWARD的操作,否则无法登录
- 如果在虚拟机部署了Java开发环境,使用vscode远程开发时,配置Tomcat的端口转发,不需要在物理机和虚拟机再操作,一切由vscode自行完成
您可能感兴趣的文章
- 12-22nginx代理实现静态资源访问的示例代码
- 12-22Docker 存储管理的几种方式
- 12-22nginx静态资源的服务器配置方法
- 12-22Docker Compose部署微服务项目上线功能
- 12-22GPU服务器的多用户配置方法
- 12-22docker-compose搭建etcd集群的实现(三节点)
- 12-22docker中mysql开启日志的实现步骤
- 12-22Linux下docker安装mysql8并配置远程连接
- 12-22docker部署mysql8并设置可远程连接
- 12-22阿里云oss对象存储使用详细步骤


阅读排行
推荐教程
- 12-11docker存储目录迁移示例教程
- 12-10docker start启动容器后仍然exit状态的解决
- 12-10Linux下如何安装Logstash
- 12-19Zabbix SAML SSO 登录绕过漏洞的操作流程
- 12-15Docker-Compose搭建Spark集群的实现方法
- 12-14Docker Desktop无法正常启动解决(failed to start...)
- 12-14k8s 与docker空间使用分析与清理方法
- 12-13k8s编排之Deployment知识点详解
- 12-13Nginx IP封禁及自动封禁IP的实现
- 12-13Nginx代理Partainer如何使用





