一、NetworkManager服务:

NetworkManager - Linux Networking made Easy

NetworkManager简介:NetworkManager由一个管理系统网络连接、并且将其状态通过D-BUS(是一个提供简单的应用程序 互相通讯的途径的自由软件项目,它是做为freedesktoporg项目的一部分来开发的。)进行报告的后台服务,以及一个允许用户管理网络连接的客户 端程序。

NetworkManager的优点:简化网络连接的工作,让桌面本身和其他应用程序能感知网络。

nmcli 命令中的 nm 是 NetworkManager 的缩写

所以,从字面上理解, nmcli 是 NetworkManager 的客户端命令,所以使用nmcli指令,请确保NetworkManager服务开启

nmcli 是 NetworkManager 的命令行控制器,下面来看看nmcli如何使用

NetworkManger-nmcli - 图1

  1. nmcli dev status

NetworkManger-nmcli - 图2

  1. nmcli con show

NetworkManger-nmcli - 图3

1.添加一个静态ip

  1. nmcli connection add con-name lei type ethernet ifname eth0 ip4 172.25.254.156/24

NetworkManger-nmcli - 图4

  1. nmcli con show

NetworkManger-nmcli - 图5

2.添加一个动态ip

  1. nmcli connection add con-name lei type ethernet ifname eth0 autoconnect yes

NetworkManger-nmcli - 图6

3.更改网络

  1. nmcli con up <NAME> #激活一个连接,也可以重启指定网卡
  2. nmcli con down <NAME> #取消该连接,如果是自动连接的网络会重新连接

4.将静态网络改为动态网络

  1. nmcli connection modify lei ipv4.method auto

NetworkManger-nmcli - 图7

5.将动态网络改为静态网络

  1. nmcli connection modify lei ipv4.addresses 172.25.254.156

NetworkManger-nmcli - 图8

6.删除网络

  1. nmcli con del lei

NetworkManger-nmcli - 图9

二、dns

DNS(Domain Name System,域名系统),万维网上作为域名和IP地址相互映射的一个分布式数据库,能够使用户更方便的访问互联网,而不用去记住能够被机器直接读取的IP数串。通过域名,最终得到该域名对应的IP地址的过程叫做域名解析(或主机名解析)。DNS协议运行在UDP协议之上,使用端口号53。在RFC文档中RFC 2181对DNS有规范说明,RFC 2136对DNS的动态更新进行说明,RFC 2308对DNS查询的反向缓存进行说明。

修改dns

  1. #查看网络连接
  2. nmcli con show
  3. NAME UUID TYPE DEVICE
  4. System eth0 xx-xx-xx-xx ethernet eth0
  5. System eth1 xx-xx-xx-xx ethernet --
  6. System eth2 xx-xx-xx-xx ethernet --
  7. System eth3 xx-xx-xx-xx ethernet --
  8. System eth4 xx-xx-xx-xx ethernet --
  9. # 修改dns地址
  10. nmcli con modify "<NAME>(e.g. System eth0)" ipv4.dns "<需要修改的DNS地址,多个用空格分隔>"
  11. # 重启连接,生效配置
  12. nmcli con modify up "<NAME>"

1.通过修改hosts的方式

之前的单跳路由实验中,不可以ping网址,现在在虚拟机编辑/etc/hosts文件中添加ip 域名,然后在ping的时候就可以直接输入域名了,前提是你已经设置好了单跳路由,把真机当作路由器

  1. vim /etc/hosts

NetworkManger-nmcli - 图10

然后在ping百度,就可以了

NetworkManger-nmcli - 图11

2.修改配置文件

在DNS指向文件/etc/resolv.conf文件中添加知道域名解析的nameserver

eg:在DNS指向文件那种添加nameserver 114.114.114.114

  1. nameserver 114.114.114.114

NetworkManger-nmcli - 图12

就可以ping通网上的网站了

NetworkManger-nmcli - 图13

注意:在动态网络下,添加是临时的;在静态网络下不是临时的

3.dns解析优先顺序

/etc/nsswitch.com 文件确定DNS解析的优先级顺序

我现在在hosts文件中添加csdn的域名47.95.164.112,而在dns中设置的dnsserver是114的,那么默认情况下是通过那个服务来ping通csdn网站呢,默认是走的hosts的文件,因为默认是本地的优先级高,那么如何使用dnsserver这个服务呢

  1. vim /etc/nsswitch.com

如图,第39行的file改成dns即可

NetworkManger-nmcli - 图14

在使用ping命令的时候走的就是dnsserver服务了

三、实验

1.动态分配网络时候的dns设定

当网络设置为dhcp(如何设置请看我linux中的网络配置那篇文章)的时候,ip,子网掩码以及网关等都是自动分配的,在这种情况下,会自动的分配一个dns

NetworkManger-nmcli - 图15

如果我不想用这个dns,然后我自己在配置文件中添加一个dns服务器的ip,在系统重启后,这个dns服务器会消失不见

那么如何才能使用我自己设定的dns服务器呢

  1. vim /etc/sysconfig/network-scripts/ifcfg-eth0

将第13行的PEERDNS改为no

NetworkManger-nmcli - 图16

dns就不会自动分配,然后就可以在dns的配置文件中添加我们想要使用的dns,在ping的时候就使用自己设定的dns了

2.静态设置dns

静态网络下,在/etc/resolv.conf文件中添加的nameserver 重启网络不会消失

若在网络设置中添加DNS,则这个DNS会覆盖掉/etc/resolv.conf文件中的手动设置的一个nameserver

注意:只是覆盖掉,不是丢失

若用PEERDNS=no,则会不显示网络中设定的DNS,手动添加的nameserver重新显示出来。