1. 程式人生 > >如何讓不同網段的主機進行通訊?如何讓虛擬機器上網? (閘道器 、路由器 、dns 的實際應用)

如何讓不同網段的主機進行通訊?如何讓虛擬機器上網? (閘道器 、路由器 、dns 的實際應用)

閘道器 路由器 dns 的實際應用:

閘道器:
是一個可直接到達的IP路由器的IP地址,閘道器與本機IP地址必須處在同一網段,一臺主機可以有多個閘道器
路由器:
能夠實現跨網段進行網路訪問,只有開啟了火牆策略才叫路由器,否則它只是一個雙網絡卡
dns: 
是英文Domain Name System的縮寫,是域名解析伺服器的意思,即域名管理系統,將域名轉換成為網路可以識別的ip地址
NAT:
英文全稱是“Network Address Translation”,中文意思是“網路地址轉換”,它是一個IETF(Internet Engineering Task Force, Internet工程任務組)標準,
允許一個整體機構以一個公用IP(Internet Protocol)地址出現在Internet上。顧名思義,它是一種把內部私有網路地址(IP地址)翻譯成合法網路IP地址的技術。
NAT 可以讓那些使用私有地址的內部網路連線到Internet或其它IP網路上。NAT路由器在將內部網路的資料包傳送到公用網路時,在IP包的報頭把私有地址轉換成合法的IP地址。
NAT將區域網的每個裝置通過同一個公網IP訪問因特網。NAT還解決了IPv4地址不足的問題。

1.如何讓不同網段的主機進行通訊?

  我們都知道只有網路位相同的主機才能通訊,那麼為何物理機ip與百度的ip網路位完全不同也能通訊

實驗原理:

在server中:  ping 172.25.254.66

                                路由器
server  --------------->    desktop(雙網絡卡)    ----------------> 真機(物理機)
192.168.0.230       192.168.0.130  172.25.254.130               172.25.254.66         
                        eth1(內網)    eth0(外網)
                        接收資料包      傳送資料包

注意:路由器的內網即為server的閘道器

實驗:(在虛擬機器的圖形介面做實驗)

(1).搭建實驗環境

##先設定server主機的ip
  eth0 192.168.0.230

在這裡插入圖片描述

 ##再將desktop主機做雙網絡卡ip設定(路由器)
   eth0  172.25.254.130
   eth1  192.168.0.130

在這裡插入圖片描述
(2).在server中新增閘道器

在server中: 
[[email protected] Desktop]# ping 172.25.254.66
connect: Network is unreachable #網路不可到達
[[email protected] Desktop]# route -n

在這裡插入圖片描述

##新增閘道器
[[email protected] Desktop]# vim /etc/sysconfig/network-scripts/ifcfg-eth0 
############################
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=192.168.0.230
PREFIX=24
GATEWAY=192.168.0.130 ##注意:閘道器為雙網絡卡主機中內網

在這裡插入圖片描述

[[email protected] Desktop]# systemctl restart network
[[email protected] Desktop]# route -n

在這裡插入圖片描述

 ##此時仍然ping不通
 [[email protected] Desktop]# ping 172.25.254.66

在這裡插入圖片描述
(3).在desktop中開啟防火牆策略與設定核心引數

在desktop中:
[[email protected] ~]# systemctl start firewalld
@1開啟防火牆地址偽裝策略
[[email protected] ~]# firewall-cmd --add-masquerade 
success
[[email protected] ~]# firewall-cmd --list-all

在這裡插入圖片描述

@2開啟核心引數	
[[email protected] ~]# sysctl -p
[[email protected] ~]# sysctl -a | grep ip_for
net.ipv4.ip_forward = 0
[[email protected] ~]# vim /etc/sysctl.conf 
###############
net.ipv4.ip_forward = 1

在這裡插入圖片描述

[[email protected] ~]# sysctl -p
net.ipv4.ip_forward = 1

在這裡插入圖片描述
(4).測試

在server中:
[[email protected] Desktop]# ping 172.25.254.66

在這裡插入圖片描述

@@測試server在連線物理機時,它的ip是否進行了偽裝
[[email protected] ~]# > /var/run/utmp
[[email protected] ~]# w -i

在這裡插入圖片描述

在server中:
[[email protected] Desktop]# ifconfig eth0
[[email protected] Desktop]# ssh [email protected]

在這裡插入圖片描述

在desktop中:
##這說明sersver確實是ip地址偽裝了
[[email protected] ~]# w -i

在這裡插入圖片描述
2.如何讓虛擬機器上網?

實驗原理:

真機可以上網

ping  baidu.com

物理機    --------------->    路由器(雙網絡卡)    --------------->    百度
172.25.254.66        172.25.254.11   183.232.231.10          183.232.231.172
傳送資料包             接收資料包  封裝資料包  傳送資料包             接收資料包
                       內網        外網 
desktop 通過 真機 上網 ( 一跳 )

                                 路由器
desktop   --------------->    物理機(雙網絡卡)     --------------->    百度
                          br0(內網)  wlp3s0(外網)
server 通過 desktop 上網 ( 兩跳 )
     
