Centos7 NAT网络连接方式以及NetworkManger进行网络连接管理

自结:NetworkManager管理指定配置文件配置的网络接口,根据接口配置定义网络环境。/etc/sysconfig/network-scripts/ifcfg-ens88 中定义nm_controlled=yes那么此配置文件就被networkmanager管理了。

问题产生背景

     调试虚拟机的网络问题(CentOS 7系统),习惯性直接改/etc/sysconfig/network-scripts/ifcfg-xxx配置文件,但是不知道为什么重启network后静态ip没有生效。然后百度了一下,CentOS 7使用NetworkManager来管理网络配置,就顺便接触了下网络管理命令行工具NetworkManager command line tool,也叫nmcli。


NAT模式

1、同样,先设置虚拟机的网络适配器为NAT模式

2、修改VMware的“虚拟网络编辑器”:点编辑 --> 虚拟网络编辑器:打开之后首先点击NAT模式,然后去掉下面DHCP的勾,然后点击NAT设置:

 

       NAT默认设置了110网段,这个可以修改,修改的话要统一修改不要落下。没有特殊需求就不要修改了。打开NAT设置面板之后,记住下面红框中这个IP:

3、设置完成后,启动虚拟机,修改第一个配置文件,这次要按照NAT设置中的IP进行配置:

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eth0

按如下改动:
DEVICE=eth0
BOOTPROTO=static
HWADDR=00:0C:29:17:01:FC
ONBOOT=yes
TYPE=Ethernet
NM_CONTROLLED=no 表示该接口将通过该配置文件进行设置,而不是通过网络管理器NerworkManager进行管理。
IPADDR=192.168.110.128 #网段限制在110所以IP地址变了
NETMASK=255.255.255.0
GATEWAY=192.168.110.2 #按照NAT设置中的网关地址设置
BROADCAST=192.168.110.255
DNS1=192.168.110.2
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
参数详解:
1. 配置参数说明

注:这些参数值不区分大小写,不区分单引号和双引号,甚至可以不用引号。

TYPE:配置文件接口类型。在/etc/sysconfig/network-scripts/目录有多种网络配置文件,有
    Ethernet、IPsec等类型,网络接口类型为Ethernet。

DEVICE:网络接口名称

BOOTPROTO:网卡获取ip地址方式:none dhcp static,dhcp表示动态分配ip;none或者static则为静态固定ip


ONBOOT:系统启动时是否激活

    yes:系统启动时激活该网络接口

    no:系统启动时不激活该网络接口
UUID含义是通用唯一识别码 (Universally Unique Identifier),在此可以忽略

IPADDR:IP地址

NETMASK:子网掩码

GATEWAY:网关地址

BROADCAST:广播地址

HWADDR/MACADDR:MAC地址。只需设置其中一个,同时设置时不能相互冲突。

PEERDNS:是否指定DNS。如果使用DHCP协议,默认为yes。

    yes:如果DNS设置,修改/etc/resolv.conf中的DNS

    no:不修改/etc/resolv.conf中的DNS

DNS{1, 2}:DNS地址。当PEERDNS为yes时会被写入/etc/resolv.conf中。DNS可以设置多个,在DNS后面加数字依次排序,

NM_CONTROLLED:是否由Network Manager控制该网络接口。修改保存后立即生效,无需重启。被其坑过几次,建议一般设为no。

    yes:由Network Manager控制

    no:不由Network Manager控制

USERCTL:用户权限控制

    yes:非root用户允许控制该网络接口

    no:非root用户不运行控制该网络接口

IPV6INIT:是否执行IPv6

    yes:支持IPv6

    no:不支持IPv6

IPV6ADDR:IPv6地址/前缀长度

4、修改第二个配置文件:

[root@localhost ~]# vim /etc/sysconfig/network

按如下改动:
NETWORKING=yes 配置网卡是否启动
NETWORKING_IPV6=no
HOSTNAME=localhost.localdomain
GATEWAY=192.168.110.2 这个配置成虚拟机的网关

5、修改完毕之后重启网络服务:

[root@localhost ~]# service network restart


Centos 7 网络配置文件


  一.  /etc/sysconfig/network    
       全局设置,默认里面啥也没有,可以配置主机名、全局默认网关以及网卡是否启动。如果连接配置文件ifcfg-xxx也配置了网关,会覆盖全局默认网关。如果没有配置,那么使用全局默认网关
      修改主机名:
           vi /etc/sysconfig/network 修改HOSTNAME(永久改)
           hostname 主机名 命令修改(临时改)

