KVM虛擬機網(wǎng)絡配置 Bridge方式,NAT方式
時間:2023-07-15 18:21:01 | 來源:網(wǎng)站運營
時間:2023-07-15 18:21:01 來源:網(wǎng)站運營
KVM虛擬機網(wǎng)絡配置 Bridge方式,NAT方式:摘要:KVM虛擬機網(wǎng)絡配置的兩種方式:NAT方式和Bridge方式。Bridge方式的配置原理和步驟。Bridge方式適用于服務器主機的虛擬化。NAT方式適用于桌面主機的虛擬化。
nat 的網(wǎng)絡結構圖:
bridge 的網(wǎng)絡結構見圖:
Bridge方式問題
客戶機安裝完成后,需要為其設置網(wǎng)絡接口,以便和主機網(wǎng)絡,客戶機之間的網(wǎng)絡通信。事實上,如果要在安裝時使用網(wǎng)絡通信,需要提前設置客戶機的網(wǎng)絡連接。
KVM 客戶機網(wǎng)絡連接有兩種方式:
- 用戶網(wǎng)絡(User Networking):讓虛擬機訪問主機、互聯(lián)網(wǎng)或本地網(wǎng)絡上的資源的簡單方法,但是不能從網(wǎng)絡或其他的客戶機訪問客戶機,性能上也需要大的調整。NAT方式。
- 虛擬網(wǎng)橋(Virtual Bridge):這種方式要比用戶網(wǎng)絡復雜一些,但是設置好后客戶機與互聯(lián)網(wǎng),客戶機與主機之間的通信都很容易。Bridge方式。
本文主要解釋Bridge方式的配置。
Bridge方式原理
Bridge方式即虛擬網(wǎng)橋的網(wǎng)絡連接方式,是客戶機和子網(wǎng)里面的機器能夠互相通信。
可以使虛擬機成為網(wǎng)絡中具有獨立IP的主機。
橋接網(wǎng)絡(也叫物理設備共享)被用作把一個物理設備復制到一臺虛擬機。網(wǎng)橋多用作高級設置,特別是主機多個網(wǎng)絡接口的情況。
如上圖,網(wǎng)橋的基本原理就是創(chuàng)建一個橋接接口br0,在物理網(wǎng)卡和虛擬網(wǎng)絡接口之間傳遞數(shù)據(jù)。
Bridge方式的適用范圍
服務器主機虛擬化。
網(wǎng)橋方式配置步驟
1、編輯修改網(wǎng)絡設備腳本文件,增加網(wǎng)橋設備br0
vi /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=static
IPADDR=10.0.112.39
NETMASK=255.255.255.0
GATEWAY=10.0.112.1
DEFROUTE=yes
上述配置將虛擬網(wǎng)卡配置在了10.0.112.* 網(wǎng)段。如果不需要靜態(tài)地址,可以把配置地址的相關項屏蔽。如:
DEVICE="br0"
ONBOOT="yes"
TYPE="Bridge"
BOOTPROTO=dhcp
2、編輯修改網(wǎng)絡設備腳本文件,修改網(wǎng)卡設備eth0
DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT="yes"
TYPE=Ethernet
BOOTPROTO=none
BRIDGE="br0"
NAME="System eth0"
HWADDR=44:37:E6:4A:62:AD
NM_CONTROLLED這個屬性值,根據(jù)RedHat公司的文檔是必須設置為“no”的(這個值為“yes”表示可以由服務NetworkManager來管理。NetworkManager服務不支持橋接,所以要設置為“no”。),但實際上發(fā)現(xiàn)設置為“yes”沒有問題。通訊正常。
3、重啟網(wǎng)絡服務
#service network restart
4、校驗橋接接口
#brctl show
bridge name bridge id STP enabled interfaces
br0 8000.4437e64a62ad no eth0
客戶機配置
客戶機安裝時注意,網(wǎng)絡要選擇用br0橋接方式。
圖形化的方式:
文本方式:編輯修改虛擬機配置文件 /etc/libvirt/qemu/v1.xml,增加如下內容
<interface type='bridge'>
<mac address='52:54:00:da:c3:dc'/>
<source bridge='br0'/>
<model type='virtio'/>
<address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/>
</interface>
虛擬機啟動后,驗證網(wǎng)絡接口是否正常:
# brctl show
bridge name bridge id STP enabled interfaces
br0 8000.4437e64a62ad no eth0
vnet0
NAT方式的影響
網(wǎng)橋方式的配置與虛擬機支持模塊安裝時預置的虛擬網(wǎng)絡橋接接口virbr0沒有任何關系,配置網(wǎng)橋方式時,可以把virbr0接口(即NAT方式里面的default虛擬網(wǎng)絡)刪除。
# virsh net-destroy default
# virsh net-undefine default
# service libvirtd restart
NAT方式問題
客戶機安裝完成后,需要為其設置網(wǎng)絡接口,以便和主機網(wǎng)絡,客戶機之間的網(wǎng)絡通信。事實上,如果要在安裝時使用網(wǎng)絡通信,需要提前設置客戶機的網(wǎng)絡連接。
KVM 客戶機網(wǎng)絡連接有兩種方式:
- 用戶網(wǎng)絡(User Networking):讓虛擬機訪問主機、互聯(lián)網(wǎng)或本地網(wǎng)絡上的資源的簡單方法,但是不能從網(wǎng)絡或其他的客戶機訪問客戶機,性能上也需要大的調整。NAT方式。
- 虛擬網(wǎng)橋(Virtual Bridge):這種方式要比用戶網(wǎng)絡復雜一些,但是設置好后客戶機與互聯(lián)網(wǎng),客戶機與主機之間的通信都很容易。Bridge方式。
本文主要解釋NAT方式的配置。
NAT方式原理
NAT方式是kvm安裝后的默認方式。它支持主機與虛擬機的互訪,同時也支持虛擬機訪問互聯(lián)網(wǎng),但不支持外界訪問虛擬機。
檢查當前的網(wǎng)絡設置:
#virsh net-list --all
Name State Autostart
-----------------------------------------
default active yes
default是宿主機安裝虛擬機支持模塊的時候自動安裝的。
檢查當前的網(wǎng)絡接口:
#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是由宿主機虛擬機支持模塊安裝時產(chǎn)生的虛擬網(wǎng)絡接口,也是一個switch和bridge,負責把內容分發(fā)到各虛擬機。
幾個虛擬機管理模塊產(chǎn)生的接口關系如下圖:
從圖上可以看出,虛擬接口和物理接口之間沒有連接關系,所以虛擬機只能在通過虛擬的網(wǎng)絡訪問外部世界,
無法從網(wǎng)絡上定位和訪問虛擬主機。
virbr0是一個橋接器,接收所有到網(wǎng)絡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規(guī)則,通過命令可以查看:
# 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的系統(tǒng)預設
2 168 ACCEPT icmp -- * * 0.0.0.0/0 0.0.0.0/0 ---->iptables的系統(tǒng)預設
1148 216K ACCEPT all -- lo * 0.0.0.0/0 0.0.0.0/0 ---->iptables的系統(tǒng)預設
1 60 ACCEPT tcp -- * * 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22 ---->iptables的系統(tǒng)預設
16564 2721K REJECT all -- * * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited ---->iptables的系統(tǒng)預設
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的系統(tǒng)預設
Chain OUTPUT (policy ACCEPT 181K packets, 138M bytes)
pkts bytes target prot opt in out source destination
如果沒有default的話,或者需要擴展自己的虛擬網(wǎng)絡,可以使用命令重新安裝NAT。
NAT方式的適用范圍
桌面主機虛擬化。
創(chuàng)建步驟
#virsh net-define /usr/share/libvirt/networks/default.xml
此命令定義一個虛擬網(wǎng)絡,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,創(chuàng)建自己的虛擬網(wǎng)絡。
標記為自動啟動:
#virsh net-autostart default
Network default marked as autostarted
啟動網(wǎng)絡:
#virsh net-start default
Network default started
網(wǎng)絡啟動后可以用命令brctl show 查看和驗證。
修改/etc/sysctl.conf中參數(shù),允許ip轉發(fā):
net.ipv4.ip_forward=1
客戶機安裝
客戶機安裝時注意,網(wǎng)絡要選擇用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>
虛擬機啟動后,驗證網(wǎng)絡接口是否正常:
# brctl show
bridge name bridge id STP enabled interfaces
virbr0 8000.525400b9b096 yes virbr0-nic
vnet0
Bridge方式的影響
Bridge方式配置出來的接口對NAT方式?jīng)]有影響,因為NAT方式并沒有使用物理網(wǎng)卡。但作為客戶機,只能選擇其中的一種。