网络配置
前言
本章介绍了各种Linux网络配置的方法,从图形化到命令行,简单易懂易上手。
预备知识
IP
- 什么是IP?
互联网协议地址(英语:Internet Protocol Address,又译为网际协议地址),缩写为IP地址(英语:IP Address),是分配给用户上网使用的网际协议(英语:Internet Protocol, IP)的设备的数字标签。常见的IP地址分为IPv4与IPv6两大类。所谓IP地址就是给每个连接在互联网上的主机分配的一个32位地址。为了方便记忆,我们将IP用十进制表示,中间使用“.”分隔不同的字节,这种方法叫做“点分十进制表示法”。 - 地址格式:
IP地址=网络地址+主机地址 或 网络地址+子网地址+主机地址 - 举个例子:
10.0.0.1其实际地址是:00001010.00000000.00000000.00000001
255.255.255.255实际地址是:11111110.11111110.11111110.11111110
子网掩码
- 什么是子网掩码?
百度百科定义:子网掩码(subnet mask)又叫网络掩码、地址掩码、子网络遮罩,它是一种用来指明一个IP地址的哪些位标识的是主机所在的子网,以及哪些位标识的是主机的位掩码。子网掩码不能单独存在,它必须结合IP地址一起使用。子网掩码只有一个作用,就是将某个IP地址划分成网络地址和主机地址两部分。
子网掩码是一个32位地址,用于屏蔽IP地址的一部分以区别网络标识和主机标识,并说明该IP地址是在局域网上,还是在远程网上。 - 表示方法:子网掩码的非零位表示的就是对应IP位置的数字表示的是这个IP的网络位。网络位表示某个网络区域,主机位表示这片网络区域的某个主机。
IP子网划分
我们先了解一下3类常用的IP:
(默认分配的子网掩码每段只有255和0)
A类IP段
- 1.0.0.0到126.255.255.255(0段和127段不使用)
- A类的默认子网掩码 255.0.0.0 一个子网最多可以容纳2^24=1658万多台电脑
B类IP
- 128.0.0.0到191.255.255.255
- B类的默认子网掩码 255.255.0.0 一个子网最多可以容纳2^16=6万台电脑
C类IP
- 192.0.0.0到223.255.255.254
- C类的默认子网掩码 255.255.255.0 一个子网最多可以容纳2^8=254台电脑(要除去两个IP,是不能用的,那就是最后一段不能为0和255,减去这两台,就是254台)
- 更详细的内容可以点击这里查看子网划分的细致内容:IP子网划分
网关GATEWAY
- 网关实质上是一个网络通向其他网络的IP地址。
比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的,即使是两个网络连接在同一台交换机(或集线器)上,TCP/IP协议也会根据子网掩码(255.255.255.0)判定两个网络中的主机处在不同的网络里。而要实现这两个网络之间的通信,则必须通过网关。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。 - 详细解释:网关
路由ROUTE
- 当数据从一个子网传输到另一个子网时,可通过路由器的路由功能来完成。因此,路由器具有判断网络地址和选择IP路径的功能。
- 详细解释:路由的基本原理
DNS(域名系统)
- 域名系统(英文:DomainNameSystem,缩写:DNS)是互联网的一项服务。它作为将域名和IP地址相互映射的一个分布式数据库,能够使人更方便地访问互联网。
- 简单来说,就是讲我们想要访问的IP地址转换成了容易记忆的域名(网址)。
Linux实验部分
查看网络是否连通ping
ping -c 5 -w 4 IP地址
## -c表示次数,-w表示时间
查看网络设定的命令
- ifconfig
ifconfig ##查看或设定网络接口
临时在某一网卡上设定IP,重启网络后失效!
ifconfig device IP/24 ##临时在某一网卡上设定IP
ifconfig device down ##关闭某网卡
ifconfig device up ##开启某网卡
- ip addr (更详细)
ip addr show ##检测网络接口
- 临时在某一网卡设定IP,重启后也失效
ip addr add IP/24 dev device(具体网卡)
- 清空某一网卡上的IP信息
ip addr flush device
##清空某一网卡上的IP信息
- 删除某网卡上的IP
ip addr del dev device IP/24
注意:我以上所有命令中的device指的都是具体的网卡名称
图形化方式设定IP
nm-connection-editor(默认修改后不生效)
- 如何使其生效?
首先,停止NetworkManager这个服务,因为他会记录和保持当前的网络状态。
然后,重启网络network,再进行查询就发现生效了!
systemctl stop NetworkManager ##关闭NetworkManager服务
systemctl restart network ##重启网络
ifconfig eth0 ##再次查看生效
systemctl start NetworkManager ##开启NetworkManager服务
nmtui文本模式管理网络
类似于nm-connection-editor,不过是在shell里进行修改,而且界面比较简陋,不推荐这种修改方式
命令行设定IP
nmcli ——NetworkManager提供了命令行工具-nmcli,所以要想使用nmcli必须开启NetworkManager服务!
这么多命令,nmcli命令可以按两下Tab键进行提示
命令及参数 | 含义 |
---|---|
nmcli device status eth0 | 查看网卡服务接口信息 |
nmcli device connect eth0 | 启用eth0网卡 |
nmcli device disconnect eth0 | 关闭网卡 |
nmcli device show eth0 | 查看网卡信息 |
nmcli connection show | 查看当前连接信息 |
nmcli connection down westos | 关闭这个westos的连接 |
nmcli connection up westos | 开启连接 |
nmcli connection delete westos | 删除这个连接 |
nmcli connection add type ethernet con-name westos ifname eth0 ip4 1.1.1.1/24 | 在网卡eth0上添加一个指定信息的连接 |
nmcli connection modify westos ipv4.method auto | 修改westos连接为动态IP |
nmcli connection modify westos ipv4.method manual | 修改westos为静态IP |
nmcli connection modify westos ipv4.addresses 3.3.3.3/24 | 手动修改westos连接的具体IP地址 |
实例如下:
先使用nm-connection-editor添加一个连接:hahh
管理网络配置文件方法设定IP
这种方法也是最常用的方法
网络配置文件的目录
/etc/sysconfig/network-scripts/
目录下的文件:通常情况下以ifcfg-开头
网络配置文件命名规则
以ifcfg-westos为例:
文件内容 | 含义 |
---|---|
DEVICE=eth0 | 设备名称(网卡) |
BOOTPROTO=dhcp\static\none | 设备工作方式:dhcp动态、静态、无 |
ONBOOT=yes | 网络服务开启时自动激活网卡 |
IPADDR= | IP地址(多个IP时最好后跟一个数字) |
PREFIX=24 | 子网掩码 |
NETMASK= | 子网掩码(两种都可以) |
NAME | 连接名(或接口名) |
TYPE=Ethernet | 什么方式连接(以太网) |
记得设定完成之后重启网络才能生效!
实例:
一块网卡如何也可以配置多个接口(只有静态可以):
vim /etc/sysconfig/network-scripts/ifcfg-westos
单一接口:
多个接口:
动态网络设定:
理解路由器、网关等作用
路由器:我们上面说过,主要是做地址转换的。(多网卡)(NAT:net address transfer)
网关:路由器和主机在同一网段的IP,一般情况下是路由器的某个IP。
实验1:模拟路由器功能
- 模拟路由器功能
- 关键步骤:作为模拟路由器的主机:(1).要开启内核路由功能;(2).要开启火墙,利用其地址伪装功能
- 将服务端模拟为路由器(多个网卡,分别设置不同网段,对应于两台不在同一网段的主机)
使用virt-manager打开虚拟机管理器
打开添加双网卡的server,分别修改对应网卡的配置文件:
vim /etc/sysconfig/network-scripts/ifcfg-eth0
vim /etc/sysconfig/network-scripts/ifcfg-eth1
修改完成后记得重启网络 !
内核里有路由功能,如果不能通信是因为路由功能未打开,1是打开,0未开。
通过修改/etc/sysctl.conf修改内核路由功能:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 ##添加这一行
sysctl -p ##使其生效!
至此,我们服务端作为路由的全部工作做完!
- 2.客户端
我们客户端为了利用路由器访问主机,所以需要把网关设置为路由器的一个IP,通过路由转发我们的访问到主机。
我们有两种方法设置网关:
(1)全局网关:对所有的网卡都生效,访问外网时将所有的数据包都扔给这个网关。
(2)单网卡网关:只有该网卡访问外网是通过该网关。(注意:在网卡配置文件中写网关时若地址前有数字应该给网关前加入相同的数字)
vim /etc/sysconfig/network
vim /etc/sysconfig/network-scripts/ifcfg-mjc
实验2:虚拟机上网
- 利用刚刚学的模拟路由器我们已经可以链接主机了,主机能上网,那虚拟机desktop能不能上网呢?
直接ping 220.181.57.216(百度的IP),发现不行。 - 虽然可以通过server作为路由器ping通主机,但因为server没有设置网关,只有把主机当成一个路由器,设置主机IP为server网关,才能实现上网的功能!
域名解析
-
DNS(域名系统):因特网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问
而不用去记住能够被机器直接读取的IP。 -
DNS服务器:专门做地址解析
本地解析文件:
vim /etc/hosts ##即改即生效,优先级高,文件里没有的域名不能访问互联网
网络解析:
vim /etc/resovl.conf ##即改即生效
写入:nameserver 114.114.114.114 ##任何一个运营商出问题后都可以用这个
就可以随意上网了:
更改DNS选择优先级:
vim /etc/nsswitch.conf ##即改即生效
39行: files dns
默认是本地文件file优先,域名解析先访问hosts,如果没有再访问网络解析resolv.conf
在客户端:固定DNS
关机网络后dns的设置会还原,网络会重启
PEERDNS 在网络重启时忽略对resolv.conf的设置
PEERDNS=no 固定dns
实验:
- 将设备工作方式改为动态,操作后保存退出重启网络
vim /etc/sysconfig/network-scripts/ifcfg-westos
systemctl restart network
- 设置网络解析DNS
vim /etc/resolv.conf ##输入一个DNS的IP,退出保存
- 重启网络后查看,刚刚输入的内容被改变(系统分配了DNS的IP)
systemctl restart network
cat /etc/resolv.conf
- 使用PEERDNS=no,在网络重启时对resolv.conf的设置持久生效
vim /etc/sysconfig/network-scripts/ifcfg-westos ##写入:PEERDNS=no,退出保存
systemctl restart network ##重启网络
- 重新测试
vim /etc/resolv.conf ##输入一个DNS的IP,退出保存
- 重启网络后查看,内容没有被改变
cat /etc/resolv.conf