今天突然所有的虛擬機都連不上了,情景:虛擬機ping不通外網。解決的同時,回顧下網絡相關知識。
環境
VM搭建了3臺虛擬機(centos7),NAT模式,靜態IP
橋接、nat和主機模式
-
橋接模式(bridge)
在橋接模式,VMWare的虛擬機就是相當于一臺獨立的主機,與主機處于同等地位,可以訪問網內的任何一臺機器,
橋接模式.png -
NAT模式(地址轉換模式)
NAT模式主要解決IP資源缺少的情況,IPv4不夠用才被弄出來的,因為沒法給世界上全部的機器分配一個獨特的公共IP,只能讓某個局域網共享一個公有IP,要想訪問公網,所以想要訪問公網,你先把數據包發送給路由器,路由器把你數據包里面的原地址修改成了公網地址然后再發出去。這樣服務器才知道返回包要發給誰。路由器收到返回包后再根據之前的地址映射把數據包傳給你。讓內部私網ip地址共用 WAN口的ip地址來上網。
NAT模式.png
實驗
-
NAT模式下,為虛擬機設置靜態IP,需要將DHCP服務關掉
NAT圖一.png -
設置固定的子網IP
Vmnet8相關參數.png
主機VMnet8的ip變成了192.168.176.1
-
設置NAT網關、端口轉發
NAT設置圖二.png
在校園網的環境下,可以把校園網內的其他主機看成是外網的主機。其實,虛擬機采用NAT聯網的方式,可以讓我們聯想到計算機網絡的相關知識,可以把我們的主機看成是一部路由器,然后虛擬機就是處在一個局域網中的一臺主機,共享路由器一個端口的地址對外網進行訪問,但是外網要訪問這部主機,就需要在路由器上做 端口映射
- 配置虛擬機的靜態IP
- 給CentOS配置網關。
# vi /etc/sysconfig/network
NETWORKING=yes
GATEWAY=192.168.176.2
- 設置靜態ip
# vi /etc/sysconfig/network-scripts/ifcfg-eno16777736
TYPE=Ethernet
#BOOTPROTO=dhcp
BOOTPROTO=static
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
NAME=eno16777736
UUID=0ae9d555-0fa5-427b-a186-ffe9c2e98aa4
DEVICE=eno16777736
ONBOOT=yes
PEERDNS=yes
PEERROUTES=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPADDR=192.168.176.102
DNS1=192.168.176.2
- 修改resolv.conf
#vi /etc/resolv.conf
nameserver 192.168.176.2
- 重啟網卡。
# service network restart
- 主機模式(Host-Only)
Host-Only模式其實就是NAT模式去除了虛擬NAT設備,然后使用VMware Network Adapter VMnet1虛擬網卡連接VMnet1虛擬交換機來與虛擬機通信的,Host-Only模式將虛擬機與外網隔開,使得虛擬機成為一個獨立的系統,只與主機相互通訊。其網絡結構如下圖所示:
其他
網關(gateway)
網關就是網絡與網絡之間連接的入口,
網關:那么多人向誰問路呢?當然是小區門衛(路由器),可是門衛在哪呢?它有地址,必須事先設定好。網關必須在局域網內部,我出了小區就路癡你叫我去xx路xx號問xx大爺我找不到。同時網關必須和外部網絡有連接,這樣才問得到。(知乎)
將虛擬機的dns設置成網關的地址,實際上中間由網關做了層中轉,有它來找dns服務器解析,還是真正的dns服務器工作。
//Todo
為什么常見路由器的網關默認 IP 都是 192.168.1.1?
路由器和交換機的區別
- 交換機
交換機主要是實現大家通過一根網線上網,但是大家上網是分別撥號的,各自使用自己的寬帶,大家各自上網沒有影響,哪怕其他人在下載,對自己上網也沒有影響,并且所有使用同一條交換機的電腦都是在同一個局域網內。 - 路由器
路由器同時具有交換機的功能,多了虛擬撥號的功能,局域網主機共用一個網絡