Linux网络配置基础篇

 

一、如何实现linux网络通信?

 

1)指定IP/NETMASK可实现本地通信;

2)指定路由(网关)可实现跨网络通信;

3)指定DNS服务器地址可实现基于主机名的通信,

DNS服务器地址(当前服务器不在线时,启用备用DNS服务器地址)

备用DNS服务器地址

第三备份DNS服务器地址


二、配置网络方式及网络接口命名

linux 网络属于内核的功能,

 

配置方式:

    静态指定:使用命令直接指定或修改配置文件

    动态分配:依赖于本地网络中有DHCP服务

 

网络接口命名方式:

  传统命名:

     以太网:ethX, [0,oo),例如eth0, eth1, ...

     PPP网络:pppX, [0,...], 例如,ppp0, ppp1, ...

    本地回环:lo

 

可预测命名方案(CentOS):

    支持多种不同的命名机制:Fireware, 拓扑结构


1) 如果FirmwareBIOS为主板上集成的设备提供的索引信息可用,则根据此索引进行命名,如eno1, eno2, ...

2) 如果FirmwareBIOSPCI-E扩展槽所提供的索引信息可用,且可预测,则根据此索引进行命名,如ens1, ens2, ...

3) 如果硬件接口的物理位置信息可用,则根据此信息命名,如enp2s0, ...

4) 如果用户显式定义,也可根据MAC地址命名,例如enx122161ab2e10, ...

上述均不可用,则仍使用传统方式命名;


命名格式的组成:

    enethernet

    wlwlan

    wwwwan


名称类型:

     o<index>:集成设备的设备索引号;

     s<slot>:扩展槽的索引号;

     x<MAC>:基于MAC地址的命名;

     p<bus>s<slot>:基于总线及槽的拓扑结构进行命名;


传输层协议:

     tcp:面向连接的协议;通信开始之前,要建立一个虚链路;通信完成后还要拆除连接;

     udp:无连接的协议;直接发送数据报文;

 

三、常用网络配置命令


1.ifcfg命令家族: ifconfig, route, netstat


1)ifconfig命令:接口及地址查看和管理

wKioL1b2CpuycVrPAAAxtAmq2kQ999.png

ifconfig -a:显示所有接口,包括inactive状态的接口;

wKiom1b2CgDz3pEHAABRxudDTAM845.png

ifconfig  IFACE  IP/MASK  [up|down]:为指定接口配置ip,开启或关闭接口;

wKiom1b2CnyzYq_7AABmHoJL7vY976.png

fconfig  IFACE  IP  netmask  NETMASK :为指定的接口配置ip,子网掩码。

wKiom1b2CvLzk-iIAABmPgsRAa8388.png

options:开启或关闭混杂模式[-]promisc

wKioL1b2DCTxiEWrAAA3aOqfHgs822.png

wKioL1b2C_qTlly7AAA2Vncd8M0117.png

注意:立即送往内核中的TCP/IP协议栈,并生效,只对当前内核有效;


管理IPv6地址:

add addr/prefixlen

    del  addr/prefixlen

2)route命令:路由查看及管理


      路由条目类型:

       主机路由:目标地址为单个IP

       网络路由:目标地址为IP网络;

       默认路由:目标为任意网络,0.0.0.0/0.0.0.0

 

查看:# route  -n

wKiom1b2C_HiZKosAAAa1jtOkZ4282.png

加:

route add [-net|-host]  target  [netmask  Nm]  [gw GW]  [[dev] If]

示例:route add -net  10.0.0.0/8  gw  172.18.0.1 dev  eth1

到达10.0.0.0网络经由172.18.0.1(下一跳)

wKiom1b2DDihfZcTAAAla6VhHuo366.png

route add  default  gw 192.168.0.1 到达任意网络需经由192.168.0.1

wKioL1b2DuizaPwPAAAptqIDEsQ125.png

删除:

route  del  [-net|-host] target  [gw Gw]  [netmask Nm]  [[dev] If]

示例: route  del  -net  10.0.0.0/8  gw 192.168.0.1

wKioL1b2D2ejaB2iAAAkqBVJJvY911.png


3)netstat命令:

         显示路由表:netstat  -rn

                            -r:显示内核路由表

                            -n:数字格式

