Linux——从命令行配置网络

1.使用nmcli添加静态网络连接

nmcli con add con-name static-addr \
ifname eth0 type ethernet ipv4.method manual ipv4.dns 172.25.250.220 \
ipv4.addresses 172.25.250.10/24 ipv4.gateway 172.25.250.254

命令概述

这是一条使用 nmcli(NetworkManager 命令行工具)在 Linux 系统中添加网络连接配置的命令,目的是创建一个名为 static-addr 的静态网络连接,绑定到网络接口 eth0 上,并设置相关的 IPv4 配置信息,包括手动指定 IP 地址、子网掩码、默认网关以及 DNS 服务器地址

各参数含义

  • con-add
    这是 nmcli 命令用于添加新网络连接的操作关键字。它表示接下来要进行的是创建一个新的网络连接配置的操作。
  • con-name static-addr
    con-name 参数用于指定新创建网络连接的名称,在这里将连接命名为 static-addr。这个名称方便后续对该网络连接进行管理、启用、停用等操作时进行识别和引用。
  • ifname eth0
    ifname 参数用于指定此网络连接要绑定的网络接口设备名称。在这个命令中,明确指出该网络连接要关联到名为 eth0 的网络接口上,意味着这个配置将会应用到 eth0 这块网卡,使其按照设定的网络参数来工作。
  • type ethernet
    type 参数定义了网络连接的类型,这里设置为 ethernet,表明是以太网类型的连接,适用于通过网线连接到局域网等常见的有线网络场景。
  • ipv4.method manual
    ipv4.method 参数用于指定获取 IPv4 地址的方式,设置为 manual 表示采用手动配置的方式。与自动获取 IP 地址(例如通过 DHCP 服务器自动分配)不同,手动配置需要明确给出 IP 地址、子网掩码、网关等具体信息,就像下面的参数所做的那样。
  • ipv4.dns 172.25.250.220
    ipv4.dns 参数用于指定 IPv4 的 DNS(Domain Name System,域名系统)服务器地址。在这里指定了 DNS 服务器的 IP 地址为 172.25.250.220。DNS 服务器的作用是将用户输入的便于记忆的域名(比如 www.example.com)解析成对应的 IP 地址,以便网络设备能够准确地找到相应的服务器并进行通信。
  • ipv4.addresses 172.25.250.10/24
    ipv4.addresses 参数用来设置分配给该网络接口的 IPv4 地址以及子网掩码相关信息。这里配置的 IP 地址是 172.25.250.10/24 表示子网掩码采用 CIDR(无类别域间路由)表示法,对应的子网掩码就是 255.255.255.0。它界定了该设备所在的局域网网段范围,确定哪些 IP 地址属于同一个子网,可以直接进行本地通信等。
  • ipv4.gateway 172.25.250.254
    ipv4.gateway 参数用于指定 IPv4 的默认网关地址。默认网关是局域网内的设备访问其他网段(例如访问互联网或者其他局域网)时数据转发的出口节点。在这里,设置默认网关的 IP 地址为 172.25.250.254,局域网内的设备发送到外部网络的数据包将会先发送到这个网关设备,再由网关设备进行转发处理。

后续操作及验证

  • 启用连接
    在执行完这条添加连接配置的命令后,一般还需要使用 nmcli con up static-addr 命令来启用这个名为 static-addr 的网络连接,使其配置生效,让 eth0 接口按照设定的静态 IP 等参数开始工作。
  • 验证配置
    可以通过一些命令来验证网络配置是否正确生效,比如使用 ifconfig(较旧的命令,部分系统可用)或者 ip addr show eth0 命令查看 eth0 接口的 IP 地址等信息是否和配置的一致,还可以使用 ping 命令去测试能否与网关、DNS 服务器或者其他局域网内、外的设备进行正常通信,例如 ping 172.25.250.254(测试能否与网关通信)、ping 8.8.8.8(测试能否访问外部的 DNS 服务器,常用于验证网络连通性)等。

       这条 nmcli 命令完成了为指定网卡创建一个具有完整静态网络配置的网络连接的任务,后续通过启用等操作使其在 Linux 系统中发挥作用,保障网络正常通信。

