一、 前言

  • 网络的作用就是用于多台主机互相通信的,早期的实现方式是给每个主机一个唯一标识(MAC地址),然后把它们都链接上同轴线缆进行的,但是这种解决方案的缺点也很明显,就是通信冲突的问题,后出现CSMA/CD(载波侦听、多路访问、冲突检测)机制,用来解决这个问题,实现逻辑就是每个主机在发送信号前,先在线缆上侦听有没有其它主机正进行通信,如果没有的话就发送信号,冲同检测就是通过边发信号边检测实现的,一旦发现冲突就会向后延迟一段时间而后再重复之前的过程。
  • 交换机:对于大型的网络,多台主机争用同一个底层信道,CSMA/CD的机制仍然不够用。于是,人们就把一个大网络切割成多个小型网络,每个小型网络通过网桥进行通信,这也就是交换机的雏形,交换机可以解决冲突域的问题,它有一个表格,记录接口和主机MAC地址的对应信息,这样就可以将网络报文正确送达。
  • 路由器:随着网络发展,交换机的制造成本越来越低,一台交换机所能接入的设备也就越来越多,这也就造成了一个小型网络的广播报文越来越多,为了切割广播域就诞生了路由器。既然切割了广播域,各广播域之间通信也就需要使用一个标识来完成,这个标识不能太扁平化,并且,需要一致的命名机制,于是就诞生了IP地址。

二、配置文件

1. 网络接口命名机制

  • centos 6
    以太网接口使用eth[0、1、2],这样的方式进行命名
    ppp网络使用pp[0、1、2]命名方式
  • Centos7网卡
    (1)如果固件或BIOS为主板上集成的设备提供的索引信息可用,且可预测,则根据此索引命名
    (2)如果Firmware或BIOS为PCI-E扩展槽提供的索引信息可用,且可预测,则根据此索引命名
    (3)如果硬件接口的物理位置信息可用,则根据此信息进行命名
    (4)如果用户指定,也可根据MAC命名
    (5)上述均不可用,才会使用eth0

2. 名称组成格式

接口的类型标识符+名称类型

  • 接口的类型标识符
    en:ethernet,以太网接口
    wl:wlan,无线局域网接口
    ww:wwan,无线关于网设备
  • 名称类型
    o<index>:onboard,主板上集成的设备与其索引号命名
    s<index>:slot,插拔式的网卡,使用扩展槽的索引号命名
    x<index>:基于mac地址命名
    p<index>:基于总线命名

3. 网卡设备的命名过程

(1)首先udev机制能够将内核识别的每一个硬件设备及其相关信息通过/sys伪文件系统向用户空间进行输出,接着用户空间的工具根据这些信息判断出设备型号,并根据这些型号关联到特性驱动或者加载额外的辅助功能,那么在网卡命名过程中,就是udev就是利用一个辅助工具程序/lib/udev/rename_device ,这个工具辅助工具程序会根据/usr/lib/udev/rules.d/60-net.rules文件中的规则,去查询/etc/sysconfig/network-scripts/目录下的网卡配置文件,然后参照网卡配置文件去命名,如果命名失败则进行第二步
(2) 如果没有在内核启动过程中向内核传递biosdevname=0参数,则biosdevname程序会根据/usr/lib/udev/rules.d/71-biosdevname.rules进行命名
(3)通过udev机制检测网络接口设备,根据/usr/lib/udev/rules.d/75-net-description文件中的规则进行命名

4. 回归传统命名方式

(1)编辑/etc/default/grub,在文件中GRUB_CMDLINE_LINUX=关键字中加入"net.ifnames=0”参数
(2)为grub2生成配置文件,使用命令grub2-mkconfig -o /etc/grub2.cfg
(3)重启系统

5. 配置文件位置

  • /etc/sysconfig/network-scripts/ifcfg-IF_name,文件中可修改IP地址,子网掩码、网关地址和DNS相关
  • /etc/sysconfig/network-scripts/route-IF_name,路由相关的配置文件,默认不存在
  • /etc/sysconfig/network:主机名称配置文件
  • /etc/udev/rules.d/70-persistent-net.rules:此文件可以对centos6的网卡命名机制进行更改

6. 配置文件中关键字的意义

  • /etc/sysconfig/network-scripts/ifcfg-IF_name
    NAME="" :网络接的名称
    DEVICE="" :此配置文件关联的设备
    HWADDR="" :对应设备的MAC地址
    BOOTPROTO="" :激活此设备时使用的地址配置协议,可选[ dhcp | static | none | bootp ]
    NM_CONTROLLED="" :此网卡是否接受NM控制,建议Centos6建议为no
    ONBOOT="" :在操作系统引导时,是否激活此设备
    TYPE="" :网络接口工作时的接口类型 [ Ethernet | Bridge ]
    UUID="" :设备的唯一标识
    IPADDR="" :手动指明地址
    NETMASK="" :子网掩码
    GATEWAY="" :默认网关
    DNS1="" :指定DNS服务器指向,此处优先级比/etc/resolv.conf高
    USERCTL="" :普通用户是否可激活此设备
    PEERDNS="" :如果BOOTPROTO的值为dhcp,那么是否允许dhcp分配的dns指向覆盖/etc/resolv.conf的原有内容
    PEERROUTES="" :是否通过dhcp获取路由信息
    DEFROUTE="" :默认路由
    IPV4_FAILURE_FATAL="" :ipv4如果出现问题的话,是否认为这是致命错误
    IPV6INIT="" :是否启用ipv6
    注意网卡别名不能使用dhcp分配地址
  • /etc/sysconfig/network-scripts/route-IF_name
    此文件中可以使用两种定义格式
    格式1
    ADDRESS0=ip地址
    NETMASK0=netmask
    GATEWAY0=gateway_ip
    ADDRESS1=ip地址
    NETMASK1=netmask
    GATEWAY1=gateway_ip
    格式2
    target via GW
  • /etc/sysconfig/network
    NETWORKING=: 是否允许此主机使用网络
    HOSTNAME=: 设置主机名称
  • /etc/udev/rules.d/70-persistent-net.rules
    设置centos6的网卡命名机制,设置完毕后需要对网卡驱动进行拆除
    拆除命令modprobe -r e1000
    安装命令modprobe e1000

