C03S01-Linux网络基本设置

一、查看网络基本信息

1. ip命令 -- 显示与配置网卡信息

ip命令的功能是显示与配置网卡信息。

bash 复制代码
ip [选项] 对象 [动作]

常见的对象:

对象 功能
address IP地址信息
route 路由表信息

2. ifconfig命令 -- 显示或设置网络设备参数信息

ifconfig命令来自英文词组network interfaces configuring的缩写,功能是显示或设置网络设备参数信息。

bash 复制代码
ifconfig [选项] [网卡] [IP地址] [动作]

常见的选项:

选项 功能
-a 显示全部网卡

常见的动作:

动作 功能
add 设置网络地址
del 删除网络地址
down 关闭网络设备
up 启动网络设备

ifconfig显示的内容:

bash 复制代码
ifconfig

ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.128  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fe9a:2e0e  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:9a:2e:0e  txqueuelen 1000  (以太网)
        RX packets 102725  bytes 148357711 (148.3 MB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 64957  bytes 3947529 (3.9 MB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536
        inet 127.0.0.1  netmask 255.0.0.0
        inet6 ::1  prefixlen 128  scopeid 0x10<host>
        loop  txqueuelen 1000  (本地环回)
        RX packets 172  bytes 16011 (16.0 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 172  bytes 16011 (16.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • flags=4163<UP,BROADCAST,RUNNING,MULTICAST>:表示网络接口的状态,UP表示接口已激活,BROADCAST表示支持广播,RUNNING表示接口正在运行,MULTICAST表示支持多播。
  • mtu 1500:最大传输单元(Maximum Transmission Unit),即网络接口能够传输的最大数据包大小,这里是1500字节。
  • inet 192.168.1.128:IPv4地址。
  • netmask 255.255.255.0:子网掩码。
  • broadcast 192.168.1.255:广播地址。
  • inet6 fe80::20c:29ff:fe9a:2e0e:IPv6地址。
  • prefixlen 64:IPv6地址的前缀长度。
  • scopeid 0x20<link>:表示这是一个链路本地地址。
  • ether 00:0c:29:9a:2e:0e:MAC地址,也就是网卡的物理地址。
  • txqueuelen 1000:发送队列的长度。
  • RX packets、TX packets:分别表示接收和发送的数据包数量。
  • bytes:接收和发送的总字节数。
  • RX errors、TX errors:接收和发送时的错误数。
  • dropped:由于缓冲区满等原因而丢弃的数据包数。
  • overruns:由于缓冲区溢出而丢失的数据包数。
  • frame:由于帧同步错误而丢失的数据包数。
  • carrier:表示物理层的载波检测状态。
  • collisions:在发送数据时发生的冲突数。

设置网络设备的虚拟网卡:

bash 复制代码
ifconfig ens33:1 192.168.1.100/24
  • ens33:1:虚拟网卡名称。ens33是物理网卡名称,:1表示这是一个虚拟接口。
  • 192.168.1.100/24:分配给虚拟网卡的IP地址和子网掩码。
  • 注意:物理网卡要能够正常工作,接口名称可以是数字或者是字母,名称不能够重复;当系统重启或者虚拟网卡停止使用后,就会消失。

3. ifup命令 -- 激活网络接口

ifup命令来自英文词组"interface up"的缩写,功能是用于启用网卡。

bash 复制代码
ifup 网卡名称

4. ifdown命令 -- 禁用网络接口

ifdown命令来自英文词组"interface down"的缩写,功能是用于禁用网络接口。

bash 复制代码
ifdown 网卡名称

5. route命令 -- 显示与设置路由信息

route命令的功能是显示与设置路由信息,是Linux系统中常用的静态路由配置工具。

bash 复制代码
route [选项] [动作]

常见的选项:

选项 功能
-n 以数字形式显示IP地址

6. netstat命令 -- 显示网络状态

netstat命令来自英文词组network statistics的缩写,功能是显示各种网络相关信息,例如网络连接状态、路由表信息、接口状态、NAT、多播成员等。

bash 复制代码
netstat [选项]

常见的选项:

选项 功能
-a 显示所有活动的网络连接信息
-n 以数字形式显示IP、端口等
-p 显示活动接口的PID和程序名称(进程信息)
-r 显示路由表信息
-t 显示TCP协议连接的信息
-u 显示UDP协议连接的信息

netstat查看的网络状态的连接信息主要内容:

bash 复制代码
netstat -antp


Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:631           0.0.0.0:*               LISTEN      843/cupsd
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      511/systemd-resolve
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      831/sshd: /usr/sbin
tcp        0      0 127.0.0.1:6010          0.0.0.0:*               LISTEN      1791/sshd: root@pts
tcp        0      0 192.168.1.128:22        192.168.1.1:3880        ESTABLISHED 1793/sshd: root@not
tcp        0      0 192.168.1.100:22        192.168.1.1:5078        ESTABLISHED 2716/sshd: root@pts
tcp        0     48 192.168.1.128:22        192.168.1.1:3878        ESTABLISHED 1791/sshd: root@pts
  • Proto:协议类型。
  • Recv-Q:接收队列的大小,表示等待被应用程序读取的数据量。0表示没有数据在队列中。
  • Send-Q:发送队列的大小,表示等待被发送的数据量。0表示没有数据在队列中。
  • Local Address:本地地址和端口,格式为IP地址:端口号。
  • Foreign Address:远程地址和端口,格式为IP地址:端口号。0.0.0.0:*或:::*表示接受任意IP地址的连接。
  • State:连接的状态,如LISTEN表示监听状态,等待连接;ESTABLISHED表示连接已建立,0.0.0.0:*表示任意IP地址都可以连接。
  • PID/Program name:与本地地址关联的进程ID和程序名称。

7. ss命令 -- 显示活动套接字信息

ss命令来自英文词组"Socket Statistics"的缩写,和netstat命令类似,功能是用于显示活动套接字信息。

bash 复制代码
ss [选项]

常见的选项:

选项 功能
-a 显示所有套接字信息
-n 以数字形式显示IP、端口等
-p 显示套接字的进程信息
-t 显示TCP协议的套接字信息
-u 显示UDP协议的套接字信息

ss查看的套接字信息主要内容:

bash 复制代码
ss -antp

State    Recv-Q   Send-Q     Local Address:Port      Peer Address:Port   Process
LISTEN   0        128            127.0.0.1:631            0.0.0.0:*       users:(("cupsd",pid=843,fd=7))
LISTEN   0        4096       127.0.0.53%lo:53             0.0.0.0:*       users:(("systemd-resolve",pid=511,fd=14))
LISTEN   0        128              0.0.0.0:22             0.0.0.0:*       users:(("sshd",pid=831,fd=3))
  • State:连接的状态。
  • Recv-Q:接收队列的大小,表示等待被应用程序读取的数据量。0表示没有数据在队列中。
  • Send-Q:发送队列的大小,表示等待被发送的数据量。这里128和4096表示有数据在队列中等待发送。
  • Local Address:Port:本地地址和端口,格式为IP地址:端口号。%lo表示这是一个回环接口(loopback interface),仅在本地机器上可访问。
  • Peer Address:Port:远程地址和端口,格式为IP地址:端口号。0.0.0.0:*表示接受任意IP地址的连接。
  • Process:与本地地址关联的进程信息,包括进程名称、进程ID(pid)和文件描述符(fd)。

8. lsof命令 -- 查看文件的进程信息

lsof命令来自英文词组list opened files的缩写,功能是查看文件的进程信息。

bash 复制代码
lsof [选项]

常见的选项:

选项 功能
-i 显示符合条件的进程信息
-p 显示指定UID的进程信息

二、测试网络连接性

1. ping命令 -- 测试主机间网络连通性

ping命令的功能是测试主机间网络的连通性,它发送出基于ICMP传输协议的数据包,要求对方主机予以回复。

bash 复制代码
ping [选项] IP地址或域名

常见的选项:

选项 功能
-c 设置发送数据包的次数
-i 设置发送数据包的时间间隔
-w 设置程序结束前的等待时间
-W 设置响应的等待时间

2. traceroute命令 -- 追踪网络数据包传输路径

traceroute命令来自英文词组"Trace router"的拼写,其功能是用于追踪网络数据包传输路径。

bash 复制代码
traceroute [选项] IP地址或域名

三、查看网络域名信息

1. nslookup命令 -- 查询域名服务器信息

nslookup命令来自英文词组"Nameserver lookup"的缩写,功能是用于查询域名服务器信息。

bash 复制代码
nslookup [选项] IP地址或域名
  • 可以在/etc/hosts文件里配置本地的域名与IP映射。
  • 本地的DNS域名解析配置文件是/etc/resolv.conf。

四、配置网络信息

1. 配置静态网络

1.1 CentOS系统

  1. 编辑网卡配置文件/etc/sysconfig/network-scripts/ifcfg-ens33。

  2. 将BOOTPROTO属性的属性值修改为static,ONBOOT属性的属性值修改成yes。

  3. 在文件中新增以下内容,设置虚拟机的静态IP、子网掩码、网关、DNS。

    shell 复制代码
    IPADDR=192.168.1.2
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.254
    DNS1=114.114.114.114
    DNS2=8.8.8.8
  4. 保存文件后,重启网络服务。

    bash 复制代码
    systemctl restart network

1.2 Ubuntu系统

  1. 编辑网卡配置文件/etc/netplan/01-network-manager-all.yaml。

  2. 在文件中写入以下内容,设置虚拟机的静态IP、子网掩码、网关、DNS。

    yaml 复制代码
    network:
      ethernets:
        ens33:
          dhcp4: no
          addresses: [192.168.1.128/24]
          gateway4: 192.168.1.254
          nameservers:
            addresses: [218.2.135.1]
  3. 保存文件后,重启网络服务。

    bash 复制代码
    netplan apply

2. 配置多网卡

2.1 CentOS系统

  1. 添加新网卡。在VMware中给虚拟机新增一个网络适配器。

  2. 使用ip或ifconfig命令查看新网卡的名称。

  3. 复制原有网卡的配置文件,并改为新网卡名。

    bash 复制代码
    cp /etc/sysconfig/network-scripts/ifcfg-ens33 /etc/sysconfig/network-scripts/ifcfg-ens36
  4. 编辑ens36的配置文件,修改文件里的网卡名、IP地址,注释UUID。

    shell 复制代码
    NAME=ens36
    #UUID=1b92a67a-e9b6-48cc-8283-f8158b738064
    DEVICE=ens36
    
    IPADDR=192.168.1.3
    • 或是使用uuidgen随机生成一个UUID,再将文件里的原UUID修改为新生成的UUID。

    • 也可以直接覆盖原配置内容。

      shell 复制代码
      TYPE=Ethernet
      BOOTPROTO=static
      NAME=ens36
      DEVICE=ens36
      ONBOOT=yes
      IPADDR=192.168.1.3
      NETMASK=255.255.255.0
      GATEWAY=192.168.1.254
      DNS1=114.114.114.114
      DNS2=8.8.8.8
  5. 保存文件后,重启网络服务。

    bash 复制代码
    systemctl restart network

2.2 Ubuntu系统

  1. 添加新网卡。在VMware中给虚拟机新增一个网络适配器。

  2. 使用ip或ifconfig命令查看新网卡的名称。

  3. 编辑网卡配置文件,在文件中按照原有网卡配置的格式来新增新网卡的配置,具体内容如下所示。

    yaml 复制代码
    network:
      ethernets:
        ens33:
          dhcp4: no
          addresses: [192.168.1.128/24]
          gateway4: 192.168.1.254
          nameservers:
            addresses: [218.2.135.1]
        # 新增网卡
        ens37:
          dhcp4: no
          addresses: [192.168.1.130/24]
          gateway4: 192.168.1.254
          nameservers:
            addresses: [218.2.135.1]
  4. 保存文件后,重启网络服务。

    bash 复制代码
    netplan apply

3. 配置Bond网卡

3.1 Bond网卡概述

Bond网卡,也称为网卡绑定或网卡捆绑,是一种将两个或更多的物理网卡绑定成一个虚拟网卡的技术。这样做的目的是为了实现本地网卡的冗余、带宽扩容和负载均衡,如果其中一个网卡故障,不会影响系统的网卡正常工作。

Bond网卡支持七种不同的工作模式,下面是七种工作模式的介绍。

  1. Mode 0 :轮询模式。两个网卡都会使用,数据包按照轮询的方式依次发送到每个网卡,实现负载均衡。这种模式不提供冗余性。
  2. Mode 1:主备模式。具有冗余功能,只有一个工作,另一个备用。
  3. Mode 2 :均衡模式。使用源和目的MAC地址以及传输层协议和端口号来选择要发送的网卡。提供负载均衡和冗余。
  4. Mode 3:广播模式。将所有数据包发送到所有网卡。实现广播传输,但不提供负载均衡或冗余性。
  5. Mode 4 (802.3ad):LACP模式(动态链接聚合)。使用LACP协议动态协商绑定接口的工作方式,提供负载均衡和冗余性。
  6. Mode 5 (balance-tlb):负载均衡模式,以太网设备能够获取每个网卡的速率。
  7. Mode 6 (balance-alb):自适应负载均衡模式,针对数据流量实现负载均衡,不需要特殊的交换机支持。

3.2 Bond 0模式配置

  1. 配置逻辑网卡bond0。

    bash 复制代码
    vi /etc/sysconfig/network-scripts/ifcfg-bond0
    
    TYPE=Ethernet
    BOOTPROTO=static
    NAME=bond0
    DEVICE=bond0
    ONBOOT=yes
    IPADDR=192.168.1.2
    NETMASK=255.255.255.0
    GATEWAY=192.168.1.254
    DNS1=114.114.114.114
    DNS2=8.8.8.8
    BONDING_OPTS="miimon=100 mode=0 fail_over_mac=1"
  2. 配置物理网卡ens33和ens36。

    bash 复制代码
    vi /etc/sysconfig/network-scripts/ifcfg-ens33
    
    TYPE=Ethernet
    BOOTPROTO=none
    NAME=ens33
    DEVICE=ens33
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
    bash 复制代码
    vi /etc/sysconfig/network-scripts/ifcfg-ens36
    
    TYPE=Ethernet
    BOOTPROTO=none
    NAME=ens36
    DEVICE=ens36
    ONBOOT=yes
    MASTER=bond0
    SLAVE=yes
    USERCTL=no
  3. 加载bonding模块。

    bash 复制代码
    modprobe bonding
  4. 重启网络服务。

    bash 复制代码
    systemctl restart network
相关推荐
好名字更能让你们记住我12 分钟前
Linux多线程(十二)之【生产者消费者模型】
linux·运维·服务器·jvm·windows·centos
门思科技13 分钟前
设计可靠 LoRaWAN 设备时需要考虑的关键能力
运维·服务器·网络·嵌入式硬件·物联网
小高不会迪斯科26 分钟前
MIT 6.824学习心得(2) 浅谈多线程和RPC
网络·网络协议·rpc
学习编程的gas28 分钟前
Linux开发工具——gcc/g++
linux·运维·服务器
嵌入式成长家34 分钟前
ubuntu rules 使用规则
linux·ubuntu·rules 使用规则
_可乐无糖40 分钟前
AWS WebRTC: 判断viewer端拉流是否稳定的算法
linux·服务器·webrtc·aws
清醒的兰1 小时前
Qt 基于TCP套接字编程
网络·qt·tcp
数据智能老司机1 小时前
Linux内核编程——Linux设备模型
linux·架构·操作系统
BD_Marathon1 小时前
ubuntu防火墙使用
linux·ubuntu
dessler2 小时前
Kafka-消费者(Consumer)和消费者组(Consumer Group)
linux·运维·kafka