1. 程式人生 > >Redhat/CentOS6.2 x86系統KVM虛擬機器網路配置(一)—NAT方式

Redhat/CentOS6.2 x86系統KVM虛擬機器網路配置(一)—NAT方式

摘要:KVM虛擬機器網路配置的兩種方式:NAT方式和Bridge方式。NAT方式的配置原理和步驟。NAT方式適用於桌面主機的虛擬化。

問題

客戶機安裝完成後,需要為其設定網路介面,以便和主機網路,客戶機之間的網路通訊。事實上,如果要在安裝時使用網路通訊,需要提前設定客戶機的網路連線。

KVM 客戶機網路連線有兩種方式:

  • 使用者網路(User Networking):讓虛擬機器訪問主機、網際網路或本地網路上的資源的簡單方法,但是不能從網路或其他的客戶機訪問客戶機,效能上也需要大的調整。NAT方式。
  • 虛擬網橋(Virtual Bridge):這種方式要比使用者網路複雜一些,但是設定好後客戶機與網際網路,客戶機與主機之間的通訊都很容易。Bridge方式。

本文主要解釋NAT方式的配置。

NAT方式原理

NAT方式是kvm安裝後的預設方式。它支援主機與虛擬機器的互訪,同時也支援虛擬機器訪問網際網路,但不支援外界訪問虛擬機器。

檢查當前的網路設定:

#virsh net-list --all
Name State Autostart
-----------------------------------------
default active yes

default是宿主機安裝虛擬機器支援模組的時候自動安裝的。

檢查當前的網路介面:

#ifconfig
eth0      Link encap:Ethernet  HWaddr 44:37:E6:4A:62:AD  
          inet6 addr: fe80::4637:e6ff:fe4a:62ad/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:987782 errors:0 dropped:0 overruns:0 frame:0
          TX packets:84155 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:109919111 (104.8 MiB)  TX bytes:12695454 (12.1 MiB)
          Interrupt:17

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:4 errors:0 dropped:0 overruns:0 frame:0
          TX packets:4 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:240 (240.0 b)  TX bytes:240 (240.0 b)

virbr0    Link encap:Ethernet  HWaddr 52:54:00:B9:B0:96  
          inet addr:192.168.122.1  Bcast:192.168.122.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:2126 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:0 (0.0 b)  TX bytes:100387 (98.0 KiB)

virbr0-nic Link encap:Ethernet  HWaddr 52:54:00:B9:B0:96  
          BROADCAST MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:500
          RX bytes:0 (0.0 b)  TX bytes:0 (0.0 b)

其中virbr0是由宿主機虛擬機器支援模組安裝時產生的虛擬網路介面,也是一個switch和bridge,負責把內容分發到各虛擬機器。

幾個虛擬機器管理模組產生的介面關係如下圖:

從圖上可以看出,虛擬介面和物理介面之間沒有連線關係,所以虛擬機器只能在通過虛擬的網路訪問外部世界,無法從網路上定位和訪問虛擬主機。

virbr0是一個橋接器,接收所有到網路192.168.122.*的內容。從下面命令可以驗證:

# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400b9b096       yes             virbr0-nic

# route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
192.168.122.0   *               255.255.255.0   U     0      0        0 virbr0

同時,虛擬機器支援模組會修改iptables規則,通過命令可以檢視:

# iptables -t nat -L -nv
Chain PREROUTING (policy ACCEPT 16924 packets, 2759K bytes)
pkts bytes target    prot opt in    out    source              destination
Chain POSTROUTING (policy ACCEPT 2009 packets, 125K bytes)
pkts bytes target    prot opt in    out    source              destination        
421 31847 MASQUERADE all -- *     *      192.168.122.0/24   !192.168.122.0/24  ----------->這條是關鍵,它配置了NAT功能。
Chain OUTPUT (policy ACCEPT 2011 packets, 125K bytes)
pkts bytes target    prot opt in    out    source              destination        

    
# iptables -t filter -L -nv
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target    prot opt in    out    source              destination        
1   74 ACCEPT    udp -- virbr0 *      0.0.0.0/0           0.0.0.0/0          udp dpt:53    ---->由libvirt指令碼自動寫入
0    0 ACCEPT    tcp -- virbr0 *      0.0.0.0/0           0.0.0.0/0          tcp dpt:53    ---->由libvirt指令碼自動寫入
3  984 ACCEPT    udp -- virbr0 *      0.0.0.0/0           0.0.0.0/0          udp dpt:67    ---->由libvirt指令碼自動寫入
0    0 ACCEPT    tcp -- virbr0 *      0.0.0.0/0           0.0.0.0/0          tcp dpt:67    ---->由libvirt指令碼自動寫入
178K 195M ACCEPT    all -- *     *      0.0.0.0/0           0.0.0.0/0          state RELATED,ESTABLISHED   ---->iptables的系統預設
2  168 ACCEPT    icmp -- *     *      0.0.0.0/0           0.0.0.0/0               ---->iptables的系統預設
1148 216K ACCEPT    all -- lo    *      0.0.0.0/0           0.0.0.0/0               ---->iptables的系統預設
1   60 ACCEPT    tcp -- *     *      0.0.0.0/0           0.0.0.0/0          state NEW tcp dpt:22  ---->iptables的系統預設
16564 2721K REJECT    all -- *     *      0.0.0.0/0           0.0.0.0/0          reject-with icmp-host-prohibited ---->iptables的系統預設
Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
pkts bytes target    prot opt in    out    source              destination        
3726 3485K ACCEPT    all -- *     virbr0 0.0.0.0/0           192.168.122.0/24   state RELATED,ESTABLISHED  ---->由libvirt指令碼自動寫入
3491 399K ACCEPT    all -- virbr0 *      192.168.122.0/24    0.0.0.0/0               ---->由libvirt指令碼自動寫入
0    0 ACCEPT    all -- virbr0 virbr0 0.0.0.0/0           0.0.0.0/0               ---->由libvirt指令碼自動寫入
0    0 REJECT    all -- *     virbr0 0.0.0.0/0           0.0.0.0/0          reject-with icmp-port-unreachable  ---->由libvirt指令碼自動寫入
0    0 REJECT    all -- virbr0 *      0.0.0.0/0           0.0.0.0/0          reject-with icmp-port-unreachable  ---->由libvirt指令碼自動寫入
0    0 REJECT    all -- *     *      0.0.0.0/0           0.0.0.0/0          reject-with icmp-host-prohibited  ---->iptables的系統預設
Chain OUTPUT (policy ACCEPT 181K packets, 138M bytes)
pkts bytes target     prot opt in     out     source               destination

如果沒有default的話,或者需要擴充套件自己的虛擬網路,可以使用命令重新安裝NAT。

NAT方式的適用範圍

桌面主機虛擬化。

建立步驟

#virsh net-define /usr/share/libvirt/networks/default.xml

此命令定義一個虛擬網路,default.xml的內容:

<network>
  <name>default</name>
  <bridge name="virbr0" />
  <forward/>
  <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>

也可以修改xml,建立自己的虛擬網路。

標記為自動啟動:

#virsh net-autostart default
Network default marked as autostarted

啟動網路:

#virsh net-start default
Network default started

網路啟動後可以用命令brctl show 檢視和驗證。

修改/etc/sysctl.conf中引數,允許ip轉發:

net.ipv4.ip_forward=1

客戶機安裝

客戶機安裝時注意,網路要選擇用NAT方式。

圖形化的方式:

文字方式:

編輯修改虛擬機器配置檔案 /etc/libvirt/qemu/v1.xml,增加如下內容

    <interface type='network'>
      <mac address='52:54:00:4f:1b:07'/>
      <source network='default'/>
      <model type='virtio'/>
      <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
    </interface>

虛擬機器啟動後,驗證網路介面是否正常:

# brctl show
bridge name     bridge id               STP enabled     interfaces
virbr0          8000.525400b9b096       yes             virbr0-nic
                                                                                 vnet0

Bridge方式的影響

Bridge方式配置出來的介面對NAT方式沒有影響,因為NAT方式並沒有使用物理網絡卡。但作為客戶機,只能選擇其中的一種。

參考:Bridge方式

Bridge方式即虛擬網橋的網路連線方式,是客戶機和子網裡面的機器能夠互相通訊。可以使虛擬機器成為網路中具有獨立IP的主機。


相關推薦

no