二. resolv.conf 文件说明

  • resolv.conf是resolver类库使用的配置文件,每当一个程序需要通过域名来访问internet上面的其它主机时,需要利用该类库将域名转换成对应的IP,然后才可进行访问
  • 修改vi /etc/resolv.conf 是临时更改DNS,网络重启后就被清空了或者覆盖。会根据配置文件中配置的DNS1和网关后自动修改这个文件。
  •    此档案可用来设定 DNS 用戶端要求名称解析时,所定义的各项內容。我们分別来看一个完整的resolv.conf的档案:
  •   修改DNS。就是编辑 etc/resolv文件或者网卡配置文件,前者是临时更改,后者是永久更改,永久更改后需要重启网卡生效,临时更改不用。
domain twnic.com.tw
nameserver 192.168.10.1
nameserver 192.168.2.5
search twnic.com.tw twnic.net.tw
  1. “domain”指定本地的网域名称,如果查询时的名称沒有包含小数点,则会自动补上此处的网域名称做为域名的结尾,再送给DNS服务器。
  2. “nameserver”指定用戶端要求进行名称解析的 nameserver IP位址,在此可指定多部DNS伺服器,则用戶端将会依序提出查询要求。
  3. “search”这个选项为非必要选项,而功能在于若使用者指定主机名称查询时,所需要搜寻的网域名称。例如,当我们设 “search twnic.com.tw”时,当DNS伺服器在做名称解析过程中,无法对输入的名称,例如pc1,找出相对应的IP时,则DNS会利用search的设定值加上需查询的名称,即pc1.twnic.com.tw来进行解析,解析失败时则会尝试pc1.twnic.net.tw。
  4. 需要注意的是当我们想尝试多种在沒有包含小数点,于字尾补上所需要搜寻的网域名称时,我们会在"search"中指定几种组合给DNS伺服器,而不能在"domain"中指定。因为“domain”是指定本地的网域名称,而搜寻时也以“domain”为优先尝试,如果失败之后才会尝试"search"中的组合。

    三、其他配置文件

         /etc/sysconfig/network-scripts/       连接配置信息 ifcfg 文件,配置ip地址、网关、DNS
        /etc/NetworkManager/system-connections/  VPN、移动宽带、PPPoE连接


NetworkManager解释


 一、NetworkManager启用及其作用
       启用NetworkManager管理指定网络接口,只需要在配置文件 /etc/sysconfig/network-scripts/ifcfg-ethX中加入如下配

NM_CONTROLLED=yes


       NetworkManager服务管理网络方便在哪?
       很重要的一点是:一个设备可以对应多个配置文件,但是同一时间只能有一个配置文件生效,这对于频率切换网络环境是非常方便的,不用再跑那个目录下去改配置 文件。比如:原先网卡接的是10.1.0.0/24网络,有时候为了测试,临时改到192.168.1.0/24网络去,测试完后又改回来 10.1.0.0/24,在NetworkManager的管理里面,只要把这两个网络环境下的配置写好,以后就只要一条命令就可以完成切换了!这就是 NetworkManager带来的便捷之处!

二、nmcli和其他网络设置

      在CentOS7中默认使用NetworkManager守护进程来监控和管理网络设置。nmcli是NetworkManager的命令行工具,会自动把nmcli所做的配置写到/etc/sysconfig/network-scripts/目录下面。

常用命令
查看网络接口信息
    # 简单信息
        nmcli device status
    # 详细的接口信息
        nmcli device show
    # 接口的详细信息
        nmcli device show interface-name

查看连接(connection)的信息
    # 简单信息
        nmcli connection show
    # 详细的连接信息
        nmcli connection show
    # 某个连接的详细信息
        nmcli connection show connection-name

启动和停止接口
    nmcli connection down connection-name
    nmcli connection up connection-name
    nmcli device disconnect interface-name
    nmcli device connect interface-name
    建议使用 nmcli dev disconnect interface-name 命令,而不是 nmcli con down connection-name 命令,因为连接断开可将该接口放到“手动”模式,这样做用户让 NetworkManager 启动某个连接前,或发生外部事件(比如载波变化、休眠或睡眠)前,不会启动任何自动连接。

