NAT(网络地址转换模式)

使用NAT模式,就是让虚拟系统借助NAT(网络地址转换)功能,通过宿主机器所在的网络来访问公网。也就是说,使用NAT模式可以实现在虚拟系统里访问互联网。很显然,如果你只有一个外网地址,此种方式很合适。
KVM虚拟机Nat方式上网:
virsh net-list
查看当前活跃的网络,可以看到一个default网络,这个就是一个默认的Nat网络了。
virsh net-dumpxml default
可以查看该网络的详细配置如下:
    <network>
      <name>default</name>
      <uuid>75dbebde-fc15-4350-8a06-f1432f9e6d30</uuid>
      <forward mode='nat'>
        <nat>
          <port start='1024' end='65535'/>
        </nat>
      </forward>
      <bridge name='virbr0' stp='on' delay='0' />
      <mac address='52:54:00:bc:f2:65'/>
      <ip address='192.168.122.1' netmask='255.255.255.0'>
        <dhcp>
          <range start='192.168.122.2' end='192.168.122.254' />
        </dhcp>
      </ip>
    </network>
可以看到该网络搭建在一个网桥virbr0上,这个网桥在安装并启动libvirt的时候自动生成。然后在客户机的XML配置文件中添加标签interface内容如下:
    <interface type='network'>
       <mac address='52:54:00:c7:18:b5'/>
       <source network='default'/>
       <model type='virtio'/>
       <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>
 
则可以让客户机用nat方式来上网了,经验证,客户机可以获取到122网段,2到254之间的一个ip地址。
我们可以直接编辑修改default网络的配置:
virsh net-edit default
也可以直接将default网络干掉,然后再重新定义:
virsh net-undefine default
重新创建一个default.xml文件,自定义其中的内容,可以指定某个mac地址对应某个ip,指定某个ip段。例如下面的内容,name对应的是客户机的名字。
 
    <network>
      <name>default</name>
      <uuid>dc69ff61-6445-4376-b940-8714a3922bf7</uuid>
      <forward mode='nat'/>
      <bridge name='virbr0' stp='on' delay='0' />
      <mac address='52:54:00:81:14:18'/>
      <ip address='192.168.122.1' netmask='255.255.255.0'>
        <dhcp>
          <range start='192.168.122.2' end='192.168.122.254' />
          <host mac='00:25:90:eb:4b:bb' name='guest1' ip='192.168.5.13' />
          <host mac='00:25:90:eb:34:2c' name='guest2' ip='192.168.7.206' />
          <host mac='00:25:90:eb:e5:de' name='guest3' ip='192.168.7.207' />
          <host mac='00:25:90:eb:7e:11' name='guest4' ip='192.168.7.208' />
          <host mac='00:25:90:eb:b2:11' name='guest5' ip='192.168.7.209' />
        </dhcp>
      </ip>
    </network>
 
然后用命令:
virsh net-define default.xml
virsh net-start default
 
启用一个客户机,检查网络时候可用。
 
 

端口转发

下面均为介绍iptables相关内容,如果愿意使用rinetd或者其他的工具,或者使用桥接模式的,可以不用看了。
 
如果需要远程管理我们可以使用自带的vnc,但如果认为vnc不如系统自带的3389或ssh方便,我们可将NAT网络内的端口转发出来。
 
操作完上面第三步内开启转发的功能后,进行如下操作。
 
注:第四步已经将防火墙关闭,现在是在关闭防火墙的环境下操作,如果要开启防火墙,请自行检查iptables规则是否与防火墙冲突。
 
下面两条规则为将宿主机的2009端口,自动转发到虚机的3389端口。
 
iptables -t nat -A PREROUTING -p tcp --dport 2009 -j DNAT --to-destination 192.168.122.101:3389
iptables -t nat -A POSTROUTING -p tcp --dport 2009 -d 192.168.122.101 -j SNAT --to 192.168.122.1
开启转发后一直不通,因为对iptables不熟,这个坑了我2天,网上查询资料后,终于解决。因为默有两条拒绝规则,删除即可。
首先将规则列出:
iptables -nL -v --line-numbers -t filter
会有两条如下规则:
4        7   420 REJECT     all  —  *      virbr0  0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
5        0     0 REJECT     all  —  virbr0 *       0.0.0.0/0            0.0.0.0/0            reject-with icmp-port-unreachable
然后删除这两条规则,删除两次第四条即可,因为删除第四条后,第五条又变成第四条了。
iptables -D FORWARD 4 -t filter   #删除编号为4的FORWARD规则
然后进行保存并重启iptables服务:
service iptables save #保存规则
service iptables resart #重启服务
转发端口即可工作了。
 
 
 
下面要有一个大坑介绍。
 
我们上面已经了“save”保存了,但宿主机重启后,iptables自行恢复,屏蔽规则也恢复了,端口转发又无法工作了。
 
因为在centos7下,需要把配置写入文件,然后开机后再从配置文件读取才可以。目前只找到这个方法。
 
iptables-save > /etc/sysconfig/iptables #文件路径可自行指定。
在 /etc/rc.local内加入如下内容;
 
