IP指网际互连协议,Internet Protocol的缩写,是TCP/IP体系中的网络层协议。
电脑之间要实现网络通信,就必须要有一个合法的ip地址。
IP地址=网络地址+主机地址(又称:主机号和网络号组成)
IP地址根据网络ID的不同分为5种类型,A类地址、B类地址、C类地址、D类地址和E类地址。
IP类型 | 网络位+主机位 | 地址范围(十进制) | 适用场景/特征 |
A类地址 | 8+24 | 1.0.0.0 到127.0.0.0 (第一位为0) |
大型网络 |
B类地址 | 16+16 | 128.0.0.0到191.255.255.255 (以“10”开始) |
中等规模的网络 |
C类地址 | 24+8 | 192.0.0.0到223.255.255.255 (以“110开始) |
小规模的局域网络 |
D类地址 | / | 以“1110开始 | 用于在IP网络中的组播 |
E类地址 | / | 以“11110开始 | 保留作研究之用 |
子网掩码是一个32位的2进制数 ,它必须结合IP地址一起使用。
子网掩码只有一个作用,就是将某个IP地址划分成“网络地址”和“主机地址”两部分。
子网掩码通过和IP地址的“与”运算,求出主机地址是多少。
网络位一致,主机位不一致的2个IP可以直接通讯
# ping ip :检查网络是否通畅
# ping -c 1 ip :ping 一次
# ping -w 1 ip: 等待一秒
# ping -c1 -w1 ip :ping一次等待一秒
ifconfig是linux中用于显示或配置网络设备(网络接口卡)的命令,英文全称是network interfaces configuring。
# ifconfig :查看或设定网络接口
# ifconfig enp1s0 172.25.254.90 netmask 255.255.255.0 :设定ip
# ifconfig enp1s0 down :关闭网络接口
# ip addr : 显示或配置网络设备
# ip a:显示或配置网络设备
回环接口:TCP/IP中回环设备是一个通过软件实现的虚拟网络接口,它不与任何硬件相关联。在IPv4中,其对应的IP地址一直是127.0.0.1。
重新设定ip必须先删除之前的
# ip addr del dev enp1s0 172.25.254.173/24 :删除设定的ip
# ip addr add dev enp1s0 172.25.254.173/24 :设定ip
总结:无论是ifconfig 还是 ip addr 设定ip都是临时的,重启系统后,ip都会消失!!
# ip addr show enp1s0 :查看网卡的信息
# nmcli device show enp1s0 :查看网卡信息
# nmcli device status :查看网络服务接口信息
# nmcli device disconnect enp1s0:关闭网卡
# nmcli device connect enp1s0:启用网卡
# nmcli connection down westos:关闭连接,注意:后面加的是name不是device
# nmcli connection up westos:开启连接
# nmcli connection delete westos:删除连接
# nmcli connection add type ethernet con-name westos ifname enp1s0 ipv4.method manual ipv4.addresses 172.25.254.173/24:添加连接
# nmcli connection modify westos ipv4.addresses 172.25.254.100/24:更改连接
注意更改后一定要reload+up,否则更改失败
# nmcli connection reload:加载连接
# nmcli connection up westos :开启连接
# nmcli connection modify westos ipv4.method auto:更改连接为动态分配连接
ps:这里出现问题,无法动态分配ip ----------已经解决!!
因为在家里,没有搭建DHCP服务器,所以虚拟机无法所要ip。具体搭建DHCP服务器的步骤在本文第七!!
无论是图形还是命令设定网络,本质都是在配置文件中修改!
# cd /etc/sysconfig/network-scripts/:配置文件路径,只能在这个目录里修改!
文件名必须以“ifcfg-”开头,否则不识别!!
动态ip配置文件设置方法:
DEVICE=enp1s0
ONBOOT=yes :网卡开机自启动
BOOTPROTO=dhcp :动态ip
NAME=westos
静态ip配置文件设置方法:
DEVICE=enp1s0
ONBOOT=yes
BOOTPROTO=none :静态ip,相当于"manual"
IPADDR0=172.25.254.173
NETMASK=255.255.255.0 :与prefix都是子网掩码的意思
IPADDR1=1.1.1.0
PREFIX1=24
NAME=westos
文件配置完毕不要忘了reload+up!!
ps:一定要用 ip addr 查看才可以
注意:同一块网卡不要添加多个连接,否则是无效的!!
两个不同网段的主机无法通信:主机A和主机B
如果要通信,必须添加路由器,路由要有多块网卡。
在路由器中设定两个网段的ip,因为是同一块内核所有可以直接通信。
A和B通信过程如下:
73---->173------>2------->1
注意:当包到达192.168.0.2时,无法直接转发给192.168.0.1,因为包的源ip为172.25.254网段。
因此,此时必须做源地址转换(SNAT:source neteork adress translation)
那么主机A是如何知道要向哪个路由器发送包呢?
因为有网关:设定了要做地址转换的ip
# ip route add default via 172.25.254.73:临时添加网关,重启失效
# ip route del default via 172.25.254.73:手动删除网关
# route -n : 查看网关
# vim /etc/sysconfig/network :针对所有网卡生效
# cd /etc/sysconfig/network-scripts/:进入网络配置目录,针对某块网卡进行设置
首先主机可以ping通外网(百度的ip地址)!
但虚拟机无法ping通外网! 但可以ping通主机!----如果无法ping通主机,可以看前面的笔记!
如果想虚拟机ping通外网,则主机可以充当路由器!!
在虚拟机上添加网关-----一定与虚拟机和主机ip在同一网段:一般设定为主机ip即可!!
# ip route add default via 172.25.254.73
# route -n : 查看网关
一定保证!!虚拟机可以ping网关!!
此时在ping 百度地址,发现可以ping通!
ps:这里出问题.....一直ping不通,最后解决了。
如果主机虚拟机可以互相ping通,但虚拟机无法访问外网ip地址,原因有可能是:
DNS是域名系统(DomainNameSystem)的缩写。每一个域名都对应一个唯一的IP地址,在Internet上域名与IP地址之间是一对应的,DNS就是进行域名解析的服务器。
eg: www.baidu.com------> 14.215.177.39
# vim /etc/hosts : 进入目录手动书写解析域名
实验:
虚拟机可以ping 百度的ip 地址,却无法通过www.baidu.com访问网页!
这是因为没有做地址解析,无法将域名转换为ip地址!!
因此,可以手动在本地添加域名解析
# vim /etc/hosts : 进入目录手动书写解析域名
ip 域名
就能成功通过域名访问百度!!
but...还想访问qq,weibo等等怎么办? 必须一条一条写进本地解析文件,很麻烦!
并且ip地址很难记,不如域名方便。
因此我们可以利用DNS 服务器,自动解析域名,转换为ip地址!!
# vim /etc/resolv.conf : 设定DNS指向
nameserver 114.114.114.114 :以为使用者提供高速、稳定、可信的DNS递归解析服务,为网站提供强大抗攻击能力的权威智能DNS解析服务
设定成功后,可以自动将域名转换为ip地址!! 不需要一一对应手动添加!!
默认情况下,本地优先级高于指向优先级
但是可以通过编辑文件 /etc/nsswitch.conf 改变优先级
---------------------------------------------------------------------------------------
本地和DNS指向都可解析域名,那么哪个文件的优先级高呢?
首先在本地添加: 172.25.254.73 www.baidu.com
然后ping www.baidu.com,如果连接的ip是172.25.254.73,就说明本地优先级高于指向优先级!
可以看出默认情况下,本地>指向
但是可以通过编辑文件 修改优先级!
# vim /etc/nsswitch.conf : 进入目录,找到hosts ,改变顺序即可!
再次ping www.baidu.com 发现ping的是真地址,说明优先级已改变!!
前面学习过搭建本地软件仓库,但是本地仓库只能主机自己访问,其他主机中是无法访问的。特别是在企业中,我们需要维护的系统数量庞大,如果在每个系统中各自搭建本地软件仓库会浪费大量的资源。为了节省这部分重复的资源,需要把大家都要使用的资源共享到互联网中,即建立网络软件仓库。网络软件仓库只需要在一台主机上搭建仓库,其他主机可以通过互联网直接访问!!因此不需要在每一台主机中独立建立软件资源了。
首先确保真机本地仓库搭建ok,可以下载httpd。我们需要采用http:// 超文本传输协议这种共享方式来搭建网络仓库,提供此协议的软件是Apache,该软件的软件包名称为httpd,可以使用 #dnf install httpd -y
命令在真实主机中安装httpd,安装完成后访问真实主机IP:172.25.254.73可以看到Apache界面
删除主机的epel源,防止对网络仓库产生影响
# systemctl enable --now httpd:开启共享软件httpd
# systemctl disable --now firewalld.service:关闭防火墙
首先利用# df 查询主机挂载信息,看看8.2镜像是否挂载
如果挂载要取消,因为要重新挂载至apache的默认目录下
# umount /source : 取消挂载镜像
因为Apache的共享目录默认为 /var/www/html
因此新建目录 必须在该默认目录下
# mkdir /var/www/html/westos : 新建共享目录
# mount /westosiso/rhel-8.2-x86_64-dvd.iso /var/www/html/westos/ :挂载镜像到共享目录
此时在真机浏览器搜索 http://172.25.254.73/westos/
可以看到该共享目录下的文件
在 # /etc/rc.d/rc.local 文件中写入挂载镜像命令即可实现开机自动挂载,别忘了设置文件执行权限!!
进入 /etc/yum.repos.d/目录,编辑 westos.repo文件!
ps:该地址必须真实存在,可以通过连接打开!!
对于远程主机来说,想共享软件仓库,只需要编辑配置文件即可!!
# vim /etc/resolv.conf :编辑配置文件如下,注意:该地址也必须真实存在!!
既然是共享网络仓库,远程主机与共享主机必须可以通信才可以!!虚拟机不能上外网也可以!
到这儿,网络软件仓库就配置完成拉
# dnf repolist : 查看仓库信息,仓库配置成功!!
DHCP是Dynamic Host Configuration Protocol的缩写,即动态主机配置协议。
DHCP是一个很重要的局域网的网络协议,使用UDP协议工作,主要有以下用途:
1、为内部网络或网络服务供应商自动分配IP地址;
2、为用户或者内部网络管理员作为对所有计算机作中央管理的手段;
3、为内部网络用户接受IP租约。
而DHCP服务器就是专门承载和运行DHCP服务,并帮助我们管理IP的专用服务器。
开启虚拟机westosb的快照,将其作为dhcp服务器!!
首先修改虚拟机b的主机名 # hostnamectl set-hostname dhcp_server.org
进行网络配置,确保该虚拟机有可用的ip(172.25.254.80),可以进行ssh连接
因为要安装dhcp服务,必须要配置好软件仓库。
# dnf search dhcp : 搜索dhcp服务
# dnf install -y dhcp-server.x86_64 : 安装dhcp服务
ps:安装完成无法启动!!因为配置文件是空的!!还需要编辑配置文件!!
安装好dhcp服务时,要编辑配置文件。
首先查询dhcp的配置文件是什么?
# rpm -qc dhcp-server :查询配置文件
查看配置文件发现是空的!但是里面有配置文件模板,复制模板到配置文件!
# cat /etc/dhcp/dhcpd.conf:查看配置文件
# cp /usr/share/doc/dhcp-server/dhcpd.conf.example /etc/dhcp/dhcpd.conf:复制模板到配置文件
# vim /etc/dhcp/dhcpd.conf :编辑配置文件
输入 " : set nu " 显示文件序号
配置成功后,开启DHCP服务!
# systemctl start dhcpd :开启dhcp服务
# systemctl status dhcpd:查询dhcp服务状态
在虚拟机a上进行测试
首aa的固定ip为:172.25.254.173
然后设置dhcp服务,发现成功设置!
dhcp服务器已经分配了ip:172.25.254.40
在40-70的范围内,可见dhcp服务器搭建成功
其次,还可以在dhcp服务器上查看具体ip分配信息
# # cat /var/lib/dhcpd/dhcpd.leases
显示172.25.254.40 这个ip分配的网卡是....e6,与上匹配!!说明dhcp服务器搭建成功!
主机与虚拟机为独立的系统,通信要通过网卡。
虚拟机中的网卡设置,这里常用的有三种网络连接方式:桥接模式、NAT模式、仅主机模式
这里介绍NAT模式和桥接模式
本次实验,首先将真机网络恢复为默认模式!!恢复前关闭所有虚拟机!!
# westos-network common :恢复网络为默认模式
此时查看网卡设备 # ifconfig
NAT模式就是地址转换模式,NAT模式下,主机与虚拟机之间必须通过虚拟路由(vibro)进行通信!虚拟机与外界通信必须经过地址转换!!
NAT就是网络地址映射,虚拟机对外访问的时候是先映射到宿主物理机上,物理机再对外进行转发,反过来,也是类似的过程。
如上图所示,虚拟机无法与主机、其他主机直接通信,必须通过虚拟路由的地址转换才可以!!
虚拟路由有多块网卡,一段连接虚拟机(通过dhcp给虚拟机分配ip),一段连接主机。
也就是说,即使虚拟机与主机在同一网段也无法通信!!
---------------------------实验-------------------------------------
## virt-manager : 打开虚拟机控制器
此时虚拟机网卡有问题,所有删除网卡设备,重新添加!!
选择NAT模式!!
运行虚拟机aa,当虚拟机运行时,主机网卡设备多出一块vnet0,虚拟机关闭时,vnet0消失!!
可见,vnet0就是虚拟机aa的虚拟网卡!!
在虚拟机上查看ip,发现此时ip是172.25.254.173,与主机在同一网段,按照之前的实验,两者互相可以ping通,但是此时却无法ping 通!!
ps:之前网卡选的是share ,应该设置为网桥模式!
然后将虚拟机aa设置为dncp模式,发现分配的ip为192.168.122.110,但是之前没有搭建这个网段的dhcp服务器!
此时ping 172.25.254.73 发现居然可以ping通,二者不再一个网段!!
这是因为NAT模式下,二者通过虚拟路由(vibr0)连接,而虚拟路由与虚拟机aa是统一网段!!
当虚拟机访问外部主机时,必须先经过虚拟路由做地址伪装在经过真实主机的物理接口访问!!
这太麻烦!!因此可以设置桥接模式,使虚拟机的虚拟网卡与主机的真实物理网卡
直接连接,不用在做地址转换!!
接模式是将虚拟机的网卡桥接到主机的真实网卡上。
桥接之后虚拟机就是物理机网络环境的一部分了,此时虚拟机就像和局域网中其他机器一样,它可以访问网络中的任何机器,网络中其他机器也可以访问虚拟机,当然虚拟机也可以上外网。所以这种模式下天然就是可以互联互通的,当然这种模式也有它的一些注意事项,
----------------桥接模式的设置(主机上操作)--------------------------------------------
设置前先关闭所有的虚拟机!!
# cd /etc/sysconfig/network-scripts/ :进入目录,新建 ifcfg-br0
编辑桥接网卡!!如下!!
# # nmcli connection reload
# nmcli connection up br0
# nmcli connection up enp0s20f0u4u2
# bridge link :保存后查看,此时已经成功建立桥接模式!!ip显示在共享网卡上,真实物理网卡没有ip
# systemctl restart libvirtd :重启虚拟服务!!别忘了!!
此时打开虚拟机aa,自动出现桥接模式!!
打开虚拟机, 此时ip仍然是172.25.254.173,ping 主机:172.25.254.73 发现可以ping通!!
证明桥接模式设置成功!!