21.Linux网络设置

查看及测试网络

ifconfig

复制代码
- **作用**:这是一个用于配置和显示Linux网络接口信息的命令。它可以显示网络接口的IP地址、子网掩码、广播地址、MAC地址等信息,也能用于启用/禁用网络接口、设置IP地址等网络配置操作。不过,在较新的系统中,`ip`命令逐渐成为更推荐的替代工具。
- **示例输出**:
plain 复制代码
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.100  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:fe39:9594  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:39:95:94  txqueuelen 1000  (Ethernet)
        RX packets 202113  bytes 210321126 (200.5 MiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 116234  bytes 14031712 (13.3 MiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
  • 示例场景 :系统管理员在排查网络故障时,使用ifconfig查看网络接口的状态,确认IP地址是否正确配置,是否有网络流量等。

route -n

复制代码
- **作用**:用于显示内核的IP路由表。`-n`选项表示以数字形式显示IP地址和端口号,而不是进行反向DNS解析,这样可以加快命令执行速度并避免因DNS解析失败而产生的问题。
- **示例输出**:
plain 复制代码
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth0
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth0
  • 示例场景 :网络工程师在配置网络路由时,通过route -n查看当前路由表,确定数据包如何在不同网络之间转发,排查路由配置错误。

netstat -anpt | grep "ssh"

复制代码
- **作用**:`netstat`是一个用于显示网络连接、路由表和网络接口统计信息的工具。`-a`选项表示显示所有连接和监听端口,`-n`以数字形式显示地址和端口号,`-p`显示与网络连接相关联的进程,`-t`仅显示TCP连接。管道符号`|`将`netstat`的输出传递给`grep`命令,`grep "ssh"`用于在`netstat`的输出中查找包含"ssh"的行,即查找与SSH服务相关的网络连接。
- **示例场景**:系统管理员想确认SSH服务是否正常运行并监听在正确的端口上,或者查看当前有哪些SSH连接,就可以使用这个命令。如果SSH服务正常运行,会看到类似`tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      1234/sshd`这样的输出,表示SSH服务(进程ID为1234的`sshd`进程)正在监听TCP端口22。

ss -t state established

复制代码
- **作用**:`ss`是新一代的网络连接查看工具,它可以替代`netstat`。`-t`选项表示仅显示TCP连接,`state established`用于筛选出状态为"已建立"的TCP连接。这对于查看当前处于活动状态的TCP连接非常有用。
- **示例场景**:在排查网络应用的连接问题时,通过此命令可以查看哪些TCP连接已经成功建立,判断是否存在异常的连接或者确认应用是否正确地与其他服务器建立了连接。

ping 192.168.84.128

复制代码
- **作用**:`ping`命令用于测试网络连接。它通过向指定的IP地址(这里是`192.168.84.128`)发送ICMP(Internet Control Message Protocol)回显请求数据包,并等待接收目标主机的回显应答,以判断网络是否可达以及网络延迟情况。
- **示例输出**:
plain 复制代码
PING 192.168.84.128 (192.168.84.128) 56(84) bytes of data.
64 bytes from 192.168.84.128: icmp_seq=1 ttl=64 time=0.342 ms
64 bytes from 192.168.84.128: icmp_seq=2 ttl=64 time=0.327 ms
  • 示例场景 :在诊断网络故障时,首先使用ping命令来测试与目标主机的连通性。如果能收到回复,说明网络基本可达;如果收不到回复,可能存在网络配置错误、目标主机未开机或防火墙阻挡等问题。

traceroute 192.168.84.128

复制代码
- **作用**:`traceroute`命令用于跟踪数据包从源主机到目标主机(这里是`192.168.84.128`)所经过的路由路径。它通过发送一系列的UDP数据包,设置不同的TTL(Time - To - Live)值,每经过一个路由器,TTL值减1,当TTL值为0时,路由器会返回一个ICMP超时消息,从而确定数据包经过的路由器地址。
- **示例输出**:
plain 复制代码
traceroute to 192.168.84.128 (192.168.84.128), 30 hops max, 60 byte packets
 1  192.168.1.1 (192.168.1.1)  0.321 ms  0.296 ms  0.275 ms
 2  192.168.84.1 (192.168.84.1)  0.542 ms  0.517 ms  0.496 ms
 3  192.168.84.128 (192.168.84.128)  0.762 ms  0.737 ms  0.716 ms
  • 示例场景 :当网络出现延迟或丢包问题时,traceroute可以帮助确定问题出在哪一段网络路径上,是本地网络、中间的某个路由器,还是目标主机附近的网络。

nslookup www.baidu.com

复制代码
- **作用**:`nslookup`(Name Server Lookup)是一个用于查询DNS(Domain Name System)记录的工具,它允许用户获取域名对应的IP地址,以及其他相关的DNS信息。当你运行 `nslookup www.baidu.com` 时,它会向默认的DNS服务器发送查询请求,以解析 `www.baidu.com` 这个域名。
- **工作原理**:
    * `nslookup` 首先会使用系统配置的默认DNS服务器(通常在 `/etc/resolv.conf` 文件中指定)。
    * 它向DNS服务器发送一个查询请求,询问 `www.baidu.com` 的IP地址(A记录)。DNS服务器会在其数据库中查找相关记录,并将结果返回给 `nslookup`。
- **示例输出**:
plain 复制代码
Server:         192.168.1.1
Address:        192.168.1.1#53

Non - authoritative answer:
Name:   www.baidu.com
Address: 180.101.49.11
Name:   www.baidu.com
Address: 180.101.49.12

在这个示例中,Server 显示了所使用的DNS服务器的地址,Address 是查询到的 www.baidu.com 的IP地址。"Non - authoritative answer" 表示这个答案可能不是来自权威的DNS服务器,可能是缓存的结果。

  • 应用场景
    • 网络故障排查:当用户无法访问某个网站时,可以使用 nslookup 来确定是否是DNS解析问题。如果 nslookup 能够成功解析出IP地址,但浏览器仍然无法访问,那么问题可能出在网络连接、防火墙或网站服务器本身。
    • 域名管理:网站管理员可以使用 nslookup 来验证新添加的域名记录是否正确解析。

dig baidu.com

复制代码
- **作用**:`dig`(Domain Information Groper)也是一个用于查询DNS记录的强大工具。它比 `nslookup` 提供了更详细和灵活的DNS查询功能。运行 `dig baidu.com` 时,它会向默认的DNS服务器查询 `baidu.com` 的各种DNS记录。
- **工作原理**:
    * 类似于 `nslookup`,`dig` 也会使用系统默认的DNS服务器(或通过命令行选项指定其他DNS服务器)。
    * 它发送DNS查询请求,根据查询类型(默认为A记录查询,即获取域名对应的IP地址),DNS服务器返回相应的记录。`dig` 不仅能获取IP地址,还能获取如MX(邮件交换)记录、NS(名称服务器)记录等其他类型的DNS记录。
- **示例输出**:
plain 复制代码
; <<>> DiG 9.11.4 - P2 - RHEL7 <<>> baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<< - opcode: QUERY, status: NOERROR, id: 39737
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;baidu.com.			IN	A

;; ANSWER SECTION:
baidu.com.		299	IN	A	14.215.177.38

;; Query time: 10 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Sep 26 15:34:03 UTC 2022
;; MSG SIZE  rcvd: 55

在这个输出中,QUESTION SECTION 显示了查询的问题(即查询 baidu.com 的A记录),ANSWER SECTION 给出了查询到的 baidu.com 的IP地址。dig 还提供了如查询状态、查询时间、使用的DNS服务器等详细信息。

  • 应用场景
    • 高级DNS调试:由于 dig 能够提供丰富的DNS查询信息,网络工程师和系统管理员经常使用它来深入分析DNS问题,例如排查DNS服务器配置错误、检查缓存设置等。
    • 域名研究:对于研究域名系统的人员,dig 可以用于查看不同类型的DNS记录,了解域名的配置和管理情况。

设置网络地址参数

修改网卡地址、状态

ifconfig** 命令格式**:ifconfig 是用于配置和显示网络接口信息的工具。其基本格式为 ifconfig [interface] [options]interface 是网络接口名称,如 eth0ens33 等。options 可以是设置IP地址、子网掩码、广播地址等参数。不过,在较新的Linux系统中,ip 命令逐渐被推荐使用,因为它的语法更简洁且功能更强大。

  • ifdown ens33:这个命令用于关闭指定的网络接口 ens33。当执行此命令后,该网络接口将停止工作,不再收发网络数据包。这在需要临时禁用某个网络接口进行维护或调整网络配置时很有用。例如,当你要更换网络接口的IP地址时,可能先关闭接口以避免配置过程中的冲突。

  • ifup ens33:与 ifdown 相反,ifup 命令用于启用指定的网络接口 ens33。在执行 ifdown 关闭接口后,或者在系统启动时网络接口被设置为自动启动但尚未启动的情况下,可以使用 ifup 来启动该接口,使其能够正常工作并连接到网络。

  • ifconfig ens33:0 192.168.84.128:此命令为网络接口 ens33 创建一个别名接口 ens33:0,并为该别名接口设置IP地址 192.168.84.128。别名接口常用于需要在同一物理网络接口上配置多个IP地址的场景,比如一台服务器需要提供多个网站服务,每个网站对应一个不同的IP地址,就可以通过别名接口来实现。

添加、删除静态路由记录

route add -net 192.168.84.0/24 gw 192.168.84.254

* route 是用于操作内核路由表的命令。

* add 表示添加一条路由记录。

* -net 表示要添加的是一个网络路由。192.168.84.0/24 是目标网络地址和子网掩码,192.168.84.0 是网络地址,/24 表示子网掩码为 255.255.255.0

* gwgateway 的缩写,指定了通往目标网络 192.168.84.0/24 的网关地址为 192.168.84.254。这条命令告诉内核,如果要访问 192.168.84.0/24 这个网络,数据包应该发送到 192.168.84.254 这个网关。

  • route -n:前面已解释过,此命令用于显示内核的IP路由表。-n 选项使输出以数字形式显示IP地址和端口号,不进行反向DNS解析,这样可以加快命令执行速度并避免因DNS解析失败而产生的问题。通过执行这个命令,可以查看刚刚添加的静态路由是否已成功添加到路由表中。

  • route del -net 192.168.84.0/24

* del 表示删除路由记录。

* -net 同样表示要删除的是一个网络路由。此命令用于删除目标网络为 192.168.84.0/24 的路由记录。当网络拓扑发生变化,不再需要通过特定网关访问某个网络时,就可以使用此命令删除相应的路由。

  • **再次执行 **route -n:用于确认刚刚删除的路由记录已从内核路由表中移除。

添加删除默认网关记录

route -n | grep "192.168.84.1":这条命令先使用 route -n 显示内核路由表,然后通过管道符号 | 将输出传递给 grep 命令,grep "192.168.84.1" 用于在路由表输出中查找包含 192.168.84.1 的行。这一步主要是为了确认当前路由表中是否存在与 192.168.84.1 相关的路由记录,特别是默认网关记录(通常默认网关的IP地址会在路由表中有特殊标识)。

  • route del default gw 192.168.84.1

* del 表示删除操作。

* default 表示要删除的是默认路由。

* gw 后面跟着的 192.168.84.1 是当前默认网关的IP地址。执行此命令会删除当前设置的默认网关,即当系统不知道如何路由某个数据包时,不再将其发送到 192.168.84.1 这个网关。

  • **再次执行 **route -n | grep "192.168.84.1":确认删除操作成功,即路由表中不再有与 192.168.84.1 相关的默认网关记录。

  • route add default gw 192.168.84.254

* add 表示添加操作。

* default 表示要添加的是默认路由。

* gw 后面跟着的 192.168.84.254 是新的默认网关IP地址。此命令将 192.168.84.254 设置为系统的默认网关,当系统无法确定数据包的具体路由时,会将数据包发送到这个网关。

  • **最后执行 **route -n | grep "192.168.84.254":确认新的默认网关 192.168.84.254 已成功添加到路由表中。

修改网络配置文件

网络接口配置文件 /etc/sysconfig/network - scripts/ifcfg - ens33

TYPE="Ethernet":指定网络接口的类型为以太网。在Linux系统中,常见的网络接口类型除了以太网,还有无线网卡(如TYPE="Wireless")等。

  • PROXY_METHOD="none":表示不使用代理方法。在某些网络环境中,如果需要通过代理服务器访问网络,可在此处设置相应的代理方法。

  • BROWSER_ONLY="no":表明该网络接口不仅仅用于浏览器相关的网络连接,no表示可用于多种网络应用。

  • BOOTPROTO="dhcp":指定网络接口获取IP地址的方式为动态主机配置协议(DHCP)。系统启动时,该接口会向DHCP服务器请求IP地址、子网掩码、网关等网络配置信息。如果设置为static,则需要手动配置IP地址等信息。

  • DEFROUTE="yes":表示该接口配置的网关将被用作系统的默认路由。当系统需要发送一个目的地址不在本地子网的数据包时,会通过这个默认路由发送。

  • IPV4_FAILURE_FATAL="no":意味着如果IPv4配置失败,不会导致整个网络配置过程失败。系统仍会尝试其他网络配置,如IPv6配置。

  • IPV6INIT="yes":启用IPv6协议,系统会尝试为该接口配置IPv6地址。

  • IPV6_AUTOCONF="yes":表示系统将自动配置IPv6地址,通常使用无状态地址自动配置(SLAAC)机制。

  • IPV6_DEFROUTE="yes":表明该接口配置的IPv6网关将被用作系统的IPv6默认路由。

  • IPV6_FAILURE_FATAL="no":与IPv4类似,如果IPv6配置失败,不会导致整个网络配置过程失败。

  • IPV6_ADDR_GEN_MODE="stable - privacy":指定IPv6地址生成模式为稳定隐私模式,这种模式生成的IPv6地址会定期更换,以增强隐私保护。

  • NAME="ens33":给网络接口指定一个逻辑名称,通常与DEVICE的值相同,方便识别和管理。

  • UUID="de3dace8 - e122 - 45db - 8098 - 4f50911e89b8":通用唯一识别码(UUID),用于唯一标识该网络接口配置。在某些系统管理场景中,UUID可用于准确识别和管理特定的网络接口配置。

  • DEVICE="ens33":指定实际的网络设备名称,在这个例子中是ens33。这是内核识别的网络设备名称。

  • ONBOOT="yes":表示系统启动时自动激活该网络接口,即自动尝试连接到网络并获取网络配置。

启用、禁用网络接口配置

复制代码
- `systemctl restart network`:`systemctl`是systemd系统管理工具,用于控制systemd系统和服务。`restart`子命令用于重启指定的服务,这里是`network`服务。执行此命令会重新加载网络配置,重启所有网络接口,使网络配置的更改生效。适用于对网络配置文件进行修改后,需要使新配置立即生效的情况。
- `ifdown ens33`:使用`ifdown`命令手动禁用名为`ens33`的网络接口。禁用后,该接口将停止工作,不再收发网络数据包。这在需要临时停止某个网络接口进行维护或调整网络配置时很有用。
- `ifup ens33`:与`ifdown`相反,`ifup`命令用于手动启用名为`ens33`的网络接口。在接口被禁用或系统启动时未自动激活的情况下,使用此命令可使接口开始工作并连接到网络。

主机名称配置文件

复制代码
- `vim /etc/hostname`:`vim`是Linux系统中常用的文本编辑器,`/etc/hostname`是存储主机名的配置文件。使用`vim`打开此文件,可以手动编辑主机名。不过,直接编辑此文件后,可能需要重启系统或使用`hostnamectl`命令来使主机名更改生效。
- `hostnamectl set - hostname MsrkWu`:`hostnamectl`是systemd提供的用于管理主机名的工具。`set - hostname`子命令用于设置主机名为`MsrkWu`。这种方式设置主机名更方便,且设置后立即生效,无需重启系统。设置主机名有助于在网络中识别和区分不同的主机。

域名解析配置文件

/etc/resolv.conf

* # Generated by NetworkManager:这是注释行,表明该文件是由NetworkManager工具生成的。NetworkManager是一个用于管理网络连接的服务。

* search localdomain:设置搜索域为localdomain。当用户在系统中使用一个不完整的域名(如只输入主机名而没有完整的域名)进行网络访问时,系统会自动在该主机名后加上localdomain进行域名解析尝试。

* nameserver 192.168.84.2:指定了为本机提供DNS解析的服务器地址为192.168.84.2。当系统需要将域名解析为IP地址时,会向这个DNS服务器发送查询请求。

  • /etc/NetworkManager/NetworkManager.conf

* [main]:这是配置文件的一个节(section),用于设置NetworkManager的主要配置选项。

* plugins = ifcfg - rh,ibft:指定使用的插件,ifcfg - rh是用于兼容传统ifcfg - *配置文件的插件,ibft用于处理iBFT(Intelligent Platform Management Interface Boot Firmware Table)相关的网络配置。

* dns = none:设置NetworkManager不自动管理DNS配置。这意味着用户需要手动在/etc/resolv.conf中配置DNS服务器地址,而不是由NetworkManager自动生成。

* [logging]:这是用于配置日志记录相关设置的节。#level = TRACE#domains = ALL是注释掉的日志级别和日志域设置,可用于调整NetworkManager的日志记录详细程度。

  • /etc/hosts

* 127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4:这行配置表示将本地回环地址127.0.0.1映射到localhostlocalhost.localdomain等主机名。这样,当系统需要访问这些主机名时,实际上会访问本地回环地址,主要用于本地测试和系统内部通信。

* ::1 localhost localhost.localdomain localhost6 localhost6.localdomain6:这行配置将IPv6的本地回环地址::1映射到localhost等主机名,功能与IPv4的本地回环地址映射类似,用于IPv6环境下的本地通信和测试。此外,用户也可以在这个文件中手动添加其他主机名与IP地址的映射关系,优先于DNS服务器进行域名解析,常用于本地测试或内部网络中对特定主机的快速访问。

相关推荐
Likeyou71 小时前
关于Linux下的Oracle的rman备份操作指南
linux·运维·oracle
峰顶听歌的鲸鱼1 小时前
13.docker部署
linux·运维·笔记·docker·容器·云计算
橘子编程1 小时前
仓颉语言变量与表达式解析
java·linux·服务器·开发语言·数据库·python·mysql
虚神界熊孩儿1 小时前
linux下创建用户和用户组
linux·运维·服务器
hhwyqwqhhwy1 小时前
linux 驱动 rtc
linux·运维·实时音视频
老鱼说AI1 小时前
算法初级教学第四步:栈与队列
网络·数据结构·python·算法·链表
python百炼成钢1 小时前
53.Linux regmap驱动框架
linux·运维·服务器·驱动开发
python百炼成钢1 小时前
54.Linux IIO驱动框架
linux·运维·服务器·驱动开发