创建连接
    nmcli connection add type ethernet con-name connection-name ifname interface-name
    nmcli connection add type ethernet con-name connection-name ifname interface-name ip4 address gw4 address
    
    ## e.g. 创建一个基于eth1接口的连接
    # 创建动态连接,即BOOTPROTO默认为DHCP
    [root@localhost ~]# nmcli c add type eth con-name dynamic-eth1 ifname eth1
    Connection 'dynamic-eth1' (9c0ad8a9-21f6-40b5-9313-e5c7e4b356f1) successfully added.
    # 创建静态连接
    [root@localhost ~]# nmcli connection add type eth con-name static-eth1 ifname eth1 ip4 172.16.60.10/24
    # nmcli connection add type eth con-name static-eth1 ifname eth1 ip4 172.16.60.10/24 gw4 192.168.60.1
    Connection 'static-eth1' (0640bf7f-9490-44a8-be96-2e710fb650e6) successfully added.
    创建连接后,NetworkManager 自动将 connection.autoconnect 设定为 yes。还会将设置保存到 /etc/sysconfig/network-scripts/ connection-name 文件中,且自动将 ONBOOT 参数设定为 yes。


激活连接
    nmcli connection up connection-name

    ## e.g. 激活eth1接口的static-eth1连接
    [root@localhost ~]# nmcli c up static-eth1
    Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)

nmcli命令修改所对应的文件条目
    nmcli con mod           ifcfg-* 文件
    ipv4.method manual       BOOTPROTO=none
    ipv4.method auto         BOOTPROTO=dhcp
    connection.id eth0        NAME=eth0
    (ipv4.addresses          IPADDR0=192.0.2.1
    “192.0.2.1/24           PREFIX0=24
    192.0.2.254”)           GATEWAY0=192.0.2.254
    ipv4.dns 8.8.8.8        DNS0=8.8.8.8
    pv4.dns-search example.com   DOMAIN=example.com
    pv4.ignore-auto-dns true    PEERDNS=no
    connection.autoconnect yes   ONBOOT=yes
    connection.interface-name eth0 DEVICE=eth0
    802-3-ethernet.mac-address... HWADDR=...
[root@centos7 ~]# nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }

OPTIONS
  -t[erse]                                   terse output
  -p[retty]                                  pretty output
  -m[ode] tabular|multiline                  output mode
  -f[ields] <field1,field2,...>|all|common   specify fields to output
  -e[scape] yes|no                           escape columns separators in values
  -n[ocheck]                                 don't check nmcli and NetworkManager versions
  -a[sk]                                     ask for missing parameters
  -w[ait] <seconds>                          set timeout waiting for finishing operations
  -v[ersion]                                 show program version
  -h[elp]                                    print this help

OBJECT
  g[eneral]       NetworkManager's general status and operations
  n[etworking]    overall networking control
  r[adio]         NetworkManager radio switches
  c[onnection]    NetworkManager's connections
  d[evice]        devices managed by NetworkManager

       OBJECT和COMMAND可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。OBJECT里面我们平时用的最多的就是connection和device,这里需要简单区分一下connection和device。

  • device叫网络接口,是物理设备
  •   connection是连接,偏重于逻辑设置
  •  多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。
  •    这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应的connection。

 新添加的网卡NetworkManager自动识别。比如新添加网卡enp0s8

[root@centos7 ~]# nmcli con show
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  enp0s8
enp0s3              295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3 

  “Wired connection 1”是新增的网络连接,对应的网络接口叫enp0s8;
  “enp0s3”是最初的网络连接,默认与网络接口同名。


看看设备:

[root@centos7 ~]# nmcli dev show enp0s3
GENERAL.DEVICE:                         enp0s3
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:15:35:D2
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     eth0
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/4
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         ip = 192.168.150.110/24, gw = 192.168.150.254
IP4.DNS[1]:                             192.168.150.254
IP6.ADDRESS[1]:                         ip = fe80::a00:27ff:fe15:35d2/64, gw = ::
[root@centos7 ~]#
[root@centos7 ~]# nmcli dev show enp0s8
GENERAL.DEVICE:                         enp0s8
GENERAL.TYPE:                           ethernet
GENERAL.HWADDR:                         08:00:27:98:D1:B7
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                     eth1
GENERAL.CON-PATH:                       /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.CARRIER:               on
IP4.ADDRESS[1]:                         ip = 10.0.3.15/24, gw = 10.0.3.2
IP4.DNS[1]:                             10.0.3.2
IP6.ADDRESS[1]:                         ip = fe80::a00:27ff:fe98:d1b7/64, gw = ::
[root@centos7 ~]# 

      需要注意的是,enp0s3设备对应的连接名改为eth0,但对应的ifcfg文件并没有改名,我们改改试试,改之前先备份原配置文件到其他目录(注意,不能备份到network-scripts目录!)。