wKiom1b2DyHBjMEaAAAfxVRDG28115.png

   显示网络连接:

   netstat  [--tcp|-t]  [--udp|-u]  [--udplite|-U]  [--sctp|-S]  [--raw|-w]  [--listening|-l]  [--all|-a]  [--numeric|-n]   [--extend|-e[--extend|-e]]  [--program|-p]

         -tTCP协议的相关连接,连接均有其状态;FSMFinate State Machine);

         -uUDP相关的连接

         -wraw socket相关的连接

         -l:处于监听状态的连接

         -a:所有状态

         -n:以数字格式显示IPPort

         -e:扩展格式

         -p:显示相关的进程及PID


      常用组合:

        netstat-tan:查看tcp协议相关链接

wKioL1b2ECPQrsxJAAAlNTXdj2c305.png

 netstat-uan:查看udp协议相关连接

wKiom1b2D76gDGD0AAAu-PRM0-U619.png

   netstat -tnl:查看处于监听状态的tcp协议相关连接

wKiom1b2EDCgoztUAAAds-doszk584.png

netstat-unl:查看处于监听状态的udp协议相关连接

wKioL1b2EP6j57hhAAAmVPlNxz8547.png

netstat-tunlp:显示处于监听状态的tcpudp协议相关连接的进程及PID

wKioL1b2EROiUvOoAABShDB1BMo595.png


显示接口的统计数据:

  所有接口:netstat  -i

wKiom1b2EM2xQekMAAAh42n2GxM231.png

指定接口:netstat  -I<IFace>

wKiom1b2EOqwRtIBAAAS1s9GMbw451.png


  ifup/ifdown命令:启用或禁用网卡(需要有网卡配置文件)

  注意:通过配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE来识别接口并完成配置;


配置主机名

    hostname命令:

   查看:hostname

   配置:hostname  HOSTNAME

  当前系统有效,重启后无效;


   hostnamectl命令(CentOS 7):

   hostnamectl  status:显示当前主机名信息;

   hostnamectl  set-hostname:设定主机名,永久有效;

   配置文件:/etc/sysconfig/networkCentOS6

   HOSTNAME=<HOSTNAME>

   注意:此方法的设置不会立即生效; 但以后会一直有效;


配置DNS服务器指向

   配置文件:/etc/resolv.conf

   nameserver   DNS_SERVER_IP

wKioL1b2Ex6AE-YaAAALy2oGbzQ340.png

    如何测试(host/nslookup/dig)

   # dig  -t  A  FQDN(不会检查hosts

         FQDN --> IP

   # dig  -x  IP

        IP --> FQDN


2.iproute家族:

ip命令:

ip [ OPTIONS ] OBJECT { COMMAND | help }

                  OBJECT := { link | addr | route | netns  }

注意: OBJECT可简写,各OBJECT的子命令也可简写;i


1)ip linknetwork device configuration

      ip  link  set - change device attributesdev NAME (default):指明要管理的设备,dev关键字可省略;

  updown:开启或关闭接口

wKiom1b2EmLx31hWAAAxjc_83PI477.png

wKioL1b2Ev7TQeAfAAAxiNHIhXc395.png

multicast onmulticast off:启用或禁用多播功能;

name NAME:重命名接口

wKiom1b2EvWhVuN-AAAvWSd_zFQ175.png

mtu NUMBER:设置MTU的大小,默认为1500

wKioL1b2E6Xjvje6AAAnvlwRuhs320.png

  ip link  show  - display device attributes

   ip  link  help -  显示简要使用帮助;

      netns PIDnsnamespace,用于将接口移动到指定的网络名称空间;


wKiom1b2FF7SI4y3AAAHPSPSIJA534.png

2)ip netns: -manage network namespaces.


  ip  netns  list:列出所有的netns

wKiom1b2FLjQ9mHGAAAFxYh09f8784.png

ip netns add NAME:创建指定的netns

wKiom1b2FRLzGbAzAAAIjZO8oXo736.png

ip netns del NAME:删除指定的netns

wKioL1b2FbuDH_UiAAAIHH-saME522.png

ip netns  exe  NAME COMMAND:在指定的netns中运行命令

wKioL1b2FcWS3duQAAAdy-pQAKo351.png

3)ip address - protocol address management.

ip  addr  add  IFADDR  dev  IFACE

wKiom1b2Fhby5P_uAAAvTOsxk44039.png

[label NAME]:为额外添加的地址指明接口别名;

 

         [broadcast ADDRESS]:广播地址;会根据IPNETMASK自动计算得到;

         [scope SCOPE_VALUE]

                       global:全局可用;

                         link:接口可用;

                         host:仅本机可用;

