開發人員學Linux(2):VirtualBox中安裝CentOS7系統設置
上一篇《VirtualBox中安裝CentOS7過程記錄》中講述了如何安裝VirtualBox和在VirtualBox中安裝CentOS7,但是限於篇幅有很多問題沒有展開,在本篇將展開介紹VirtualBox和CentOS的設置問題。
VirtualBox支持的虛擬機文件類型
VDI: Virtual Disk Image,這是VirtualBox默認使用的虛擬機文件類型。
VMDK:這是VMware默認使用的虛擬機文件類型。
VHD:這是微軟出品虛擬機軟體默認使用的虛擬機文件類型。
在創建虛擬機時選擇哪一種看個人偏好了,不過我一般偏好VMDK,因為預研成功的時候我可以將vmdk文件交給虛擬化管理直接載入到公司的虛擬機資源池中。當然,創建之後也是可以通過VirtualBox提供的VBoxManage.exe在三種格式之間轉換,這個文件位於VirtualBox的安裝目錄下。
VirtualBox支持的虛擬機CPU設置
默認情況下創建的虛擬機只使用了1核,有時候在宿主機硬體比較好的情況下為了有更好的體驗,可以設置多核多線程,本人電腦是4核8線程,因此最大可設置為4,如下圖所示:
VirtualBox支持的虛擬機網路接入方式
點擊「網路」選項時會看到如下界面:
在界面中有四個比較重要的設置:
連接方式。
界面名稱。
控制晶元。
混雜模式。
虛擬機網路連接方式
VirtualBox支持7種接入方式:
網路地址轉換NAT – Network Address Translation (NAT)
橋接網卡 – Bridged networking
內部網路 – Internal networking
僅主機(Host-Only)適配器 – Host-only networking。
通用驅動 – Generic networking
VirtualBox的網路連接類型設置界面如下:
這幾種網路連接類型的簡單對比如下:
虛擬機網路連接界面名稱
這裡其實當前宿主機上的網卡。在橋接模式下,Virtualbox會使用主機中單獨的一個驅動來處理網路數據。從網路數據中過濾出虛擬機的數據。因此在橋接模式下,一定要選擇當前正在使用的網卡。
虛擬機網路連接控制晶元
在VirtualBox中界面名稱有如下幾種:
AMD PCNet PCI II (Am79C970A);
AMD PCNet FAST III (Am79C973, the default):
Intel PRO/1000 MT Desktop (82540EM);
Intel PRO/1000 T Server (82543GC);
Intel PRO/1000 MT Server (82545EM);
Paravirtualized network adapter (virtio-net)
AMD PCNet FAST III (Am79C973)是默認推薦的,因為它幾乎被所有的操作系統支持,甚至是GNU GRUB boot manager都支持。Intel PRO系列是為了支持那些不再被操作系統提供驅動的系統,如Windows Vista。Intel PRO/1000 MT Desktop 支持Windows Vista及之後的Windows系統,Intel PRO/1000 T Server可以在無需安裝驅動的情況下被Windows XP識別,Intel PRO/1000 MT Server支持從其他平台上導入的OVF格式文件。
Paravirtualized network adapter (virtio-net)比較特殊,如果你選擇了Paravirtualized network adapter (virtio-net),那麼則需要自己保證,有對應的,特殊的軟體介面,去實現對應的網路處理的。
虛擬機網路連接混雜模式選擇
混雜模式(英語:promiscuous mode)是電腦網路中的術語。是指一台機器的網卡能夠接收所有經過它的數據流,而不論其目的地址是否是它。
一般計算機網卡都工作在非混雜模式下,此時網卡只接受來自網路埠的目的地址指向自己的數據。當網卡工作在混雜模式下時,網卡將來自介面的所有數據都捕獲並交給相應的驅動程序。
全部允許:所有數據(不論其目的地址是否是自己)都分別發送到虛擬機和主機。
允許虛擬電腦:所有數據(不論其目的地址是否是自己)僅發送到虛擬機。
拒絕:虛擬機和主機都僅接收目的地址是自己的數據。
根據VirtualBox的描述,在橋接模式下虛擬機會直接從宿主機接收到的數據包中過濾屬於發送到自己的數據包,為了保證虛擬機能夠接收到屬於自己的數據包,這裡建議選擇全部允許。
注意:在宿主機使用WIFI連接到網路時,由於大部分無線網卡不支持混雜模式,所以在宿主機使用無線連接到網路時可能無法上網。網上看過一些人的文章說是通過lookback來實現,本人嘗試過幾次都沒有成功,不知道問題出在哪裡。
CentOS7的安全設置
使用橋接模式後,在學習機上建議做如下配置
關閉SELINUX
SELinux是一個安全體系結構,它通過LSM(Linux Security Modules)框架被集成到Linux Kernel 2.6.x中。它是NSA (United States National Security Agency)和SELinux社區的聯合項目。在生產環境中根據需要來決定是否關閉,在學習環境中建議還是關閉掉。在CentOS7中這個設置在/etc/sysconfig/selinux文件中,可以通過vim之類的軟體將「SELINUX=enforcing」改為」 SELINUX=disabled」。
關閉防火牆
在CentOS中也有類似Windows中的防火牆,在CentOS7之前默認用的iptables,在CentOS7之後默認用firewall,可以執行systemctl disable firewalld來禁用防火牆。否則,在默認情況下,即使你安裝了Apache或Nginx或Tomcat之類的伺服器軟體,你會發現在其它終端上你任然無法訪問對應的埠,因為默認情況下防火牆開啟且開通了較少的埠(如22埠,用SSH連接)。
注意:上面用於關閉SELIUNX和關閉防火牆的辦法僅適合學習Linux伺服器相關知識的學慣用機上,生產環境用機上還是老老實實配置吧。
CentOS7的網路設置
設置CentOS7的IP
根據本人的經歷,在CentOS7下默認網路IP配置文件名可能有變化,可以通過查看/etc/sysconfig/network-scripts目錄下的文件:
命令如下:
ls -lh /etc/sysconfig/network-scripts
在本人虛擬機上效果如下:
這個配置文件一般以「ifcfg-enp」開頭的文件,在本人的虛擬機上為「ifcfg-enp0s3」,可以通過vim來進行編輯。因為本人家裡架設有路由器,為方便操作所以VirtualBox使用了橋接模式,路由器IP地址為12.168.60.1,所以CentOS的靜態IP地址也是在192.168.60網段(採用靜態IP的原因是可不希望每次通過SSH登錄到CentOS7的時候還要先看一下它的動態IP)。
下圖是本人在上一篇中講到在VirtualBox安裝CentOS7時默認情況下/etc/sysconfig/network-scripts/ifcfg-enp0s3的內容:
這是另一個可以正常訪問虛擬網路的CentOS上的配置信息:
與上圖相比主要有如下區別:
「BOOTPROTO=dhcp」改為「BOOTPROTO=static」,表示由動態分配IP地址改為固定IP地址(不然每次IP地址變化了,還得改SSH客戶端設置里的IP地址,相當麻煩);
「ONBOOT=no」改為「ONBOOT=yes」,表示系統啟動後自動連接到現有網路;
新增「IPADDR=192.168.60.148」,由於將獲取IP模式從動態模式改為固定IP,所以需要指定固定IP地址。注意:實際IP地址請根據當前網段設定來設置。
新增「PREFIX=24」,表示子網掩碼。我們知道IP4是由4個位元組表示,為方便識別在使用時會將其轉換為10禁止,如192.168.1.1,而每個位元組是8bit,這裡的24表示如果網段中另一個IP的b前24bit與其嚴格匹配,那麼這兩個IP就是在同一個子網段中,在配置Windows網路時表達同樣含義的子網掩碼為:255.255.255.0。
新增「GATEWAY=192.168.60.1」,表示網關地址。注意:實際IP地址請根據當前網段設定來設置,本人將家裡路由器設置成192.168.60網段,而不是路由器默認的192.168.1網段。
設置域名解析
CentOS7的域名解析伺服器設置信息保存在/etc/resolv.conf文件中,可以通過vim /etc/resolv.conf來修改,下圖是本人當前虛擬機里的域名解析設置:
域名解析伺服器的查找原則和一般程序中事件處理規則一致:如果就近的規則定義能處理,那麼就由就近的處理程序處理,否則就冒泡給上一級處理程序。在宿主機和虛擬機中均未使用DNS服務,雖然設置了192.168.1.1和192.168.60.1為DNS伺服器,但是對於外部域名它們是沒有辦法解析的,就會嘗試向上尋找可以解析外部域名的DNS伺服器。為保險起見,還是建議將本市所在的電信運營商提供的DNS添加進去。
設置主機名
CentOS的主機名設置存放在/etc/hostname中,可以通過vim /etc/hostname來修改,如下:
[root@centos7 ~]# vim /etc/hostname
centos7
和Windows中圖形用戶界面設置不同,通過上面的方式更改了虛擬機的IP配置之後,需要重啟網路才能生效,重啟網路的命令為:
systemctl restart network.service
VirtualBox的多網卡設置
在VirtualBox中可以支持多個網卡的,一般情況下可能用處不大,但在某些情況下這個還是有用的,比如本人現在的情況:家裡拉了一根電信寬頻,為方便全家人手機上網無線路由器架設在客廳,而筆記本在書房,前文說過WIFI條件下使用橋接模式時不支持混雜模式,即無法從宿主機接收到的數據包中過濾外部網路發送給虛擬機的數據包(宿主機和虛擬機可以在橋接模式下通訊)。此時面臨兩個選擇:一、使用NAT模式虛擬機和宿主機均可上網,但在宿主機上無法通過SSH客戶端訪問虛擬機,使用上極大不便;二、使用Bridged networking(橋接)是宿主機可以訪問虛擬機和上網(可以用SSH客戶端),但虛擬機無法上網了。
無意中發現電信寬頻的光貓為照顧一般家庭情況提供了兩個接入口,分別支持上網和iTV。這iTV本人曾經用了幾年,如今沒用了,於是在光貓處一根網線接到客廳無線路由器上,一根接到書房網線插槽里並最終連接筆記本。這樣書房裡的筆記本可以同時使用WIFI和有線,於是給虛擬機里的CentOS7配置了雙網卡,這樣在虛擬機使用WIFI情況下,宿主機和虛擬機均可上網,且宿主機可通過SSH等訪問虛擬機。
這就是在前面執行ls -lh /etc/sysconfig/network-scripts時可以兩個網路配置的原因(分別是ifcfg-enp0s3和ifcfg-Wired_connection_1)。
推薦閱讀:
※為什麼運維(SA)普遍反對使用 CentOS 7 ?
※基於Web日誌數據處理的網站KPI分析系統(Un)
※在 CentOS 7 上搭建屬於自己的 「完美」 郵件系統
※在 Linux 環境下能用 Homebrew 嗎?
TAG:Linux | CentOS | VirtualBox |