[root@centos7 network-scripts]# cat ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=295e1841-0ff3-4db9-8800-4e25fc2944da
ONBOOT=yes
IPADDR0=192.168.150.110
PREFIX0=24
GATEWAY0=192.168.150.254
DNS1=192.168.150.254
HWADDR=08:00:27:15:35:D2
[root@centos7 network-scripts]#
[root@centos7 network-scripts]# cp ifcfg-enp0s3 /root/
[root@centos7 network-scripts]# mv ifcfg-enp0s3 ifcfg-eth0
[root@centos7 network-scripts]#
[root@centos7 network-scripts]# systemctl restart network
[root@centos7 network-scripts]# 


没有问题,配置文件改名成功,强迫症又一次胜利了,耶!
我们还可以看到,ifcfg-eth0里面没有参数指明设备enp0s3,唯一与设备enp0s3相对应的是MAC地址(HWADDR 08:00:27:15:35:D2)。

现在试试增加一个针对新网络接口enp0s8的连接,现有连接是 eth1:

[root@centos7 network-scripts]# cat ifcfg-eth1
HWADDR=08:00:27:98:D1:B7
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1
UUID=0c451785-b098-4c5c-994d-9107171b439d
ONBOOT=yes


嗯,是自动获得IP的。
我们新建一个连接eth1-1,分配固定IP。

[root@centos7 ~]# nmcli con show
NAME    UUID                                  TYPE            DEVICE
eth1-1  ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9  802-3-ethernet  --     
eth1    0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  enp0s8
eth0    295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3

只是增加了一个连接,其他的没有变化。
我们启动新连接 eth1-1

[root@centos7 ~]# nmcli con up eth1-1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
[root@centos7 ~]#
[root@centos7 ~]# nmcli con show
NAME    UUID                                  TYPE            DEVICE
eth1-1  ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9  802-3-ethernet  enp0s8
eth1    0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  --     
eth0    295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3
[root@centos7 ~]#
[root@centos7 ~]# nmcli -t -f IP4.ADDRESS dev show enp0s8
IP4.ADDRESS[1]:ip = 10.0.3.110/24, gw = 10.0.3.2


“nmcli -t -f IP4.ADDRESS dev show enp0s8” 是以脚本友好的方式显示网络接口信息。
现在可以很明显的看到,将连接eth1-1 up了之后,eth1-1占据了原来由eth1占据的DEVICE enp0s8,并且IP地址已经是指定的10.0.3.110/24 了。

[root@centos7 network-scripts]# cat ifcfg-eth1-1
TYPE=Ethernet
BOOTPROTO=none
IPADDR0=10.0.3.110
PREFIX0=24
GATEWAY0=10.0.3.2
DNS1=10.0.3.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=eth1-1
UUID=ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9
DEVICE=enp0s8
ONBOOT=yes


ifcfg-eth1-1 文件里没有HWADDR参数,但是多了一个DEVICE参数,等于enp0s8,你可以对比一下 ifcfg-eth1 看看区别在哪。
连接的配置文件 ifcfg-*,可以用 DEVICE 指定设备名,也可以用HWADDR指定设备的MAC地址,最终结果都一样的指向某个设备(网络接口)。我们再试试用nmcli增加连接:

[root@centos7 ~]# nmcli con add con-name eth1-2 ifname enp0s8 type ethernet ip4 10.0.3.120/24 gw4 10.0.3.2
Connection 'eth1-2' (468815f5-ce97-43bd-904a-3078e2e59fec) successfully added.
[root@centos7 ~]#
[root@centos7 ~]# nmcli con show
NAME    UUID                                  TYPE            DEVICE
eth1-1  ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9  802-3-ethernet  enp0s8
eth1    0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  --     
eth0    295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3
eth1-2  468815f5-ce97-43bd-904a-3078e2e59fec  802-3-ethernet  --     
[root@centos7 ~]#
[root@centos7 ~]# nmcli con up eth1-2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@centos7 ~]#
[root@centos7 ~]# nmcli con show
NAME    UUID                                  TYPE            DEVICE
eth1-1  ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9  802-3-ethernet  --     
eth1    0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  --     
eth0    295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3
eth1-2  468815f5-ce97-43bd-904a-3078e2e59fec  802-3-ethernet  enp0s8
[root@centos7 ~]#
[root@centos7 ~]# nmcli -t -f IP4.ADDRESS dev show enp0s8
IP4.ADDRESS[1]:ip = 10.0.3.120/24, gw = 10.0.3.2
[root@centos7 ~]# 


再看看新的ifcfg文件:

[root@centos7 network-scripts]# cat ifcfg-eth1-2
TYPE=Ethernet
BOOTPROTO=none
IPADDR0=10.0.3.120
PREFIX0=24
GATEWAY0=10.0.3.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1-2
UUID=468815f5-ce97-43bd-904a-3078e2e59fec
DEVICE=enp0s8
ONBOOT=yes
[root@centos7 network-scripts]# 


现在up的连接是eth1-2,网络接口enp0s8的IP是10.0.3.120
如果重新up连接eth1-1,nmcli con up eth1-1,网络接口enp0s8的IP变成了10.0.3.110
如果重新up连接eth1,  nmcli con up eth1,  网络接口enp0s8的IP就回到原来自动获得的值10.0.3.15

所以,对一个网络接口设置不同的连接,可以快速的切换不同的网络配置,这个真的满厉害的。如果希望系统重启后仅up某个特定连接,那么可以把其他连接配置文件的ONBOOT=no,ONBOOT=no的连接也可以随时up。


常见错误

  1. unkonw the name or the server这种提示的话一般都是DNS配置的有问题。
  2. destination not unreachable,这种错误的话一般都是你的ifcfg-eth0里面的GATEWAY或者IPDDR配置的不对。
  3. 虚拟机ip冲突。因为Vamware NAT方式主机网卡采用的Vmware network adapter net8,所以这个net8的ip也要和你虚拟机的IPADDR、GATWAY都不一样,也是在192.168.137.1~192.168.137.255中间取值。此时如果冲突,可以查看宿主机vmnet8IP地址是否和虚拟机相同
  4. 在开启网络时,有错误提示:Restarting network (via systemctl):  Job for network.service failed. See 'systemctl status network.service' and 'journalctl -xn' for details.
 1.根据提示执行:  systemctl status network.service   

  提示错误日志:15:30:10 localhost.localdomain systemd[1]: Failed to start LSB: Bring up/down networking.
2.用  ip  addr  命令查看MAC地址( 此行 link/ether 00:5c:33:2e:dd:10)  与文件  /etc/sysconfig/network-scripts/ifcfg-*  中显示的(此行 HWADDR=00:e3:21:3d:5d:ee)  时行对比时发现不一致。
3.注释掉  /etc/sysconfig/netwrok-scripts/ifcfg-* 中  HWADDR= * :*:*:*:*:* 此行
4. 在下面更改为   HWADDR=00:5C:33:2E:DD:10   (也就是用IP ADDR 命令所查到的MAC)
ip addr(图中标记的就是ip地址)命令输出中没有inet选项


   (1) 如果上边一栏中没有inet,那么输入:systemctl  status NetworkManager.service(验证网络管理服务状态)

 
    (2)检查受网络管理器管理的网络接口:(输入:nmcli dev status)(如果某个接口的nmcli的输出结果是“已断开”,说明该接口不受网络管理器管理,网络也是没有生效的,反之,则生效了)
 
(3)解决步骤:
service NetworkManager stop
service Network  restart
service  NetworkManager  start
解释:关闭NetworkManager(service NetworkManagerstop),重启network(service network restart),再启动NetworkManager
NetworkManager(service NetworkManager start)因为NetworkManager会对network重启造成影响,所以先关闭它,最后这服务不启动也有影响,所以最后在启动它


(4)虚拟机网络启用后,输入:nmcli dev status,显示:(说明已经连接)

知识补充:
      Linux 设备分为三类:字符设备(如键盘、鼠标等)、块设备(如硬盘、光驱、软驱等)和网络设备,如以太网卡。为了屏蔽网络环境中物理网络设备的多样性,LINUX对所有的物理设备进行抽象并定义了一个统一的概念,称之为接口(Interface),接口实际是运行于Linux内核一种设备服务程序,所有的硬件厂商按照同一规格编写,从而提供了一个对所有类型的硬件一致化的操作集合来处理基本数据的发送和接收。一个网络接口可以被看作是一个发送和接收数据包(packets)的实体。内核在启动时,通过网络驱动程序,检索系统的固件信息,将网络设备在Linux系统的中登记。这样网络设备在做数据包发送和接收时,可以通过接口实现linux 利用网络设备于外界的交互。接口可以在内核初始化时进行,也可以通过insmod命令来加载。
      根据标准,每一个具体的网络接口都应该有一个名字,以在系统中能唯一标识一个网络接口。常见的网络接口名如下:
      Linux 存在很多的网络管理命令,通常我们使用的是network 服务, NetworkManager 服务, ipconfig命令, ip 命令 和 netstat 命令,ss命令等。


 

猜你喜欢

转载自blog.csdn.net/qq_22310551/article/details/85380756