Linux中的网络配置
1 什么是IP ADDRESS
- IP ADDRESS全称为internet protocol ADDRESS,即网络进程地址
- 目前常用的是ipv4协议簇,即internet protocol version 4
- ip是由32个01组成
- eg:11111110.11111110.11111110.11111110 = 254.254.254.254
- 注意:8bit=1byte ,运营商常说的100M,指的是有多少个0和1位,而实际生活中我们所说的100M是指多少个字节数,那么100M的下载或者上传速度,最多是 100/8 =12.5M
- ip由网络位和主机位组成,网络位相同的主机之间,才可以进行通信
2 子网掩码
- 用来划分网络区域
- 子网掩码非0的位对应的ip上的数字表示这个ip的网络位
- 子网掩码0位对应的数字是ip的主机位
- 网络位表示网络区域
- 主机位表示网络区域里某台主机
3 ip通信判定
- 网络位一致,主机位不一致的2个IP可以直接通讯
eg:172.25.254.1/24和172.25.254.2/24之间可以相互通信,其中24=255.255.255.0,表示的是网络位的个数 - 现在我们所使用的网络,数据传输方式是同轴传输,也就是说,两台主机之间的线缆,只有一根。对数据传输的控制:Mac
4 网络设定工具
4.1 设置双网卡
virt-manager命令打开虚拟机管理:
点击左下角的Add Hardware:
选择Neteork添加网卡:
查看有两块网卡:
使用ifconfig命令查看网卡个数:
4.2 ping命令
命令 | 含义 |
---|---|
ping ip | 检测网络是否通畅。ping之后显示的time表示主机的数据到达目标主机,再给反馈后一共花费的时间,也叫网络延迟 |
ping -c 1 ip | ping 1 次 |
ping -w1 ip | 等待1秒。假如ping不通的时候,要等一段时间,才会显示结果,使用该命令后,可以优化检测结果,只等1秒。w、c和数字之间,加不加空格都可以 |
ping -c1 -w1 ip | ping1次等待1秒 |
1)检测网络是否通畅:
2)使用w和c参数分别检测网络:
3)同时使用w和c参数进行网络检测:
4.3 ifconfig命令
命令 | 含义 |
---|---|
ifconfig | 查看或设定网络接口。可以直接用该方式查看ip,也可以使用ifconfig +设备名,例如ifconfig ens3来查看ip |
ifconfig device ip netmask 255.255.255.0 | 设定ip.注意该方式设定ip,后面不能写24 |
ifconfig device down | 关闭 |
ifconfig device up | 开启 |
1)查看ens3设备ip:
2)关闭该设备:
3)开启该设备:
4)设定ip并查看:
与其他主机无法通信,重启、关闭、开启该连接,ip恢复为原来的ip:
注意:使用ifconfig ens3 172.25.254.100 netmask 255.255.255.0命令设定ip后,ping别的主机是不通的,使用nmcli命令reload,down,up,后,发现ip又还原了。这说明ifconfig设定ip的方式是临时的,ip还原后再ping是可以通的,所以如果使用该方式去设定ip,要保证设定的网卡是没有配置文件的,也就是说,该网卡之前没有设定过,没有被占用。这样使用ifconfig可以成功,也可以ping通,但是重启系统之后,该ip就会消失,因为是临时设定,甚至使用nmcli down掉后,ip也会消失
4.4 ip addr
命令 | 含义 |
---|---|
ip addr | 查看或设定网络接口,可以用ip addr查看ip |
ip addr show | 检测或查看ip。也可以给后面+设备名字,eg ip addr show ens3 |
ip addr add ip/24 dev device | 设定 |
ip addr del dev device ip/24 | 删除 |
1)查看ip:
查看ip:
查看某一设备ip:
2)添加ens3的ip,可以看到ens3现在有两个ip:
删除ip:
注意:
- addr的方式也可以控制网卡,eg:ip addr add 172.25.254.200/24 dev ens3,ping可以通。如果想在该网段去ping 192.168.6.100这种网段,就需要在一块网卡上设定多个ip,此时必须使用ip addr 命令,ifconfig命令不能使用。设定两个ip时,直接再使用addr的添加命令,再设定一个ip即可,也可以ping通,代表一台主机可以有两个ip。想更改ip时,可以先把该ip删掉然后再更该
- ip addr 和ifconfig的设定都是暂时的
- device的名字一个物理事实,看到什么名字只能用什么名字
5 图形方式设定ip
5.1 nm-connection-editor
1)查看node2的ip:
输入nm-connection-editor命令查看网络连接:
修改ip:
注意:配置网络时,之所以选Manual手动配置,而不选自动配置,是因为自动配置需要一个dhcp服务器,该服务没有开启时,选手动配置。
2)修改完成后查看ip,未发生改变,这是因为网卡已经处于工作状态了:
重新加载,发现ip并未更改i成功,这是因为对应的网卡没有重启:
关闭链接,再开启链接,发现ip更改成功:
注意:
- 不建议用服务控制网络,即systemctl restart NetworkManager,无论使用图形,还是用nmcli命令修改ip,都需要在系统中启用一个服务,该服务为NetworkManager,这是用来管理网络的服务,该服务的基本功能是记录网络的工作状态。如果该服务是关闭的,那么nmcli connection show就会什都不显示;同样的,使用nm-connection-editor命令打开的网络连接窗口也显示的是空白,这表示图形的方法不能用了,而不是说他不存在。
- 企业七之前是没有该服务的,企业七之后才有,之前是用 /etc/init.d/network restart
查看NetworkManager服务状态:
5.2 nmtui
当为无图形模式时,想要更改网络ip,需要使用nmtui命令。
1)输入该命令,然后回车:
2)出现一个框,此时无法使用鼠标,需要使用上下建和tab建去选,选择edit a connection 编辑一个网络,其他步骤同图形下的ip修改:
3)注意在选Device时,可以ifconfig查看一下,有什么设备就输入什么设备,这里是没法自己选的,但是在图形里是自己选的;选ipv4里的Manual,然后点击show,添加ip即可:
4)查看ip,并未修改成功:
关闭重启连接后,查看ip,修改成功:
6 命令方式设定网络
上面的网络设定工具设定ip是暂时的,想要用命令的方式永久设置ip,需要用nmcli命令
命令 | 含义 |
---|---|
nmcli | NetworkManager必须开启 |
nmcli device connect 设备名 | 启用该网卡 |
nmcli device disconnect 设备名 | 关闭该网卡 |
nmcli device show 设备名 | 查看网卡信息 |
nmcli device status 设备名 | 查看网卡服务接口信息 |
nmcli connection show | 查看连接 |
nmcli connection down connection-name | 关闭连接 |
nmcli connection up connection-name | 开启连接 |
nmcli connection delete connection-name | 删除连接 |
nmcli connection add type ethernet con-name lhy ifname ens3 ip4 172.25.254.100/24 | 添加连接 |
nmcli connection modify lhy ipv4.addresses 172.25.254.200/24 | 更改 |
1)查看nmcli命令的内容:
查看nmcli device命令的内容:
查看nmcli device show命令的内容:
查看设备状态:
2)关闭网卡:
开启网卡:
3)查看连接:
删除连接:
添加连接:
关闭、重启连接:
7 管理网络配置文件
7.1 静态网络设定
网络配置目录:/etc/sysconfig/network-scripts/,之前使用图形或命令的形式修改ip,本质上都是在该文件中修改
网络配置参数 | 含义 |
---|---|
ifcfg-xxxx | vim ifcfg-xxx,前面的ifcfg是固定格式,后面的名字相当于图形里面的conection-name。 |
DEVICE=xxx | 设备名称/网卡名称 |
BOOTPROTO=dhcp/static/none | 设备工作方式。如果这里写的是none,表示网卡工作模式是手动指定ip的方式;static也是手动指定ip;dhcp表示自动获取ip的模式 |
ONBOOT=yes | 网络服务开启时自动激活网卡 |
IPADDR= | IP地址。想设置多个ip时,可以使用 ipaddr0= ,ipaddr1= |
PREFIX=24 | 子网掩码 |
NETMASK=255.255.255.0 | 子网掩码。这个和上面这两种方式都可以表示子网掩玛,当设置两个ip时,也要写两个子网掩玛,即使使用的分别是上下这两种,也要分别给后面加上0和1。 |
NAME= | 接口名称 |
1)编辑ifcfg-lhy文件,注意如果进入网络配置目录下,将里面的文件删除,但实际上它在系统中还是存在的,需要使用 nmcli connection reload即可:
输入内容如下:
查看ip:
2)再次编辑该文件,设定两个ip、两个子网掩玛和connection-name:
重新加载、关闭、开启连接,显示有两个ip:
3)当记不住这些配置参数时,可以进入 /usr/share/doc/initscripts目录,ls 查看里面有一个sysconfig.txt文件 ,less sysconfig.txt,里面使用关键字可以找到参数用法:
7.2 dhcp网络设定
网络配置目录:vim /etc/sysconfig/network-scripts/ifcfg-ens3
1)进入该配置目录下的,vim ifcfg-lhy文件,进行配置:
查看设定,并没有生效:
进行up开启连接时,报错,这是因为dhcp获取ip是从dhcp服务器处获得的,所以需要手动搭建一个dhcp服务器,具体搭建过程见下面第12节:
8 lo回环接口
输入ifconfig 出现的 ‘lo’就是回环接口,其ip都是127.0.0.1,其主要作用是,负责本机的服务和服务之间的沟通。一般情况不做该接口设定,因为一旦设定,很多服务就无法再运行。
9 网关
- 不在同一个区域的网络如何通信。数据传输是以跳来传输的,每一跳,叫做一个数据包,数据包里面有包头,描述数据从哪来到哪去,用的什么协议,访问什么端口等。两台不同网段的主机要通信,需要通过NAT(网络地址转化),相当于把数据源头的地址转换为目的地可以识别的地址去访问目的地(也就是把原数据包,转化为目的主机可识别的数据包)。进行转化的主机就是路由器,路由器上负责接受目的地来源的地址,也就是路由器上和本机ip处于同一网段的ip,就叫做网关。其作用就是负责接受本机的数据请求,然后进行NAT,网络地址转化,从而连接到想连接的主机。在家里,无线网卡就是负责接受数据的,有限网卡插的网线就是发送数据出去的。
- 假设真实主机是一台路由器,真机的网卡ip 是172.25.254.36。现在想让虚拟机可以上网,也就是虚拟机的ip和真机的ip处于同一个网段,虚拟机的网关与真机ip相同。真机连着路由器,去ping百度是可以的,但是虚拟机ping百度是不行的,这是因为没有设置虚拟机的网关,没法转化上网请求,所以要把虚拟机网关设置成真机的ip。上网的过程就是,虚拟机的ip可以和真机ip互通,真机连着路由器,可以通过路由器的ip将虚拟机的信息传送出去。
- route -n可以查看网关,进入后可以看到getway的下面都是零,表示没有网关;添加网关ip route add default via 网关ip;删除网关ip route del default via 网关ip;但是这种设置方式是临时的,当reload、down、up后,就会消失,想要永久设定网关,可以使用配置文件:
9.1 把双网卡主机变成路由器
命令 | 含义 |
---|---|
systemctl start firewalld | 开启防火墙 |
firewall-cmd --list | |
firewall-cmd --permanent --add-masquerade | |
firewall-cmd --reload | 重新加载该服务 |
firewall-cmd --list-all |
1)将主机设置成路由器:
注意:masquerade: yes表示地址伪装功能开启,真实主机变成路由器
2)在全局网关配置文件处,设置虚拟机网关:
3)真机ping百度:
虚拟机ping百度ip,此时是不能ping域名的,因为没有设定DNS:
9.2 设定单网卡主机的网关
9.2.1 全局网关
配置文件:vim /etc/sysconfig/network,全局网关,针对所有没有设定网关的网卡生效
1)配置网关文件:
2)重启连接,查看网关:
9.2.2 指定ip的网关
配置文件:vim /etc/sysconfig/network-scripts/ifcfg-ens160
进入该文件后,假设里面的ipaddr0=172.25.254.136;ipaddr1=172.25.254.6;那么设定网关是就要gateway0= ;gateway1=
1)在改配置文件中添加网关:
2)重启连接,查看网关:
3)删除网关:
10 设定DNS
- domain name server :域名解析服务,把域名变成IP
- 系统操作者对字符敏感
- 系统网络通信需要通过ip地址这个数字,当操作着输入网址www.baidu.com,这个网址不是一个可以通信的IP地址,于是必须要在系统中把www.baidu.com变成百度服务器的IP地址,这样的过程叫做地址解析
10.1 本地解析文件
- 配置文件:vim /etc/hosts
- 里面直接输入ip和它对应的域名即可,但是当你不知道某个想访问地址的ip时,就没办法在这个文件里写对应的域名和ip
编辑/etc/hosts文件,输入百度的ip和其对应的域名:
ping百度的域名:
10.2 DNS的指向文件
- 配置文件:vim /etc/resolv.conf
- DNS的指向文件,不需要重新启动网络立即生效,当需要某个域名的IP地址时,进入该文件,输入 nameserver 114.114.114.114即可
- 114.114.114.114是智能DNS
1)指定从哪里获得DNS:
ping其他网站的域名:
2)dig+域名可以查看该DNS服务是谁提供的:
10.3 网络文件
- 配置文件:vim /etc/sysconfig/network-scripts/ifcfg-xxxx
- 文件中写的内容:DNS1=114.114.114.114。注意DNS后面的1一定要写,该文件里可以写并且只有DNS1和DNS2,写完后reload、down、up即可
- 需要重启网络,当网络重新启动,此参数会修改/etc/resolv.conf文件里面的nameserver
- 当网络工作模式为dhcp时,系统会自动获得ip、 网关、 DNS,那么/etc/resolv.conf会被获得到的信息修改。如果不需要获得dns信息,在网卡配置文件中加入PEERDNS=no即可。
编辑网络配置文件:
在后面指定从该ip获取DNS解析:
重启连接,查看dns指向文件,发现其nameserver变为114.114.114.114:
11 设定DNS解析的优先级
- 系统默认:/etc/hosts > /etc/resolv.conf
- vim /etc/nsswitch.conf:可以指定优先级的文件,在第86行有个hosts,后面默认是先files(/etc/hosts),后dns(/etc/resolv.conf),可以修改它的顺序,即改即生效。但一般不改,因为本地响应速度更块
编辑/etc/nsswitch.conf文件:
文件中hostos后默认的优先级:
修改优先级:
测试:
12 dhcp服务配置
12.1 软件包安装
1)在node2中搭建dhcp服务器,需要有一个安装包,该安装包可以从镜像文件中获取,可以进入真机的超级用户身份,找到镜像文件然后右击,点击 Open With Disk Image Mounter,就会出现一个页面,这相当于已经挂载成功,可以在其所在的目录下df查看是否挂载:
2)进入/run/media/kiosk/RHEL-8-2-0-BaseOS-x86_64,查看软件包的位置:
3)在真机上使用scp将该软件包传输到node2的/mnt下,scp dhcp-server-4.3.6-40.el8.x86_64.rpm root@172.25.254.236:/mnt
进入node2,查看:
在node2上,安全安装, rpm -ivh /mnt/dhcp-server-4.3.6-40.el8.x86_64.rpm:
12.2 dhcp服务的搭建
1)在node2上进行配置,dhcp服务的主配置文件是 /etc/dhcp/dhcpd.conf,可以cat进入查看,发现该文件是空的:
2)它里面提示,可以查看模板,所以可以直接把模板内容复制到配置文件中,因为模板文件中参数都有,也就是利用模板生成配置文件:
3)vim /etc/dhcp/dhcpd.conf,删除不需要的。从36行之后,都不需要,27、28行不要。删除完后,可以进行配置,第7行有个公司域名,可以先自己写;第八行写的是dns的地址;后面第30行,subnet是网段,需要看真机的网段是多少;netmask,子网掩玛;把32行内容注释起来;31行是分配地址的范围:
4)写好配置文件后,systemctl enable --now dhcpd ,再systemctl status dhcpd
查看服务状态:
5)回到node1,重新up,看到自动被分配到了ip:
6)在node2中查看,它分配给了那块网卡是有记录的,可以在node2中 less /var/lib/dhcpd/dhcpd.leases 查看,因为该文件中记录了ip是如何分配的,可以看到分配给了node1地址:
注意:若有很多台主机上都有dhcp服务,并不是谁给分配ip都接受,可以拔掉网线,就是本机内部自行分配。