如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

 ##再将desktop主机做双网卡ip设定(路由器)
   eth0  172.25.254.130
   eth1  192.168.0.130

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)
(2).在server中添加网关

在server中: 
[[email protected] Desktop]# ping 172.25.254.66
connect: Network is unreachable #网络不可到达
[[email protected] Desktop]# route -n

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

##添加网关
[[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 ##注意:网关为双网卡主机中内网

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)
(3).在desktop中开启防火墙策略与设定内核参数

在desktop中:
[[email protected] ~]# systemctl start firewalld
@1打开防火墙地址伪装策略
[[email protected] ~]# firewall-cmd --add-masquerade 
success
[[email protected] ~]# firewall-cmd --list-all

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

@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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)
(4).测试

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

@@测试server在连接物理机时,它的ip是否进行了伪装
[[email protected] ~]# > /var/run/utmp
[[email protected] ~]# w -i

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

在desktop中:
##这说明sersver确实是ip地址伪装了
[[email protected] ~]# w -i

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)
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 连通

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)
实验环境:

##server
eth0 192.168.0.230
网关:192.168.0.130(路由器的内网)

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

##dektop(路由器)   
eth0  172.25.254.130   外网
eth1  192.168.0.130    内网

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

##物理机(真机): 可以上网
br0 (插网线)  172.25.254.66  内网
wlp3s0(连无线)              外网

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)
实验:

在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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

##检测是否能ping通网关
[[email protected] Desktop]# ping 172.25.254.34

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

在真机中
@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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

##打开虚拟机
[[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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)
测试

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

##那么此时server也就可以上网:
[[email protected] Desktop]# ping 183.232.231.172   (可以连通)

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

[[email protected] Desktop]# ping www.baidu.com     (不能连通,因为无法自动识别到它的ip)

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

排错思想:

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

那么难道每访问一个网址,都需要做一次本地解析吗?(这样无法满足大量的需求)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

默认本地解析 比 dns指向解析 优先级高

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

##说明本地解析比dns指向解析优先级高
[[email protected] Desktop]# ping www.baidu.com

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)
那么如何更改优先级

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)

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

如何让不同网段的主机进行通信?如何让虚拟机上网? (网关 、路由器 、dns 的实际应用)