如何讓不同網段的主機進行通訊?如何讓虛擬機器上網? (閘道器 、路由器 、dns 的實際應用)
阿新 • • 發佈:2018-11-08
閘道器 路由器 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