server  -------->   desktop   --------->  物理機(可以上網)  --------->  百度
                     路由器                    路由器

實驗前提:

已經做好了實驗1;即server可以 ping 172.25.254.34 連通

在這裡插入圖片描述
實驗環境:

##server
eth0 192.168.0.230
閘道器:192.168.0.130(路由器的內網)

在這裡插入圖片描述

##dektop(路由器)   
eth0  172.25.254.130   外網
eth1  192.168.0.130    內網

在這裡插入圖片描述

##物理機(真機): 可以上網
br0 (插網線)  172.25.254.66  內網
wlp3s0(連無線)              外網

在這裡插入圖片描述
實驗:

在desktop(路由器)中
@1新增閘道器:
[[email protected] Desktop]# vim /etc/sysconfig/network-scripts/ifcfg-westos 
#####################
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=none
IPADDR=172.25.254.130
PREFIX=24
NAME=westos
 GATEWAY=172.25.254.66   ##真機ip

在這裡插入圖片描述

[[email protected] Desktop]# systemctl restart network
[[email protected] Desktop]# route -n

在這裡插入圖片描述

##檢測是否能ping通閘道器
[[email protected] Desktop]# ping 172.25.254.34

在這裡插入圖片描述

在真機中
@1開啟火牆策略(新增地址偽裝策略)
[[email protected] Desktop]# firewall-cmd --list-all
FirewallD is not running
##先關閉虛擬機器
[[email protected] Desktop]# systemctl stop libvirtd.service 
[[email protected] ~]# systemctl restart firewalld
[[email protected] ~]# firewall-cmd --add-masquerade 
success
[[email protected] ~]# firewall-cmd --list-all

在這裡插入圖片描述

##開啟虛擬機器
[[email protected] ~]# systemctl start libvirtd.service
@2開啟真機核心引數 
[[email protected] ~]# sysctl -p
[[email protected] ~]# sysctl -a | grep ip_for
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
[[email protected] ~]# vim /etc/sysctl.conf 
######################
net.ipv4.ip_forward=1

在這裡插入圖片描述

[[email protected] ~]# sysctl -p
net.ipv4.ip_forward = 1

在這裡插入圖片描述
測試

##此時desktop(路由器)可以上網:
[[email protected] Desktop]# ping 183.232.231.172

在這裡插入圖片描述

##那麼此時server也就可以上網:
[[email protected] Desktop]# ping 183.232.231.172   (可以連通)

在這裡插入圖片描述

[[email protected] Desktop]# ping www.baidu.com     (不能連通,因為無法自動識別到它的ip)

在這裡插入圖片描述

排錯思想:

1.如果同網段的主機無法通訊,那此時一定是網絡卡出現了問題
解放方案: 刪除原來的網絡卡 重新新增即可

2.如果本機無法ping通閘道器
解決方案:檢視閘道器,檢查閘道器的ip與主機的ip是否處在同一網段!

3.無法ping通百度ip
解決方案:(1)檢視路由器火牆策略(必須開啟yes)
         (2)檢視路由器核心引數(必須為1)

3.那麼如何才能讓虛擬機器ping www.baidu.com連通?

方法1:本地解析
vim /etc/hosts        #本地知道系統不知道,本地告知系統獲得ip
###########
183.232.231.172 www.baidu.com
方法2:dns指向解析
vim /etc/resolv.conf  #本地和系統都不知道,通過詢問/etc/hosts獲得想訪問的網址的ip
#########
nameserver 114.114.114.114     ##dns指向
實驗:
[[email protected] Desktop]# ping 183.232.231.172
[[email protected] Desktop]# ping www.baidu.com

在這裡插入圖片描述

@本地解析
[[email protected] Desktop]# vim /etc/hosts   ##即改即生效
#####################
183.232.231.172  www.baidu.com

在這裡插入圖片描述

  [[email protected] Desktop]# ping www.baidu.com

在這裡插入圖片描述

[[email protected] Desktop]# ping www.taobao.com

在這裡插入圖片描述

那麼難道每訪問一個網址,都需要做一次本地解析嗎?(這樣無法滿足大量的需求)

@dns指向
[[email protected] Desktop]# vim /etc/resolv.conf   ##即改即生效
#####################
nameserver 114.114.114.114

在這裡插入圖片描述

[[email protected] Desktop]# ping www.taobao.com
[[email protected] Desktop]# ping www.qq.com

在這裡插入圖片描述

預設本地解析 比 dns指向解析 優先順序高

[[email protected] Desktop]# vim /etc/hosts
#####################
#183.232.231.172  www.baidu.com
72.25.254.100   www.baidu.com

在這裡插入圖片描述

[[email protected] Desktop]# cat /etc/resolv.conf

在這裡插入圖片描述

##說明本地解析比dns指向解析優先順序高
[[email protected] Desktop]# ping www.baidu.com

在這裡插入圖片描述
那麼如何更改優先順序

##更改優先順序
[[email protected] Desktop]# vim /etc/nsswitch.conf
#####################
39 hosts:      dns          files

在這裡插入圖片描述

[[email protected] Desktop]# ping www.baidu.com

在這裡插入圖片描述