一.一些基本概念
1.IP地址和MAC地址
- 以太网上的两台计算机之所以能够交换信息就是因为每个设备都有一块网卡,并且每块网卡拥有唯一的物理地址(称为MAC地址)和唯一的逻辑地址(称为IP地址)。
- MAC地址是由生产厂商烧录好的,一般不能改动,并且全球唯一;IP地址需要绑定在网卡上,并且同一个IP地址不能绑定在多个网卡上。
- IP是Internet Protocol(网际互连协议)的缩写,是TCP/IP体系中的网络层协议。
区别:
- MAC地址和IP地址分配方式不一样。
MAC地址前3个字节代表网络硬件制造商的编号,由IEEE(电气与电子工程师协会)分配;后3个字节代表该制造商所制造的某个网络产品(如网卡)的系列号,由厂家自己分配。
IP地址是由网络拓扑结构决定分配。 - MAC地址和IP地址在OSI模型中寻址层不同。
IP地址应用于OSI第三层,即网络层。
MAC地址应用在OSI第二层,即数据链路层。 - MAC地址和IP地址结构长度不一样。
MAC地址是48位的十六进制数,IPv4地址是32位的二进制数,IPv6地址是128位,通常写成8组,每组为四个十六进制数的形式。
IPv4地址使用"点分十进制"法表示;IPv6地址使用"冒分十六进制"法表示
IPv4地址:192.168.1.1 十进制数
IPv6地址:FE80:0000:0000:0000:AAAA:0000:00C2:0002
MAC地址:00-E1-8C-D8-EC-FE 十六进制
2.子网掩码
为了便于根据IP地址寻找到该地址所代表的主机,这个32位的二进制数被分为2个部分:
192.168.0.10
网络号+主机号
子网掩码就是用来将某个IP地址划分成网络地址和主机地址两部分;用来判断两个IP是否在同一网络下。子网掩码是一个32位的二进制数,用"点分十进制"表示;其对应网络地址的所有位置都为1,对应于主机地址的所有位置都为0。
以上面这个ip为例:
IP地址:192.168.0.10
子网掩码:255.255.255.0
将IP和子网掩码都转为2进制:
11000000.10101000.00000000.|00001010
11111111.11111111.11111111.|00000000
网络号 |主机号
在网络中,网络号相同,主机号不同的两台主机是直接可以进行通讯的。
二.配置IP
注意:以下所有内容中的IP地址和设备需要根据自己的设备进行相应的更改!!!
1.ping命令
ping一般用于测试主机之间的连通性。
ping [IP地址]
ping -c 1 [IP地址] #ping一次
2.ifconfig命令
ifconfig命令用于配置和显示linux内核中的网络接口的网络参数。
windows:ipconfig
#################################################
#注意:看清楚用的网卡是什么,不一定都是ens33!! #
#################################################
# 1.显示网络设备信息
ifconfig #(只查看已激活的)
ifconfig -a #查看全部
# 2.临时设定IP(重启后失效)
ifconfig ens33 192.168.0.10/24
ifconfig ens33 192.168.0.10 netmask 255.255.255.0
# 3.开启/关闭指定网卡
ifconfig ens33 down
ifconfig ens33 up
# 4.启用/关闭arp协议
ifconfig ens33 arp #启用
ifconfig ens33 -arp #关闭
3.ip命令
ip命令用来显示和操纵linux主机的路由,网络设备,策略路由和隧道。
# 1.显示网卡ip信息
ip addr show
# 2.临时设定IP(重启后失效)
ip addr add 192.168.0.10/24 dev ens33
ip addr del 192.168.0.10/24 dev ens33 #删除
4.图形化配置工具
注意:必须在NetworkManager打开的情况使用
systemctl status NetworkManager
图形模式(init 5)下:
第1步:
使用 nm-connection-editor 命令进入图形化界面
第2步:
第3步:
第4步:
systemctl restart NetworkManager
# 可以选择重启服务让ip立即生效
# 但建议使用以下操作
nmcli connection show
nmcli connection down ens33
nmcli connection up ens33
字符模式(init 3)下:
第1步:
#模拟字符模式
init 3
#进入配置工具
nmtui
第2步:
第3步:
后续步骤比较简单,使用键盘上下左右和回车键进行配置即可,不再赘述。
5.nmcli命令
nmcli命令是NetworkManager client网络管理客户端。
注意:必须在NetworkManager打开的情况使用
systemctl status NetworkManager
# 1.启用/禁用网卡
nmcli device connect ens33
nmcli device disconnect ens33
# 2.查看网卡信息
nmcli device show ens33
# 3.显示设备连接状态
nmcli device status
# 4.查看当前连接状态
nmcli connection show
# 5.开启/关闭/删除连接
nmcli connection down ens33
nmcli connection up ens33
nmcli connection delete ens33
# 6.添加连接
nmcli connection add type ethernet con-name ens33 ifname ens33 ip4
192.168.0.10/24
# 7.更改
nmcli connection modify ens33 ipv4.addresses 172.25.254.100/24
6.通过修改网络配置文件
我们还可以通过修改配置文件的方式对网络进行配置。
- 配置目录:/etc/sysconfig/network-scripts/
- 配置文件:ifcfg-XXX
配置文件名称后面可以任意,建议直接加设备名称,如:ifcfg-ens33
配置静态IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33 #接口名称(建议与DEVICE相同)
DEVICE=ens33 #设备名称
BOOTPROTO=none #设备工作方式
ONBOOT=yes #网络服务开启时自动激活网卡
IPADDR=192.168.0.10 #IP地址
PREFIX=24 #子网掩码
NETMASK=255.255.255.0 #子网掩码
systemctl restart network #7版本使用此命令
systemctl restart NetworkManager #8版本使用此命令
配置dhcp方式获取IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33 #接口名称(建议与DEVICE相同)
DEVICE=ens33 #设备名称
BOOTPROTO=dhcp #设备工作方式
ONBOOT=yes #网络服务开启时自动激活网卡
systemctl restart network #7版本使用此命令
systemctl restart NetworkManager #8版本使用此命令
一块网卡配置多IP
vim /etc/sysconfig/network-scripts/ifcfg-ens33
NAME=ens33
DEVICE=ens33
ONBOOT=yes
BOOTPROTO=none
IPADDR0=192.168.0.10
NETMASK0=255.255.255.0
IPADDR1=172.25.254.10
PREFIX1=24
systemctl restart network #7版本使用此命令
systemctl restart NetworkManager #8版本使用此命令
三.DHCP服务器搭建
DHCP(动态主机配置协议)是一个局域网的网络协议。指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码。
之前在网路配置文件中修改为dhcp方式是让我们的虚拟机通过现实路由器的dhcp服务获取到IP和子网掩码。而现在我们进行的是将虚拟机1作为dhcp服务器去给虚拟机2分发IP和子网掩码。
第1步:将虚拟机1的IP设置为172.25.254.10(静态方式)。
方法参考上文。
第2步:为虚拟机1安装dhcp服务。
# 各种方式都可以,我这里由于搭建好了yum源,所以直接用yum安装
yum -y install dhcp
第3步:安装好dhcp服务后,查看其配置文件 /etc/dhcp/dhcpd.conf,
可以看到该文件的注释中说明dhcp服务的配置文件模板在/usr/share/doc/dhcp*/dhcpd.conf.example文件中。我们把它复制过来。
cp /usr/share/doc/dhcp-server/dhcpd.conf.example dhcpd.conf
第4步:修改dhcp配置文件
#####################################
# 开头数字为行号 #
# 行号不一定精准,大概在附近左右 #
#####################################
vim dhcpd.conf
######################## 第7行是域名.第8行是dns ####################
7 option domain-name "laowang.com";
8 option domain-name-servers 192.168.0.1;
######### 第10行是默认租约期600小时,第11行是最长租约期7200小时######
10 default-lease-time 600;
11 max-lease-time 7200;
#################### 删除或注释掉27,28两行 ########################
#27 subnet 10.152.187.0 netmask 255.255.255.0 {
#28 }
################## 第32行为子网和子网掩码 ##########################
################## 第33行为可获得的IP地址池 ########################
################## 第34行为网关 ###################################
32 subnet 172.25.254.0 netmask 255.255.255.0 {
33 range 172.25.254.100 172.25.254.200;
34 option routers 172.25.254.10;
35 }
####################### 删除36行之后所有内容 #######################
37 # This declaration allows BOOTP clients to get dynamic addresses,
38 # which we don't really recommend.
第5步:重启dhcp服务
systemctl restart dhcpd
测试:
- 在另一台虚拟机中,将获取IP的方式设置为dhcp,重启NetworkManager,使用ifconfig查看是否获取到ip,以及是否是我们配置的地址池中的ip。
- 或在/var/lib/dhcpd/dhcpd.leases 来查看dhcp的IP分配记录。
四.网关
1.基本概念
网关:
从一个房间走到另一个房间,必然要经过一扇门。同样,从一个网络向另一个网络发送信息,也必须经过一道“关口”,这道关口就是网关。顾名思义,网关(Gateway)就是一个网络连接到另一个网络的“关口”。也就是网络关卡。
路由器:
路由器又可以称之为网关设备。路由器就是在OSI/RM中完成的网络层中继以及第三层中继任务,对不同的网络之间的数据包进行存储、分组转发处理,其主要就是在不同的逻辑分开网络。而数据在一个子网中传输到另一个子网中,可以通过路由器的路由功能进行处理。
2.问题描述
windows真机IP:192.168.0.40
client虚拟机IP:172.25.254.10
以上两台主机由于网络位不同,所以不能直接建立通讯,所以我们需要用到第三台虚拟机作为路由器来进行数据转发的作用。
server虚拟机IP:192.168.0.50,172.25.254.20
此时同过以上双网卡的server主机,我们就可以让windows真机与client虚拟机不在同一网络下,也能够进行通讯。
3.实际操作
第1步:确认windows真机IP(win+r --> 输入cmd回车 --> 在命令行输入ipconfig),以及确认client主机的IP(ifconfig)。
第2步:在server主机中新添加一块网卡(成为双网卡主机)。在第一块网卡(ens33)上绑定IP192.168.0.50,在另一块网卡(ens38)绑定IP172.25.254.20,方法见前文。然后测试能否分别ping通windows真机和client主机。
第3步:在server中打开内核路由功能。
# 1.查看内核路由是否开启
sysctl -a|grep ip_forward
#等于0及没有开启该功能,如下图。
# 2.修改配置文件
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 #自行添加这条语句
# 3.使配置文件立即生效
sysctl -p
# 到此就打开了内核路由功能
第4步:在server中打开火墙的地址伪装功能。
systemctl start firewalld #打开火墙
firewall-cmd --list #列出火墙所有规则
# 我们可以看到在列出的所有规则中,在masquerade字段后面是no
firewall-cmd --permanent --add-masquerade #永久打开地址伪装
firewall-cmd --reload #重载
firewall-cmd --list
# 再次查看可以发现masquerade字段后面是yes
第5步:在client中,设定其网关。
# 方法1:修改系统全局网关
vim /etc/sysconfig/network
GATEWAY=172.25.254.20 #添加网关
# 在7中,重启network和NetworkManager
systemctl restart NetworkManager
systemctl restart network
# 在8中,重启NetworkManager,重启网卡链接
systemctl restart NetworkManager
nmcli connection down [设备名称]
nmcli connection up [设备名称]
# 方法2:直接在网络配置文件中加上网关
vim /etc/sysconfig/network-scripts/ifcfg-ens33
GATEWAY=172.25.254.20 #添加网关
# 在7中,重启network和NetworkManager
systemctl restart NetworkManager
systemctl restart network
# 在8中,重启NetworkManager,重启网卡链接
systemctl restart NetworkManager
nmcli connection down [设备名称]
nmcli connection up [设备名称]
完成之后,我们的windows主机(192.168.0.40)和client虚拟机(172.25.254.10)之间就能通过server主机进行通讯了。
五.DNS
1.基本概念
域名系统(Domain Name System,DNS)是Internet上解决网上机器命名的一种系统。就像拜访朋友要先知道别人家怎么走一样,Internet上当一台主机要访问另外一台主机时,必须首先获知其地址,TCP/IP中的IP地址是由四段以“.”分开的数字组成(此处以IPv4的地址为例,IPv6的地址同理),记起来总是不如名字那么方便,所以,就采用了域名系统来管理名字和IP的对应关系。
如:当操作者输入网址 www.baidu.com, 这个网址不是一个可以通信的IP地址。于是必须要在系统中把 www.baidu.com 变成百度服务器的 IP 地址,这样的过程叫做地址解析。
由上图可以看到,我们明明ping的是www.baidu.com,但是收到的数据竟然是36.152.44.95发来的。其实也就是我们ping www.baidu.com时,其实实际上是在ping一段IP。那么是什么把ping www.baidu.com和36.152.44.95对应起来的呢。
/etc/hosts(本地解析文件):在本地记录域名和IP关系的文件。
/etc/resolv.conf(DNS指向文件):域名如果在hosts中找不到对应的IP,会访问此文件寻找域名解析服务器。
2.实验测试
实验一:
# 1.确认/etc/hosts和/etc/resolv.conf文件中没有DNS规则
# 2.此时虽然我们的网络正常,但其实并不能ping通www.baidu.com
[root@centos ~]# ping www.baidu.com
ping: www.baidu.com: Name or service not known
# 3.在/etc/hosts文件中,添加一条规则。
vim /etc/hosts
36.152.44.95 www.baidu.com
# 4.测试后发现可以ping通了,这是因为ping www.baidu.com时,
# 我们去hosts文件中找到了和www.baidu.com对应的IP是36.152.44.95,
# 所以能够正常访问。
实验二:
# 1.确认/etc/hosts和/etc/resolv.conf文件中没有DNS规则
# 2.此时虽然我们的网络正常,但其实并不能ping通www.baidu.com
[root@centos ~]# ping www.baidu.com
ping: www.baidu.com: Name or service not known
# 3.在/etc/resolv.conf文件中,添加一条规则。
vim /etc/resolv.conf
nameserver 192.168.0.1 #DNS服务器
# 4.测试后发现可以ping通了,这是因为ping www.baidu.com时,
# 我们去resolv.conf文件中发现只要我们去192.168.0.1服务器
# 就可以查询到www.baidu.com对应的IP
# 所以能够正常访问。
或者我们可以直接去网络配置文件中直接添加DNS
vim /etc/sysconfig/network-scripts/ifcfg-ens33
DNS1=192.168.0.1
#需要重启网络, 当网络重新启动,实质是修改了/etc/resolv.conf文件的内容。