iptables-restore < /etc/sysconfig/iptables
service iptables save
service iptables restart
好了,现在全部搞定了!!
 
另外由于宿主机映射到外网的端口是由网管分配,附一条转发本地ssh端口的iptables规则。
 
-A PREROUTING -p tcp -m tcp --dport 3000 -j REDIRECT --to-ports 22

KVM NAT(网络地址转换模式)的更多相关文章

  1. bridged(桥接模式)、NAT(网络地址转换模式)和host-only(主机模式)-VMware下三种网络配置方式

    VMWare提供了三种工作模式,它们是bridged(桥接模式).NAT(网络地址转换模式)和host-only(主机模式).要想在网络管理和维护中合理应用它们,你就应该先了解一下这三种工作模式. 1 ...

  2. VMware中的桥接模式、NAT(网络地址转换模式)、Host-only(主机模式):转自:http://blog.chinaunix.net/uid-11798538-id-3061551.html

    其中VMnet1是虚拟机Host-only模式的网络接口,VMnet8是NAT模式的网络接口,这些后面会详细介绍.在个虚拟交换机,分别是-个虚拟机交换机,而在VMware Workstation 5以 ...

  3. vmware为我们提供了三种网络工作模式,它们分别是:Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)。

    原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ...

  4. vmware虚拟机Bridged(桥接模式)、NAT(网络地址转换模式)、Host-Only(仅主机模式)详解

    原文来自http://note.youdao.com/share/web/file.html?id=236896997b6ffbaa8e0d92eacd13abbf&type=note 我怕链 ...

  5. NAT 网络地址转换

    NAT  网络地址转换(Network Address Translation) NAT(Network Address Translation,网络地址转换)是1994年提出的. 属接入广域网(WA ...

  6. CCNA学习 NAT网络地址转换

    CCNA基础 NAT网络地址转换 在计算机网络中,网络地址转换(Network Address Translation,缩写为NAT),也叫做网络掩蔽或者IP掩蔽(IP masquerading),是 ...

  7. NAT网络地址转换模拟过程

    原理图,如图1 图1 以下为配置NAT网络地址转换的实验: eNSP模拟图,如图2 图2 Step1.给路由器的每个接口赋予一个地址,如图3,图4 图3 图4 AR1和AR2中添加路由表项,如图5,图 ...

  8. [译] NAT - 网络地址转换(2016)

    [译] NAT - 网络地址转换(2016) Published at 2019-02-17 | Last Update 译者序 本文翻译自 2016 年的一篇英文博客 NAT - Network A ...

  9. iptables做nat网络地址转换

    iptables做nat网络地址转换. 0. 权威文档 http://www.netfilter.org/documentation/HOWTO/NAT-HOWTO-6.html e文好的直接跳过本文 ...

随机推荐

  1. vuecli3.x与vuecli2.x 主要区别

    3.0 新加入了 TypeScript 以及 PWA 的支持 部分命令发生了变化: 下载安装  npm install -g vue@cli 删除了vue list 创建项目   vue create ...

  2. 关于SpringMVC乱码问题

    关于SpringMVC运行Tomcat控制台出现乱码的情况(在网上找到一种方法亲测有效) 找到tomcat文件夹中的conf包下的logging.properties中找到 java.util.log ...

  3. CS0016: 未能写入输出文件“c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\ad888a2

    http://wenwen.sogou.com/z/q445150234.htm IIS_USRS

  4. poj2112 网络流+二分答案

    Optimal Milking Time Limit: 2000MS   Memory Limit: 30000K Total Submissions: 18083   Accepted: 6460 ...

  5. Python的大小整数池跟深浅copy

    一.小整数池 可变的数据类型:list dict set 可变: 就是里面的数据类型变了,但是指向的内存地址没变. 不可变的数据类型:str 数值类型 tuple 不可变:如果改变了里面的值,相应的只 ...

  6. [JavaWeb基础] 021.Action中result的各种转发类型

    在struts2中, struts.xml中result的类型有多种,它们类似于struts1中的forward,常用的类型有dispatcher(默认值).redirect.redirectActi ...

  7. 逃离CSDN

    2012年2月18日,从CSDN搬家到这里.对于搬家的理由,总觉得该说点什么.我是在2012年1月29日又开始写博客的,在此之前我的CSDN博客闲置了10个月.从1月29日开始,不到1个月的时间建立了 ...

  8. List<T> 的扩展方法

    //List<T>.Take(m)      //取出 前m行 IEnumerable<Person> takeList = lstPerson.Take(4); foreac ...

  9. nmap script 总结

    一些常用脚本用法 nmap 脚本一些支持笼统扫描 usag. nmap -F --script auth 10.0.0.1 auth: 负责处理鉴权证书(绕开鉴权)的脚本 broadcast: 在局域 ...

  10. Elasticsearch到底哪点好?

    少点代码,多点头发 本文已经收录至我的GitHub,欢迎大家踊跃star 和 issues. https://github.com/midou-tech/articles 从今天开始准备给大家带来全新 ...