网关 路由器 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中:
[root@node2 Desktop]# ping 172.25.254.66
connect: Network is unreachable #网络不可到达
[root@node2 Desktop]# route -n
##添加网关
[root@node2 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 ##注意:网关为双网卡主机中内网
[root@node2 Desktop]# systemctl restart network
[root@node2 Desktop]# route -n
##此时仍然ping不通
[root@node2 Desktop]# ping 172.25.254.66
(3).在desktop中开启防火墙策略与设定内核参数
在desktop中:
[root@node1 ~]# systemctl start firewalld
@1打开防火墙地址伪装策略
[root@node1 ~]# firewall-cmd --add-masquerade
success
[root@node1 ~]# firewall-cmd --list-all
@2开启内核参数
[root@node1 ~]# sysctl -p
[root@node1 ~]# sysctl -a | grep ip_for
net.ipv4.ip_forward = 0
[root@node1 ~]# vim /etc/sysctl.conf
###############
net.ipv4.ip_forward = 1
[root@node1 ~]# sysctl -p
net.ipv4.ip_forward = 1
(4).测试
在server中:
[root@node2 Desktop]# ping 172.25.254.66
@@测试server在连接物理机时,它的ip是否进行了伪装
[root@foundation66 ~]# > /var/run/utmp
[root@foundation66 ~]# w -i
在server中:
[root@node2 Desktop]# ifconfig eth0
[root@node2 Desktop]# ssh root@172.25.254.66
在desktop中:
##这说明sersver确实是ip地址伪装了
[root@node1 ~]# 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添加网关:
[root@node1 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
[root@node1 Desktop]# systemctl restart network
[root@node1 Desktop]# route -n
##检测是否能ping通网关
[root@node1 Desktop]# ping 172.25.254.34
在真机中
@1开启火墙策略(添加地址伪装策略)
[kiosk@foundation34 Desktop]# firewall-cmd --list-all
FirewallD is not running
##先关闭虚拟机
[kiosk@foundation34 Desktop]# systemctl stop libvirtd.service
[root@foundation34 ~]# systemctl restart firewalld
[root@foundation34 ~]# firewall-cmd --add-masquerade
success
[root@foundation34 ~]# firewall-cmd --list-all
##打开虚拟机
[root@foundation34 ~]# systemctl start libvirtd.service
@2开启真机内核参数
[root@foundation34 ~]# sysctl -p
[root@foundation34 ~]# sysctl -a | grep ip_for
net.ipv4.ip_forward = 0
net.ipv4.ip_forward_use_pmtu = 0
[root@foundation34 ~]# vim /etc/sysctl.conf
######################
net.ipv4.ip_forward=1
[root@foundation34 ~]# sysctl -p
net.ipv4.ip_forward = 1
测试
##此时desktop(路由器)可以上网:
[root@node1 Desktop]# ping 183.232.231.172
##那么此时server也就可以上网:
[root@node2 Desktop]# ping 183.232.231.172 (可以连通)
[root@node2 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指向
实验:
[root@node1 Desktop]# ping 183.232.231.172
[root@node1 Desktop]# ping www.baidu.com
@本地解析
[root@node1 Desktop]# vim /etc/hosts ##即改即生效
#####################
183.232.231.172 www.baidu.com
[root@node1 Desktop]# ping www.baidu.com
[root@node1 Desktop]# ping www.taobao.com
那么难道每访问一个网址,都需要做一次本地解析吗?(这样无法满足大量的需求)
@dns指向
[root@node1 Desktop]# vim /etc/resolv.conf ##即改即生效
#####################
nameserver 114.114.114.114
[root@node1 Desktop]# ping www.taobao.com
[root@node1 Desktop]# ping www.qq.com
默认本地解析 比 dns指向解析 优先级高
[root@node1 Desktop]# vim /etc/hosts
#####################
#183.232.231.172 www.baidu.com
72.25.254.100 www.baidu.com
[root@node1 Desktop]# cat /etc/resolv.conf
##说明本地解析比dns指向解析优先级高
[root@node1 Desktop]# ping www.baidu.com
那么如何更改优先级
##更改优先级
[root@node1 Desktop]# vim /etc/nsswitch.conf
#####################
39 hosts: dns files
[root@node1 Desktop]# ping www.baidu.com