KVM虚拟机使用NAT+iptables做端口映射

Posted xuewenlong

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了KVM虚拟机使用NAT+iptables做端口映射相关的知识,希望对你有一定的参考价值。

环境介绍

有一个KVM宿主机,一个外网IP绑定在了宿主服务器上,但是希望直接用ssh访问上面的所有虚拟机,还想虚拟机提供外网服务,

解决方法如下:

环境为RHEL6.3,外网IP为 61.155.xx.xxx

1.网络方式使用NAT连接

修改配置文件/etc/libvirt/qemu/networks/default.xml;
查看网络配置文件,下面的是默认情况
# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.5254005aa781 yes virbr0-nic

如果需要修改的话,可以直接修改或者创建新的文件,然后使用下面命令来创建新的网络

virsh net-define 【filename】

2.安装VM

virt-install --name linux-nat --ram 2048 --disk /data/linux.nat.raw --graphics vnc,port=5902 --network network=default,model=virtio--vcpus=8--os-variant=rhel6 --import

# /data/linux.nat.raw 这个是做好的Linux系统模版

3.查看宿主服务器virbr0的网卡信息

ifconfig virbr0
virbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UNKNOWN
link/ether 52:54:00:5a:a7:81 brd ff:ff:ff:ff:ff:ff
inet 192.168.122.1/24 brd 192.168.122.255 scope global virbr0

进入虚拟机中,修改IP为192.168.122.2,网关为192.168.122.1

4.配置iptables

实现的原理是用户访问宿主IP的8000端口,然后iptables转发这个包到虚拟机的22端口上
# iptables -A INPUT -p tcp --dport 8000 -j ACCEPT
# iptables -t nat -A PREROUTING -d 61.155.xx.xxx  -p tcp -m tcp --dport 8000 -j DNAT --to-destination 192.168.122.2:22
# iptables -t nat -A POSTROUTING -s 192.168.122.0/255.255.255.0 -d 192.168.122.2 -p tcp -m tcp --dport 22 -j SNAT --to-source 192.168.122.1

 

以上是关于KVM虚拟机使用NAT+iptables做端口映射的主要内容,如果未能解决你的问题,请参考以下文章

centos7 && centos6.5部KVM使用NAT联网并为虚拟机配置firewalld && iptables防火墙端口转发

kvm 采用NAT方式 虚拟机连不上网

KVM虚拟化的四种简单网络模型介绍及实现

使用ip rule和iptables管理openVZ虚拟机的网络和端口映射管理

vnc远程连接虚拟机的问题

VMware NAT端口映射外网访问虚拟机linux