雜談:在Virtual Box中配置Linux網絡

Preface

近日在公司分配的辦公筆記本上因需要安裝了Arch Linux虛擬機,但是所用的平臺卻是Oracle Virtual Box——由於公司規定,不能隨便白嫖VMware workstation了,但是如何讓虛擬機聯網,以及從宿主機SSH連接到虛擬機,卻成了一個比較大的問題

vbox的限制

由於vbox和VMware對虛擬網卡的實現不同,vbox無法做到像VMware那樣僅憑一張虛擬網卡就可以上網以及實現SSH功能;使用NAT模式時,vbox中的虛擬機可以正常鏈接公網,可以ping通宿主機,但是宿主機卻無法ping通虛擬機,這樣無法使用ssh登錄;使用橋接模式時如果宿主機連接到的網絡需要驗證,那麼虛擬機很難拿到ip地址,自然無法連接公網和宿主機,其他的網絡模式更不適用於我們此時的要求,略去不提

此處並不進行兩種虛擬機網卡連接拓撲的深入討論,只是大致敘述一下設置方式

方法1:端口轉發

在虛擬機設置中,找到網絡設置->網卡1->高級設置,點擊端口轉發,添加一條規則,無需輸入ip地址,只要填寫端口號即可(主機隨意,虛擬機端口填22,或者指定的ssh端口),注意協議一定是TCP,然後在宿主機中就可以使用ssh root@localhost -p XXXX連接到虛擬機,XXXX是剛纔端口轉發中填寫的主機端口號

方法2:雙網卡方法

在虛擬機關機的情況下,找到虛擬機的網絡設置,選擇網卡2,點擊啓用網絡,並設置爲僅主機模式,然後在全局設定的網絡管理裏,查看Virtual Box Host-only Ethernet Adapter的IP地址和掩碼,記住備用

啓動虛擬機,首先安裝NetworkManager,用於替代Arch默認的systemd-networkd相關服務:

# install networkmanager
[root@archlinux ~] $ sudo pacman -S networkmanager

然後禁用systemd-networkd相關服務,共有三個服務被禁用

# disable systemd-networkd
[root@archlinux ~] $ sudo systemctl disable systemd-networkd systemd-networkd.socket systemd-resolved

# stop them
[root@archlinux ~] $ sudo systemctl stop systemd-networkd systemd-networkd.socket systemd-resolved

networkmanager設置爲開機啓動,並啓動此服務

[root@archlinux ~] $ sudo systemctl enable NetworkManager
[root@archlinux ~] $ sudo systemctl start NetworkManager

使用ip a命令查看所有的網卡設備名稱,找到接入僅主機網絡的網卡名稱,假定爲enp0s7,使用nmtui命令開始設置靜態地址等網卡屬性

[root@archlinux ~] $ sudo nmtui

根據屏幕上的提示一步一步填寫完畢即可,記得勾選Never use this network for default route,即不使用該網絡作爲默認路由,然後重啓NetworkManager即可

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章