2.禁用原始连接,使其不在系统启动时自动启动

nmcli con mod "Wired connection 1" \
> connection.autoconnect no

命令概述

       这条命令使用 nmcli 工具对名为 “Wired connection 1” 的现有网络连接配置进行修改,具体是将其 connection.autoconnect 属性设置为 no,也就是禁止该网络连接在系统启动或者网络可用时自动进行连接。

各部分含义

  • nmcli con mod
    这是 nmcli 命令用于修改已有网络连接配置的操作关键字组合。nmcli 提供了添加(add)、修改(mod)、删除(del)等一系列操作网络连接的功能,这里的 mod 表示接下来要对已存在的网络连接做属性修改方面的操作。
  • "Wired connection 1"
    这是要修改的网络连接的名称,它是在系统中已经存在的一个网络连接标识。通常,在 Linux 系统中,如果通过有线网络连接设备,NetworkManager 可能会自动创建类似这样名称的有线网络连接配置(当然,具体名称可能因系统配置、网卡等情况有所不同),这里明确指定了要对这个特定的网络连接进行修改操作。
  • connection.autoconnect no
    connection.autoconnect 是网络连接配置中的一个属性,用于控制该连接是否自动进行连接。将其值设置为 no,意味着系统在下次启动时或者网络环境恢复可用(比如网线重新插拔后网络恢复正常等情况)时,不会自动启用这个名为 “Wired connection 1” 的网络连接了。与之相对应的,如果设置为 yes,则在满足相应条件时会自动连接该网络连接配置对应的网络。

实际应用场景及后续操作

  • 应用场景举例
    • 假设你所在的环境中有多个有线网络可用,而你只是偶尔需要使用 “Wired connection 1” 对应的那个特定网络,平时希望系统优先连接其他网络或者不想它自动连接浪费网络资源等情况,就可以通过这样的设置来禁止它自动连接,等需要使用时再手动启用它(可以通过 nmcli con up "Wired connection 1" 命令手动启用该连接)。
    • 又比如在进行网络调试、测试不同网络配置效果等场景下,为了确保系统按照你期望的网络连接顺序和方式来工作,可能会暂时禁止某些已有网络连接的自动连接功能。
  • 验证修改结果
    可以通过 nmcli con show "Wired connection 1" 命令来查看该网络连接修改后的详细配置信息,在输出的结果中找到 connection.autoconnect 这一属性对应的取值,确认是否已经变为 no

3.验证ip地址

ip -br addr show eth0
  • 命令概述
    • ip -br addr show eth0是一个用于查看网络接口eth0的 IP 地址相关信息的命令。其中ip是 Linux 系统中功能强大的网络配置工具,-br--brief的缩写,用于以简洁的格式输出信息,addr show表示显示地址相关的内容,eth0是要查看的网络接口名称。
  • 输出内容解释
    • 正常情况下,输出会以简洁的表格形式呈现。例如,输出可能是类似eth0 192.168.1.10/24这样的内容。
    • 其中eth0是网络接口名称,192.168.1.10是分配给eth0接口的 IP 地址,/24表示子网掩码采用 CIDR(无类别域间路由)表示法,对应的子网掩码是255.255.255.0。这表明eth0接口所在的网络段范围,并且可以根据这些信息判断与同一子网内其他设备的连通性等网络相关信息。
  • 用途
    • 网络故障排查:当网络连接出现问题时,通过查看eth0(或其他网络接口)的 IP 地址配置是否正确来初步判断问题。例如,如果 IP 地址显示为0.0.0.0,可能表示网络接口没有正确获取或配置 IP 地址,可能是 DHCP 服务器故障、网络连接故障或者配置错误等原因导致。
    • 确认网络配置:在配置静态 IP 地址或者使用动态分配 IP 地址(如 DHCP)后,使用这个命令快速验证 IP 地址是否按照预期分配到了eth0接口上,从而确保网络设置的正确性。

