基於macOS+VMware的GNS3內VM上公網

基於macOS+VMware的GNS3內VM上公網

筆者經常需要做網絡實驗,GNS3就是筆者最喜歡用的模擬器,爲了便於實驗,需要能從macos上直接ssh登陸模擬出來的vm,並且vm需要上公網。經過研究,已解決此問題,並以此分享出來

tag: macos, vmware, gns3, vm上公網

小慢哥的原創文章,歡迎轉載


環境說明

本文基於以下環境:

▷ 宿主:macOS Mojave
▷ GNS3版本:2.1.14
▷ GNS3內部的VM運行在:GNS3 VM裏
▷ GNS3 VM運行在:VMware Fusion 專業版 11.0.1
▷ centos7.3是運行在GNS3 VM裏的Qemu虛擬機

可以理解爲在macOS上運行了VMware,在VMware裏運行了GNS3 VM,在GNS3 VM裏運行了Qemu虛擬機。

對,就是"俄羅斯套娃"。

想讓GNS3內的VM上Internet公網,有2種方法,接下來分別詳細講解

方法1(內置)

基於macOS+VMware的GNS3內VM上公網

GNS3內置一個nat cloud,只要將vm連上這個nat cloud就可以上公網(上圖中的Nat1就是nat cloud)

實現原理:nat cloud會對數據包進行SNAT,將源IP轉換成macOS上出公網對應的本機ip。比如macOS是用wifi上網,wifi dhcp分配給macOS的ip是192.168.1.10,那麼nat cloud就會將自己的ip出公網數據包的源IP轉換爲192.168.1.10

▪ 優點:無需任何額外配置,GNS3內置實現
▪ 缺點:無法從macOS上直接ssh連接到vm(即圖上的centos7.3-1,本文接下去的部分若無特殊說明,均用vm表示),只能通過vnc連接

方法2(推薦)

基於macOS+VMware的GNS3內VM上公網

採用vmnet + GNS3 VM加網卡 + 自定義cloud + pfctl + 開啓ip_forward

▪ 優點:vm不僅可以上網,還可以從mac上連接到vm裏做管理
▪ 缺點:配置相對複雜,需要對macos、vmware、gns3、網絡原理有一定了解

1️⃣ vmware偏好設置裏新增一張網卡,這裏爲vmnet2,然後按下圖所示進行配置

基於macOS+VMware的GNS3內VM上公網

▷ “允許該網絡上的虛擬機連接到外部網絡(使用NAT)”不要勾選,因爲測試發現bug(比如虛擬機裏訪問Internet公網,響應時有時無,延時也很嚴重,懷疑是GNS3 VM的bug)
▷ “將Mac主機連接到該網絡”要勾選,這樣在macos上才能出現vmnet2網卡
▷ 子網IP是自動生成的,這裏是172.16.71.0/24,對應macos上vmnet2的ip是172.16.71.1/24

2️⃣ GNS3 VM加網卡

在vmware裏打開GNS3 VM的配置,添加一張網卡,如下圖紅框裏的網絡適配器3就是筆者添加的網卡

基於macOS+VMware的GNS3內VM上公網

基於macOS+VMware的GNS3內VM上公網

3️⃣ 自定義cloud

如下圖,要選擇“Run the cloud node on the GNS3 VM”

基於macOS+VMware的GNS3內VM上公網

名字任意,這裏叫做mgr-cloud

基於macOS+VMware的GNS3內VM上公網

注意,只需要將eth2(即上一步新增的網絡適配器3)Add進來

基於macOS+VMware的GNS3內VM上公網

4️⃣ 在macos上通過pfctl配置nat,以及允許vmnet2流量進出

a. sudo vim /etc/pf.anchors/vmware-gns3,內容如下

基於macOS+VMware的GNS3內VM上公網

圖上的en7是筆者mac上的有線網卡,en0是我mac上的wifi網卡(因爲在公司是用有線網卡,在家裏是用wifi上網,所以按上面這樣配置2條,就無需擔心網絡切換會導致nat失敗)

b. sudo vim /etc/pf.conf,內容如下(紅框內容是需要增加的)

基於macOS+VMware的GNS3內VM上公網

c. 校驗配置文件並生效:

# 校驗
sudo pfctl -vnf /etc/pf.anchors/vmware-gns3
sudo pfctl -vnf /etc/pf.conf

# 生效
sudo pfctl -ef /etc/pf.conf

pfctl會在mac開機時自動執行,無需每次都手工執行

5️⃣ 開啓ip_forward

sudo sysctl -w net.inet.ip.forwarding=1

注意:該命令在mac重啓後就會失效,因此在使用GNS3時候需要手工執行一次

測試

方法1不符合需求,就不再贅述

方法2的測試:此時,vm裏應該已經通過dhcp獲得ip地址,並且可以直接從mac上ssh登陸vm。然後在vm裏只需要手工增加一條網關(網關指向mac上vmnet2的ip,筆者環境對應的是172.16.71.1),就可以通過mac上公網。另外,vm裏的dns需要手工配置(比如指向8.8.8.8)

附:多臺vm上公網

如果需要多臺vm上公網,可以自行添加一個hub或switch

基於macOS+VMware的GNS3內VM上公網

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