這個問題來源在於,我虛擬機連不上網,我使用route -n 查看我的路由表之后,看見沒有本地對應的網關。使用service network restart時候,多了一個本地的默認網關,如下圖所示:
為什么會出現以上情況?這就引出了路由器與網關的關系,以及Linux中路由與網關的的一些操作,以下是我查找一些資料的整理,都是基於我目前知識的整理。
為什么有網關、路由器,以及為什么要設置它
本質上就是實現計算機聯網、相互通信
網關
網關是一個邏輯概念,是一個ip地址,只有設置好網關的ip地址,TCP/IP協議才能實現不同網絡之間的通信。
網關的ip的地址是具有路由地址的ip地址。
現在又網絡A、B。網關的功能就是:如果網絡A中主機發送數據包的目的主機不在本地網絡中,就把數據包發送don給網絡A中路由表中對應的網關。
繼而由網絡A的網關發送數據包給網絡B的網關,網絡B的網關再轉發給網絡B中的某個主機。
一台主機可以由多個網關,一個網關里面可以有多台主機。
網關分為默認網關和自動網關。
默認網關: 默認網關必須是自己的ip地址所在的網段,如果一台主機的數據包找不到可用的網關,那么就數據發送給默認指定的網關,由這個網關來處理數據包。
自動網關:自動網關就是利用DHCP來自動給網絡中的電腦分配ip地址、子網掩碼、和默認網關。一旦更改了變化只需更改DHCP服務器的設置,那么所有的電腦均得到了默認網關的ip地址,使用與規模較大、TCP/IP參數可能變動的網絡。
IP路由器(路由器)
正如上述所說,如果兩個主機A、B並不能通信。那么就需要路由器來決定如何發送報文。那么路由器如何決定發送報文,或者說路由器發送報文的原理以及工作機制是什么呢?
我們使用route -n時會有一張路由表,此表再IP層維護着。路由表就是用來決策數據報文接下來的走向。
數據包的路由如下:
當我們接收到報文時,IP層先檢測目的IP是否和主機自身的IP相同。
如果數據報文中的IP地址時主機自身的ip地址,那么報文發送到傳輸層協議中。
如果不是主機自身IP地址,那么就從主機配置的路由功能去找入口,進行報文轉發,否則數據包丟棄。
出現開頭的問題就是很明了了,就是因為本地路由沒有設置網關,導致報文丟失。
那么我們來看看route -n 的具體內容
Destination 表示目的ip,這里時默認網關的意思,表示所有對網卡eth2的報文由網關192.168.109.78進行轉發。
上述資料參考鏈接:https://blog.csdn.net/hzhsan/article/details/44059861
路由的功能
1、最基本的功能是實現不同網段數據之間的跨網段之間通信
2、根據路由規則進行路由選擇
網關的功能
1、不同網段數據之間的跨網段之間通信
2、路由選擇
3、默認路由
4、NET轉換,(有點像之前公司里面做的ip映射,就是局域網訪問外網,裝有NAT軟件的路由器叫做NAT路由器,它至少有一個有效的外部全球IP地址。這樣,所有使用本地地址的主機在和外界通信時,都要在NAT路由器上將其本地地址轉換成全球IP地址,才能和因特網連接)(現在先進行了解一下,后續有機會深入進行了解)
先學習配置默認網關
臨時添加:route add default gw ip 臨時刪除: route del default gw ip 永久操作:編輯/etc/sysconfig/network-scripts/eth0
當然還有更加復雜的添加路由的命令,我們后續可以繼續學習