4.验证网关

ip route

命令语法

  ip route [options] [command|help]这是 ip route 命令的基本语法结构,其中 options 为可选参数,用于指定命令的执行方式和显示格式等;command 为具体的操作命令,如 showadddel 等;help 则用于获取命令的帮助信息

常用操作及参数

  • 查看路由表
    • ip route show 或 ip route:这两个命令都可以用于查看当前系统的路由表信息,以简洁的格式列出路由表中的各项条目,包括目的网络、网关、子网掩码、接口等信息 。
    • ip route show table [table_id]:用于查看指定路由表的内容,table_id 可以是路由表的编号或名称,若不指定,则默认查看主路由表.
  • 添加静态路由
    • ip route add [destination_network] via [gateway_ip] dev [interface_name]:添加一条到指定目的网络的静态路由,其中 destination_network 为目的网络地址,可以是一个具体的网段或主机地址;gateway_ip 是下一跳网关的 IP 地址;interface_name 是数据包将从该接口发出的网络接口名称,例如 ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0 ,表示添加一条到 192.168.2.0/24 网络的静态路由,数据将通过网关 192.168.1.1 从 eth0 接口发出.
    • ip route add default via [gateway_ip] dev [interface_name]:添加默认网关路由,所有目的地址不在路由表中的数据包都将通过此默认网关进行转发,例如 ip route add default via 192.168.1.1 dev eth0 ,表示将 192.168.1.1 设置为默认网关,通过 eth0 接口进行数据转发.
  • 删除路由
    • ip route del [destination_network]:删除到指定目的网络的路由规则,例如 ip route del 192.168.2.0/24 将删除到 192.168.2.0/24 网络的路由.
    • ip route del default:删除默认网关路由.
  • 修改路由
    • ip route change [destination_network] via [new_gateway_ip] dev [new_interface_name]:修改到指定目的网络的路由信息,将其下一跳网关和出口接口更改为新的值,例如 ip route change 192.168.2.0/24 via 192.168.1.2 dev eth1 ,表示将到 192.168.2.0/24 网络的路由的下一跳网关改为 192.168.1.2,出口接口改为 eth1。

 5.pingDNS地址

 ping -c3 172.25.250.220

命令概述

  • ping 命令主要用于测试网络连通性,通过向目标主机发送 ICMP(Internet Control Message Protocol,互联网控制报文协议)回显请求数据包,并等待目标主机返回对应的回显应答数据包,以此来判断本地主机与目标主机之间是否能够正常通信以及网络延迟等情况。
  • 在这个命令中,-c3 是一个选项参数,用于指定发送 ICMP 数据包的数量,这里表示要发送 3 个数据包到目标 IP 地址 172.25.250.220

命令执行过程及输出示例

  • 当在 Linux 系统(或支持 ping 命令的其他操作系统环境)中执行该命令后,会看到类似以下的输出信息(实际输出会根据网络状况有所不同)
PING 172.25.250.220 (172.25.250.220) 56(84) bytes of data.
64 bytes from 172.25.250.220: icmp_seq=1 ttl=64 time=0.345 ms
64 bytes from 172.25.250.220: icmp_seq=2 ttl=64 time=0.421 ms
64 bytes from 172.25.250.220: icmp_seq=3 ttl=64 time=0.387 ms