ip addr  delete  IFADDR  dev  IFACE 

wKioL1b2Fv_wip5fAAAoEKW5z6Y918.png


ip  addr   list  [IFACE]:显示接口的


ip  addr  flush  dev  IFACE:清空指定接口配置

wKiom1b2FrOSsQRCAAAT1rt0ZTw782.png


4)ip route:路由表管理命令

             ip route add - add new route

             ip route change - change route

             ip route replace - change or add new one

             ip route add TYPE PREFIX via GW [dev  IFACE] [src SOURCE_IP]


示例:

# ip route add 192.168.0.0/24  via 10.0.0.1  dev eth1 src  10.0.20.100

wKiom1b2F0ziMFoOAAAlkbO72UA297.png

# ip  route  add default  via  

wKioL1b2GAezZP8-AAAmCWp2G8A706.png

#ip  route  del  TYPE PRIFIX 

wKiom1b2F5LSRdyUAABElLLI8Go033.png

#ip  route  get  TYPE PRIFIX

wKioL1b2GEDwfxIsAAANvN93uj8434.png

3.ss命令:

   ss  [options]  [ FILTER ]

       选项:

          -tTCP协议的相关连接

          -uUDP相关的连接

          -wraw socket相关的连接

          -l:监听状态的连接

          -a:所有状态的连接

          -n:数字格式

          -p:相关的程序及其PID

          -e:扩展格式信息

          -m:内存用量

          -o:计时器信息

TCP的常见状态:

        TCP FSM

          LISTEN:监听

          ESTABLISEHD:已建立的连接

          FIN_WAIT_1

          FIN_WAIT_2

          SYN_SENT

          SYN_RECV

            CLOSED


  EXPRESSION

  dport = 目标端口

  sport =  源端口

示例:'( dport = :22 or sport = :22 )'

wKioL1b2Gb6QCQEeAAAVnO99wAQ188.png           ss  -tan  state  ESTABLISHED

wKioL1b2GYmy6LfmAAAOkHfjJRI334.png


四、配置文件:

   IP/NETMASK/GW/DNS等属性的配置文件:/etc/sysconfig/network-scripts/ifcfg-IFACE

   IFACE:接口名称;

   路由的相关配置文件:/etc/sysconfig/network-scripts/route-IFACE


配置文件/etc/sysconfig/network-scripts/ifcfg-IFACE通过大量参数来定义接口的属性;其可通过vim等文本编辑器直接修改,也可以使用专用的命令的进行修改(CentOS 6system-config-network (setup)CentOS 7: nmtui

wKioL1b2Gj_RLgbCAAAcVlu4GqQ682.png

ifcfg-IFACE配置文件,如下图

wKioL1b2Gh7htE_EAABvaMlGOrM450.png

网络服务:

       network

       NetworkManager

管理网络服务:

              CentOS 6:   service  SERVICE  {start|stop|restart|status}

              CentOS 7systemctl  {start|stop|restart|status}  SERVICE[.service]


配置文件修改之后,如果要生效,需要重启网络服务;

              CentOS 6# service  network  restart

              CentOS 7# systemctl  restart  network.service


用到非默认网关路由:/etc/sysconfig/network-scripts/route-IFACE

支持两种配置方式,但不可混用;

      (1) 每行一个路由条目:

                  TARGET  via  GW

      (2) 每三行一个路由条目:

                ADDRESS#=TARGET

                NETMASK#=MASK

                GATEWAY#=NEXTHOP

给接口配置多个地址:

               ip addr之外,ifconfig或配置文件都可以;


  (1) ifconfig  IFACE_LABEL  IPADDR/NETMASK

         IFACE_LABELeth0:0, eth0:1, ...

   (2) 为别名添加配置文件;

           DEVICE=IFACE_LABEL

           BOOTPROTO:网上别名不支持动态获取地址;static, none


nmcli命令:


    nmcli  [ OPTIONS ] OBJECT { COMMAND | help }


device - show and manage network interfaces

           COMMAND := { status | show | connect | disconnect | delete | wifi | wimax }

            connection - start, stop, and manage network connections

           COMMAND := { show | up | down | add | edit | modify | delete | reload | load }

            modify [ id | uuid | path ] <ID> [+|-]<setting>.<property> <value>


如何修改IP地址等属性:

   # nmcli  conn  modify  IFACE  [+|-]setting.property  value

                                          ipv4.address

                                          ipv4.gateway

                                          ipv4.dns1

                                          ipv4.method

                                          manual