一:創建nat網路模式 主要就是nat模式的話,網橋沒有連接宿主機的物理網卡,就是創建出來一個網橋,會自動的虛擬出來2個介面(2個網卡的配置文件),一個是網橋的配置文件,另外一個就是nic的配置文件,主要作用就是虛擬機與宿主機進行通信用的 1:命令行的操作 思路主要就是,通過配置文件來進行定義, 還 ...
一:創建nat網路模式
主要就是nat模式的話,網橋沒有連接宿主機的物理網卡,就是創建出來一個網橋,會自動的虛擬出來2個介面(2個網卡的配置文件),一個是網橋的配置文件,另外一個就是nic的配置文件,主要作用就是虛擬機與宿主機進行通信用的
1:命令行的操作
思路主要就是,通過配置文件來進行定義,
還有就是熟悉創建網路的命令,virsh net --help
1、基礎知識
存放的網卡配置文件
#kvm網路配置文件 [root@server networks]# pwd /etc/libvirt/qemu/networks #共用的kvm網路配置文件,全局的配置文件
2、nat的操作
#進入到共用kvm網路的配置文件裡面,複製原有的網路配置文件,更改一些信息即可 [root@server networks]# ls default.xml new-nat.xml #修改的配置文件 <network> <name>new-nat</name> <bridge name="b1"/> <forward/> <ip address="192.168.200.1" netmask="255.255.255.0"> <dhcp> <range start="192.168.200.2" end="192.168.200.254"/> </dhcp> </ip> </network> #從這個配置文件裡面定義nat網路 [root@server networks]# virsh net-define /usr/share/libvirt/networks/new-nat.xml 從 new-nat定義網路/usr/share/libvirt/networks/new-nat.xml #查看網路激活的網路 [root@server networks]# virsh net-list 名稱 狀態 自動開始 持久 ---------------------------------------------------------- default 活動 是 是 #查看所有的網路 [root@server networks]# virsh net-list --all 名稱 狀態 自動開始 持久 ---------------------------------------------------------- default 活動 是 是 new-nat 不活躍 否 是 #激活網路並設置網路開機自啟 [root@server networks]# virsh net-start new-nat 網路 new-nat 已開始 [root@server networks]# virsh net-list --all 名稱 狀態 自動開始 持久 ---------------------------------------------------------- default 活動 是 是 new-nat 活動 否 是 [root@server networks]# virsh net-autostart new-nat 網路new-nat標記為自動啟動 [root@server networks]# virsh net-list 名稱 狀態 自動開始 持久 ---------------------------------------------------------- default 活動 是 是 new-nat 活動 是 是 #發現配置文件裡面也存在 [root@server networks]# ls autostart default.xml new-nat.xml [root@server networks]# ls autostart/ default.xml new-nat.xml #當創建了nat網橋後,會自動的創建2個介面(網卡的配置文件),一個是網橋的配置文件,另外一個就是nic介面,本質mac地址都是一樣的 [root@server networks]# ifconfig b1: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.200.1 netmask 255.255.255.0 broadcast 192.168.200.255 ether 52:54:00:5a:d7:b2 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 ens32: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 inet 172.25.250.10 netmask 255.255.255.0 broadcast 172.25.250.255 inet6 fe80::848f:2253:dfee:77d4 prefixlen 64 scopeid 0x20<link> ether 00:0c:29:2a:28:fd txqueuelen 1000 (Ethernet) RX packets 503 bytes 258556 (252.4 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 511 bytes 41830 (40.8 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10<host> loop txqueuelen 1000 (Local Loopback) RX packets 39 bytes 3253 (3.1 KiB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 39 bytes 3253 (3.1 KiB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500 inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255 ether 52:54:00:90:d0:79 txqueuelen 1000 (Ethernet) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 [root@server networks]# brctl show bridge name bridge id STP enabled interfaces b1 8000.5254005ad7b2 yes b1-nic virbr0 8000.52540090d079 yes virbr0-nic
2:圖形化的操作
1、點開編輯
這樣的話,就是會自動的創建2個介面()
#設備的名字就是virbr1這個就是這個nat網橋設備,按照這個順序來配置 [root@server networks]# nmcli connection show NAME UUID TYPE DEVICE ens32 97f33909-8dc2-48a1-819e-d04cac35ec66 ethernet ens32 b1 d1daa101-a111-4e5d-aaf0-b2622370796f bridge b1 virbr0 865c4f15-8617-4010-a8c3-6227c91cd472 bridge virbr0 virbr1 b8d9ad5c-d05e-4917-b154-667d7dc5796b bridge virbr1 vnet0 a34f6984-108f-4dd4-9821-188848ef0842 tun vnet0
2:創建橋接模式
創建一個網橋,讓宿主機橋接到物理網卡,然後創建虛擬機,然後綁定,即可,不像nat模式,就是創建網橋的時候,會自動的創建2個介面(網卡的配置文件),virbr0和virbr0-nic,橋接只是創建一個virbr0,所以這是區別之一
思路:
1、創建一個網橋,然後綁定宿主機的物理網卡
先複製一個宿主機網卡的配置文件,然後修改一些配置,用於創建網橋,然後還要備份這個物理網卡的文件,將Ip等信息註釋,添加bridge=創建網橋名
2、更改虛擬機的網路模式為橋接模式
直接更改虛擬機的配置文件
3、內部的虛擬機進行通信,外部與內部的虛擬機進行通信
橋接實驗:
#創建一個網橋,然後綁定宿主機的物理網卡 [root@server network-scripts]# cat ifcfg-ens32 TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=yes IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=ens32 UUID=97f33909-8dc2-48a1-819e-d04cac35ec66 DEVICE=ens32 ONBOOT=yes #IPADDR=172.25.250.10 #PREFIX=24 #GATEWAY=172.25.250.254 #DNS1=119.29.29.29 BRIDGE=q7 [root@server network-scripts]# cat ifcfg-q7 TYPE=bridge BOOTPROTO=none NAME=q7 DEVICE=q7 ONBOOT=yes IPADDR=172.25.250.10 PREFIX=24 GATEWAY=172.25.250.254 DNS1=119.29.29.29 [root@server network-scripts]# brctl show bridge name bridge id STP enabled interfaces q7 8000.000c292a28fd no ens32 virbr0 8000.5254002e1c32 yes virbr0-nic #更改虛擬機的網路模式為橋接模式 虛擬機存放的路徑: [root@server qemu]# pwd /etc/libvirt/qemu <interface type='bridge'> <mac address='52:54:00:bf:44:9c'/> <source bridge='q7'/> <model type='virtio'/> <address type='pci' domain='0x0000' bus='0x00' slot='0x03' function='0x0'/> </interface> #虛擬機進行通信 #查看虛擬機的ip地址 [root@server qemu]# ssh [email protected] The authenticity of host '172.25.250.128 (172.25.250.128)' can't be established. ECDSA key fingerprint is SHA256:6Lay/Xuuy+q23ZVh6OjLXbL7ID8iELSfEAuwQN1X8EY. ECDSA key fingerprint is MD5:d0:9f:11:33:89:54:d2:6d:89:56:ba:14:f6:78:ac:42. Are you sure you want to continue connecting (yes/no)? yes Warning: Permanently added '172.25.250.128' (ECDSA) to the list of known hosts. [email protected]'s password: Last login: Thu Apr 25 15:04:49 2024 [root@localhost ~]# ip a 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 inet 127.0.0.1/8 scope host lo valid_lft forever preferred_lft forever inet6 ::1/128 scope host valid_lft forever preferred_lft forever 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000 link/ether 52:54:00:bf:44:9c brd ff:ff:ff:ff:ff:ff inet 172.25.250.128/24 brd 172.25.250.255 scope global noprefixroute dynamic eth0 valid_lft 1232sec preferred_lft 1232sec inet6 fe80::b0d5:672d:1a7:79b4/64 scope link noprefixroute valid_lft forever preferred_lft forever #與windows的主機互相通信 ping 172.25.250.128 正在 Ping 172.25.250.128 具有 32 位元組的數據: 來自 172.25.250.128 的回覆: 位元組=32 時間<1ms TTL=64 來自 172.25.250.128 的回覆: 位元組=32 時間<1ms TTL=64 來自 172.25.250.128 的回覆: 位元組=32 時間<1ms TTL=64 來自 172.25.250.128 的回覆: 位元組=32 時間=1ms TTL=64 [root@localhost ~]# ping 10.120.225.28 PING 10.120.225.28 (10.120.225.28) 56(84) bytes of data. 64 bytes from 10.120.225.28: icmp_seq=1 ttl=128 time=0.662 ms 64 bytes from 10.120.225.28: icmp_seq=2 ttl=128 time=1.12 ms ^C --- 10.120.225.28 ping statistics --- 2 packets transmitted, 2 received, 0% packet loss, time 1001ms rtt min/avg/max/mdev = 0.662/0.891/1.121/0.231 ms
3:kvm的橋接和nat模式的區別
1、創建網橋的生成網卡不同
nat模式創建的網橋,會創建2個介面,橋接模式不會創建2個介面,只會創建一個介面(也就是自己的網卡配置文件)
nat模式網橋沒有綁定物理網卡,橋接模式綁定了物理網卡,使用的宿主機同一個網段的地址,被作為橋接上去的網卡,不能有ip地址,通過這個網橋進行通信,這個網橋就相當於是宿主機的ip地址
2、外部網路通信
nat模式的話,虛擬機能與外部網路進行通信,通過nat地址轉換出去的,然後轉換成宿主機的Ip地址,進行外面的通信,所以的話,外部網路無法與虛擬機進行通信,如果虛擬機有提供web服務的話,就無法訪問了,
橋接模式的話,虛擬機與外部網路都能進行通信,風雨無阻
4: kvm網路管理的操作
具體點就是關於kvm網路的更改等等,
1、語法
[root@server networks]# virsh help network Networking (help keyword 'network'): net-autostart 自動開始網路 net-create 從一個 XML 文件創建一個網路 net-define define an inactive persistent virtual network or modify an existing persistent one from an XML file net-destroy 銷毀(停止)網路 net-dhcp-leases print lease info for a given network net-dumpxml XML 中的網路信息 net-edit 為網路編輯 XML 配置 net-event Network Events net-info 網路信息 net-list 列出網路 net-name 把一個網路UUID 轉換為網路名 net-start 開始一個(以前定義的)不活躍的網路 net-undefine undefine a persistent network net-update 更新現有網路配置的部分 net-uuid 把一個網路名轉換為網路UUID
2、virsh 管理網路相關的命令
1)virsh net-list:列出網路
virsh help net-list 查看幫助的信息
[root@server networks]# virsh net-list 名稱 狀態 自動開始 持久 ---------------------------------------------------------- b2 活動 是 是 default 活動 是 是 new-nat 活動 是 是
預設是以表格的形式進行輸出的
2)virsh net-dumpxml:顯示指定網路的配置文件的內容
#查看的就是kvm網路的配置文件 [root@server networks]# virsh net-dumpxml b2 <network> <name>b2</name> <uuid>6cfecbe6-bba4-4021-9ece-22183d9dd33f</uuid> <forward dev='ens32' mode='nat'> <nat> <port start='1024' end='65535'/> </nat> <interface dev='ens32'/> </forward> <bridge name='virbr1' stp='on' delay='0'/> <mac address='52:54:00:9f:ca:47'/> <domain name='b2'/> <ip address='192.168.103.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.103.128' end='192.168.103.254'/> </dhcp> </ip> </network>
3) virsh net-define,virsh net-start ,virsh net-autostart
從指定xml配置文件定義一個網路或者基於指定xml來修改現有的網路,
[root@server networks]# cp default.xml new-nat.xml [root@server networks]# vim new-nat.xml [root@server networks]# cat new-nat.xml <network> <name>b1</name> <bridge name="q1"/> <forward/> <ip address="192.168.107.1" netmask="255.255.255.0"> <dhcp> <range start="192.168.107.2" end="192.168.107.254"/> </dhcp> </ip> </network> #使用virsh define來定義網路,但是定義好了之後,它是不運行的,所以的話還需要手動的啟動網路,並設置為開啟自啟的 [root@server networks]# virsh net-define /usr/share/libvirt/networks/new-nat.xml 從 b1定義網路/usr/share/libvirt/networks/new-nat.xml [root@server networks]# virsh net-list --all 名稱 狀態 自動開始 持久 ---------------------------------------------------------- b1 不活躍 否 是 default 活動 是 是 [root@server networks]# virsh net-start b1 網路 b1 已開始 [root@server networks]# virsh net-list 名稱 狀態 自動開始 持久 ---------------------------------------------------------- b1 活動 否 是 default 活動 是 是 [root@server networks]# virsh net-autostart b1 網路b1標記為自動啟動 [root@server networks]# virsh net-list 名稱 狀態 自動開始 持久 ---------------------------------------------------------- b1 活動 是 是 default 活動 是 是
4)virsh net-edit
編輯網路的配置文件xml的文件,更改ip地址為105網段的
[root@server networks]# virsh net-edit b1 已編輯網路 b1 XML 配置 #當然得話,修改了配置文件不會立刻進行生效,創建持久網路後,預設的配置文件存放在/etc/libvirt/qemu/network目錄下麵的內容 #讓指定的網路配置文件生效 [root@server networks]# virsh net-destroy b1 網路 b1 被刪除 [root@server networks]# virsh net-start b1 網路 b1 已開始 [root@server networks]# virsh net-dumpxml b1 <network> <name>b1</name> <uuid>b54d21ab-fc60-4e05-a990-d873a02fa256</uuid> <forward mode='nat'> <nat> <port start='1024' end='65535'/> </nat> </forward> <bridge name='q1' stp='on' delay='0'/> <mac address='52:54:00:cc:be:e7'/> <ip address='192.168.105.1' netmask='255.255.255.0'> <dhcp> <range start='192.168.105.2' end='192.168.105.254'/> </dhcp> </ip> </network> 思路就是:重讀配置文件的方式只有重啟網路,所以的話先要停止對應的網路,然後在啟動對應的網路,destory停止指定的網路,相當於停止的操作
通過edit來生成一個網路的配置文件,然後需要定義這個網路,會自動的生成非活躍狀態的持久網路,
5)virsh net-create
從指定xml文件創建一個非持久化的臨時網路,並且激活,
define定義的網路都是持久的,create創建出來的不是持久的,所謂的持久是否在/etc/libvirt/qemu/network目錄下生成配置文件,有配置文件就被稱為持久網路,沒有的話就被稱為臨時網路
#從已存在的配置文件中進行創建 [root@server networks]# virsh net-create b2.xml 從b2創建網路b2.xml [root@server networks]# virsh net-list 名稱 狀態 自動開始 持久 ---------------------------------------------------------- b1 活動 是 是 b2 活動 否 否 default 活動 是 是
6)virsh net-undefine
將指定持久網路取消定義,就是為非持久化的網路,就是刪除裡面的配置文件即可,不會影響到活躍的網路實例 與net-destory配合使用可以達到刪除網路的效果
[root@server networks]# virsh net-undefine b1 網路 b1 已經被取消定義 [root@server networks]# virsh net-list 名稱 狀態 自動開始 持久 ---------------------------------------------------------- b1 活動 否 否 b2 活動 否 否 default 活動 是 是
總結:
1)修了了網路的配置文件的話,要使用net-destory,刪除這個網路,然後重新的啟動即可
2)刪除配置文件的話,就要停止net-destory停止,然後在來使用net-undefine來刪除即可
3:創建網路的思路
通過上面的命令可以把指定網路導出,然後基於這個網路文件當成一個模版文件,如果要創建一個網路的話,直接複製這個模版文件,然後改一下裡面的信息就可以生成一個我們需要創建的網路的配置文件
#創建出來了一個網橋,不能通過修改網卡來進行修改,nmcli不行 只能通過修改配置文件來進行修改,然後在來進行定義即可
4:網橋的操作
brctl 的操作
[root@server /]# brctl --help Usage: brctl [commands] commands: addbr <bridge> add bridge delbr <bridge> delete bridge addif <bridge> <device> add interface to bridge delif <bridge> <device> delete interface from bridge hairpin <bridge> <port> {on|off} turn hairpin on/off setageing <bridge> <time> set ageing time setbridgeprio <bridge> <prio> set bridge priority setfd <bridge> <time> set bridge forward delay sethello <bridge> <time> set hello time setmaxage <bridge> <time> set max message age setpathcost <bridge> <port> <cost> set path cost setportprio <bridge> <port> <prio> set port priority show [ <bridge> ] show a list of bridges showmacs <bridge> show a list of mac addrs showstp <bridge> show bridge stp info stp <bridge> {on|off} turn stp on/off