--- 172.25.250.220 ping statistics ---
3 packets transmitted, 3 packets received, 0% packet loss
round-trip min/avg/max = 0.345/0.384/0.421 ms
  • 各部分含义解释
    • PING 172.25.250.220 (172.25.250.220) 56(84) bytes of data.:这一行表示 ping 命令开始向目标 IP 地址 172.25.250.220 发送 ICMP 数据包,每个数据包包含的数据部分长度为 56 字节(加上 ICMP 头部等信息,整个 IP 数据包大小通常为 84 字节)。
    • 64 bytes from 172.25.250.220: icmp_seq=1 ttl=64 time=0.345 ms 等类似行:每一行对应一个接收到的来自目标主机的回显应答数据包的相关信息。其中 64 bytes 表示接收到的应答数据包的数据部分大小为 64 字节;from 172.25.250.220 指明了应答数据包是来自目标 IP 地址 172.25.250.220icmp_seq 表示 ICMP 数据包的序列号,这里分别显示 123,对应着发送的 3 个数据包的顺序;ttl(Time To Live,生存时间)表示该数据包在网络中可以经过的最大路由器跳数,这里是 64,不同操作系统或网络环境下默认的 ttl 值可能不同;time=0.345 ms 表示从发送数据包到接收到对应应答数据包所经历的往返时间,也就是常说的延迟,单位是毫秒,这里显示了每个数据包对应的延迟情况。
    • --- 172.25.250.220 ping statistics ---:这一行表示接下来要展示本次 ping 操作的统计信息。
    • 3 packets transmitted, 3 packets received, 0% packet loss:这里总结了本次 ping 操作的总体情况,表明一共发送了 3 个数据包(3 packets transmitted),并且成功接收到了 3 个数据包(3 packets received),没有数据包丢失(0% packet loss),说明本地主机与目标主机 172.25.250.220 之间网络连通性良好。
    • round-trip min/avg/max = 0.345/0.384/0.421 ms:给出了往返时间的最小值(min)、平均值(avg)和最大值(max),可以直观地了解到网络延迟的波动范围,在这里,最小延迟是 0.345 毫秒,平均延迟是 0.384 毫秒,最大延迟是 0.421 毫秒,这些数据有助于进一步评估网络的稳定性和性能。

常见情况及分析

  • 成功情况(类似上述示例)
    如果看到类似上述输出,即所有发送的数据包都能被目标主机正确接收并返回应答,且丢包率为 0%,说明本地与目标主机之间的网络链路正常,能够顺利通信,网络延迟情况也可以通过给出的时间数据进行判断。
  • 部分丢包情况(例如 2 packets transmitted, 1 packet received, 50% packet loss
    出现这种情况意味着发送的部分数据包没有得到目标主机的应答,可能是网络拥塞、网络设备故障、目标主机负载过高或者中间存在网络干扰等原因导致数据包在传输过程中丢失,需要进一步排查网络的各个环节来确定具体原因,比如检查网络带宽使用情况、路由器状态、目标主机的资源使用情况等。
  • 全部丢包情况(例如 3 packets transmitted, 0 packets received, 100% packet loss
    当所有发送的数据包都没有收到应答时,表明本地与目标主机之间很可能存在网络中断的问题,可能是网线未插好、网络接口故障、目标主机关机或者网络配置错误(如网关设置不正确等)等原因导致,需要从本地网络连接、中间网络设备以及目标主机的网络配置等多方面去排查故障原因。

出现这个错误的原因是在导入seaborn包时,无法从typing模块中导入名为'Protocol'的对象。 解决这个问题的方法有以下几种: 1. 检查你的Python版本是否符合seaborn包的要求,如果不符合,尝试更新Python版本。 2. 检查你的环境中是否安装了typing_extensions包,如果没有安装,可以使用以下命令安装:pip install typing_extensions。 3. 如果你使用的是Python 3.8版本以下的版本,你可以尝试使用typing_extensions包来代替typing模块来解决该问题。 4. 检查你的代码是否正确导入了seaborn包,并且没有其他导入错误。 5. 如果以上方法都无法解决问题,可以尝试在你的代码中使用其他的可替代包或者更新seaborn包的版本来解决该问题。 总结: 出现ImportError: cannot import name 'Protocol' from 'typing'错误的原因可能是由于Python版本不兼容、缺少typing_extensions包或者导入错误等原因造成的。可以根据具体情况尝试上述方法来解决该问题。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ImportError: cannot import name ‘Literal‘ from ‘typing‘ (D:\Anaconda\envs\tensorflow\lib\typing....](https://blog.youkuaiyun.com/yuhaix/article/details/124528628)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值