外网访问 KVM 虚拟机
?
搭建環境:
物理機: # cat /etc/redhat-release?
CentOS Linux release 7.5.1804 (Core)
虛擬機: # cat /etc/redhat-release?
CentOS Linux release 7.4.1708 (Core)
KVM虛擬機連接到的是virt-manager創建的內部網絡,但是有時我們還需要能夠從外部網絡訪問到創建的虛擬機 。
虛擬機叫做客戶機, 運行虛擬機的物理機叫做宿主機 。
1,從外網訪問KVM?虛擬機,在 /etc/sysconfig/network-scripts 目錄下,建立 ifcfg-br0 文件,并修改ifcfg-enp3s0(原主機IP配置)? 文件。
原理是:這個bridge是要將物理機的網口eno1和將來虛擬機的網口ens11連接起來。物理機的網口eno1就是“外網”地址了;因為Linux的bridge是二層的,所以這個網口eno1收到的包,也會被虛擬機的連在該bridge上的網口ens11看到。
?
2,修改 ifcfg-eno1 文件的目的在于將其和 br0 關聯起來。注意,這里的修改包括:
增加了一行? : BRIDGE=”br0”
原理:?讓br0真正地成為真正與外界交換機打交道的。換句話說,把原來的eno1變成了一個集線器(Hub),也就是bridge 。
# systemctl restart network # ifup br0 # ifconfig?
3,運行 virt-manager ,雙擊所需要放到外網的虛擬機,點擊菜單欄的燈泡進入配置頁面:?
新增一塊網卡(NIC),注意,Network source選擇“Bridge br0: Host device eno1”, Device model選擇virtio 或 e1000
(切記:有時主機不斷重啟,可能導致虛擬主機的網卡上的——虛擬網絡接口模式變化,導致外網鏈接不上虛擬主機服務)
因為是新增網卡,要重啟虛擬機。
?
4,在虛擬機內確定新增網卡的設備名:
# ip addr? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
可以看到新增網卡的名字是 eth1,狀態是 down
5,??在 /etc/sysconfig/network-scripts 下新增文件 ifcfg-eth1?
# cp /etc/sysconfig/network-scripts/ifcfg-eth0 ?/etc/sysconfig/network-scripts/ifcfg-eth1#?vim /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE="eth1" ONBOOT="yes" IPV6INIT="no" IPV4_FAILURE_FATAL="no" NM_CONTROLLED="no" TYPE="Ethernet" BOOTPROTO="static" IPADDR=192.168.0.237 PREFIX=24 GATEWAY=192.168.0.1# systemctl restart network?
?配置OK。可以從外網(其實也是局域網)訪問該虛擬機啦。
5, 客戶端訪問測試:
理解的要點:?
外界的物理交換機連接到了一臺Hub(即bridge)上,而物理機的enp3s0和虛擬機的eth1也都是接到了這個Hub上。?
于是,交換機轉發出來的報文,enp3s0和eth1都能看得到,并各自處理屬于各自的報文。
?
總結
以上是生活随笔為你收集整理的外网访问 KVM 虚拟机的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Redis的安装及使用
- 下一篇: 本地连接git 服务器方式:以及git连