三、网络配置命令

1. ifconfig命令

用来实现网络信息显示和配置的命令,配置完毕后立即生效,命令格式为:
ifconfig [interface]
ifconfig [interface] address
混杂模式:目标mac即便不是自己,收到的报文也会接受一份,在网络抓包时很有用[-]promisc

2. route命令

命令格式:route [option] [add|del] [-net|-host] target/prefix [netmask] [gw GW] [dev ifc]

option
-n:不反解

示例1:添加目标为192.168.2.100的主机路由
~]# route add -host 192.168.2.100/32 gw 192.168.2.254 dev ens33
示例2:添加目标为192.168.3.0的网络路由
~]# route add -net 192.168.3.0 netmask 255.255.255.0 gw 192.168.2.254 dev ens33
示例3:添加默认路由
~]# route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.2.254 dev ens33
~]# route add default gw 192.168.2.254
示例4:删除路由
~]# route del -net 0.0.0.0 gw 192.168.2.254
~]# route del -host 192.168.2.100

3. dns设定

编辑配置文件/etc/resolv.conf,在文件中使用nameserver关键字指定,可以同时指定多个

nameserver DNS_SERVER_IP1
nameserver DNS_SERVER_IP2
nameserver DNS_SERVER_IP3

设置完毕后验证dns解析功能

  • 正解:FQDN --> IP,使用命令dig -t A FQDN
  • 反解:IP --> FQDN,使用命令dig -x IP

4. ip命令

命令格式:ip [ OPTIONS ] OBJECT { COMMAND | help }

object:

link {COMMAND}
set dev DEV_NAME up|down:指定激活或禁用指定接口
show [dev DEV_NAME|up]:显示设备简要属性
broadcast:广播
multicast:组播
mtu:最大传输单元
qlen:传输队列
link/ether:mac地址
brd:广播地址
help:帮助
addr {COMMAND}
show [DEV_NAME|scope|to PREFIX|label PATTER]:显示指定设备的信息
add IP/PREFIX dev DEV [label ‘name’]:添加地址,可指定别名
del IP/PREFIX dev DEV:删除地址
flush [DEV_NAME]:清除指定设备地址
scope VALUE:
global:全局有效
link:仅在当前接口有效
host:仅主机内部有限
route:
add {ip/prefix} {via ip} [dev DEV_NAME]:
show:
del {ip/prefix} {via ip} [dev DEV_NAME]:
flush:

5. nmcli命令

命令格式:nmcli [OPTIONS...] {OBJECT} [COMMAND] [ARGUMENTS...]

object:

(1) device
status:显示连接状态
show [DEV]:显示详细信息
connect DEV:启用链接
disconnect DEV:禁用链接
(2) connection
show:显示当前连接
up DEV:
down DEV:
modify DEV [+|-]setting ip
ipv4.addresses
ipv4.gateway
ipv4.dns1
ipv4.method
(3) general:显示各类网络接口的链接状态
(4) help:帮助信息

四、网络状态查看

1. netstat命令

可以显示网络链接、路由表、接口数据统计、地址伪装链接、组播成员关系

  • 功能1:显示网络连接相关
    命令格式:netstat [options]
    -t:显示tcp协议的相关链接
    -u:显示udp协议的相关链接
    -n:不反解IP地址
    --numeric-hosts:不反解主机名
    --numeric-ports:不反解端口
    -a:显示所有连接
    -w:显示裸套接字的相关链接,裸套接字意为不经过传输层,由应用层直接调用IP来实现数据传输的
    -l:显示监听状态的链接
    -e:扩展格式的链接信息
    -p:显示与此链接相关的进程号
  • 功能2:显示内核路由表信息
    -r:显示内核路由表
    -n:不反解
  • 功能3:显示接口统计数据
    -i:显示所用接口
    -I[IFC_NAME]:显示指定接口

2. ss命令

命令格式:ss [options] [ FILTER ]

option:
-t:显示tcp相关链接
-u:显示udp相关链接
-x:unix sock相关
-n:不反解
-a:显示所有连接
-w:显示裸套接字相关链接
-l:显示监听状态链接
-e:扩展格式
-p:显示相关的进程号
-m:内存使用情况
-o:显示计时器信息
filter
state ESTABLISHED:显示已建立的链接
dport = :22 :通过目标端口过滤链接
sport = :22 :通过源端口过滤链接

五、 文本窗口配置网络

  • system-config-network-tui setup
  • nmtui