Linux网络设置

1 Linux查看网络

1.1 查看网络接口配置

ifconfig 是一个常用的命令,用于显示或配置网络接口的参数。

在某些新的Linux发行版中,ifconfig命令默认不安装,已被 ip 命令所取代。

如果需要使用ifconfig,可以在系统中安装net-tools包。

1.2 ip 命令

IP命令是一个网络工具,用于配置和管理网络接口和路由表。它是从早期的Unix系统中的ifconfig命令发展而来的。

ifconfig命令可以用于配置和管理网络接口,但是它的功能有限,不能管理路由表,因此IP命令应运而生。

在许多Linux和Unix系统中,IP命令已经取代了ifconfig命令,成为管理网络接口和路由表的主要工具。

  • 语法:ip [ OPTIONS ] OBJECT { COMMAND| help}
    • OBJECT常用对象
      • link:网络设备
      • address:设备上的协议(IP或IPv6)地址
      • addrlabel:协议地址选择的标签配置
      • route:路由表条目
      • rule:路由策略数据库中的规则
    • OPTIONS 常用选项
      • -V:显示命令的版本信息
      • -s:输出更详细的信息
      • -f:强制使用指定的协议族
      • -4:指定使用的网络层协议是IPv4协议
      • -6:指定使用的网络层协议是IPv6协议
      • -0:输出信息每条记录输出一行,即使内容较多也不换行显示
      • -r:显示主机时,不使用IP地址,而使用主机的域名

1.2.1 显示当前网络接口信息

# 显示当前所有网络接口信息
ip addr show
# 简写
ip a
  • ens33:第一块以太网卡的名称
    • “en”是“EtherNet”的缩写,表示网卡类型为以太网
    • “s”表示热插拔插槽上的设备(hot-plugSlot)
    • “33”表示插槽编号
  • lo:“回环”网络接口
    • “lo”是“loopback”的缩写,它不代表真正的网络接口,而是一个虚拟的网络接口
    • IP 地址默认是“127.0.0.1”
    • 通常仅用于对本机的网络测试
# 查看指定网络接口信息
ip addr show ens33
  • 第一部分
    • BROADCAST:支持广播
    • MULTICAST:支持组播
    • UP:该接口已启用
    • LOWER_UP:物理层已启动
    • mtu1500:最大传输单元1500字节(可以通过此接口传输的数据包的最大大小)
  • 第二部分
    • 接口的MAC地址与广播地址
    • altname:为网络接口指定一个替代名称
  • 第三部分
    • inet:网络地址/子网掩码
    • brd:广播地址
    • scope global ens33:网络接口ens33的作用范围是全局
    • valid_lft forever preferred_lft forever:IP地址有效期为永久,首选期限永久
  • 第四部分
    • inet6:ipv6的地址
    • scope link:通过一定的格式转换从MAC地址生成的全局唯一的本地链路地址

1.2.2 MTU

最大传输单元

  • 不恰当的本地MTU值:
    • 当本地MTU值 > 网络MTU值:需要拆包,会导致效率下降
    • 当本地MTU值 < 网络MTU值:未发挥最大传输能力
  • 理想的本地MTU值:
    • 本地MTU值 = 网络MTU值
  • 一般以太网MTU都为1500

1.2.3 显示网络设备运行状态

# 显示网络设备运行状态
ip link list
# 简写
ip l l
# 显示详细设备信息
ip -stats link list
# 简写
ip -s l l
  • RX:Receive(接受)
    • Bytes:接收到的总字节数,通过网络接口接收到的数据量。
    • Packets:接收到的数据包数量,每个数据包通常包含一定数量的字节,并被视为一个独立的数据传输单元。
    • Errors:在接收过程中发生的错误数量,这些错误包括校验错误、帧对齐错误等。
    • Dropped:因各种原因(如缓冲区满、硬件问题等)而未能正确接收的数据包数量。
    • Missed:可能由于某些原因(如硬件问题或配置错误)而未能捕获的广播或多播数据包的数量。
    • Mcast:多播数据包的数量。多播是一种网络通信方式,允许数据从一个源发送到多个目的地。
  • TX:Transmit(传输)
    • carrier:发生carrier错误的数据包数,比如双工模式不匹配、物理电缆出现问题等。
    • collsns:碰撞数据包数

1.3 hostname命令

查看当前主机的主机名,不用添加任何选项或参数

hostname

1.4 route命令

查看当前主机中的路由表信息

Linux 操作系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向,是排除网络故障的关键信息。

route
  • Destination:目标网段的地址,目标网段为default:表示此行是默认网关记录
  • Gateway:下一跳路由器的地址(网关),下一跳为gateway:表示目标网段是与本机直接相连的
  • Genmask:子网掩码
  • Iface:发送数据的网络接口
# 将路由记录中的地址显示为数字形式
route -n

1.5 netstat命令

查看当前操作系统的网络连接状态、路由表、接口统计等信息

  • 语法:netstat [选项]
    • -a:显示主机中所有活动的网络连接信息
    • -n:以数字的形式显示相关的主机地址、端口等信息
    • -r:显示路由表信息
    • -i:显示网卡列表信息
    • -l:显示处于监听(Listening)状态的网络连接及端口信息
    • -t:显示 TCP(Transmission Control Protocol,传输控制协议)相关的信息
    • -u:显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息
    • -p:显示与网络连接相关联的进程号、进程名称信息(该选项需要root 权限)
  • 常用组合选项:-anpt 以数字形式显示当前系统中所有的TCP连接信息,同时显示对应的进程信息
# 查看本机中是否有监听 TCP22 端口的服务程序
netstat -anpt | grep ":22"
# 显示详细的网络状况
netstat -a
# 显示当前UDP连接状况
netstat -nu
# 显示网卡列表
netstat -i

1.6 ss命令

用于查看套接字统计信息的命令,功能类似于 netstat,但速度更快,提供更详细的网络连接状态信息。

ss 是 Socket Statistics(套接字统计)的缩写,用于显示和分析系统的网络连接状态。

ss 可以显示关于 TCP、UDP、UNIX套接字的详细信息,并支持丰富的过滤功能,用于调试网络、监控网络连接等。

  • 语法:ss [options]
    • -t:–tcp 显示 TCP 协议的 sockets
    • -u:–udp 显示 UDP 协议的 sockets
    • -n:–numeric 不解析服务的名称,如 “22” 端口不会显示成"ssh"
    • -l:–listening 只显示处于监听状态的端口
    • -p:–processes 显示监听端口的进程
    • -a:–all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接
    • -r: --resolve 把 IP 解释为域名,把端口号解释为协议名称
# 显示所有套接字的详细信息
ss -a
# 仅显示TCP连接
ss -t
# 仅显示监听套接字
ss -l
# 显示与网络连接相关的进程信息
ss -p
# 显示网络连接的摘要信息
ss -s
# 显示ipv4套接字
ss -4
# 显示TCP套接字的计时器信息
ss -o
# 显示所有TCP连接包括进程
ss -t -a -p
# 显示TCP协议下真正监听的端口
ss -t -l
# 显示所有UDP连接
ss -u -a
# 查看指定端口的连接
ss -t '( dport = :80 or sport = :80 )'
# 显示TCP协议下已建立的连接
ss -t state established

2 Linux测试网络

用户访问网络服务的前提是网络连接处于正常状态。若网络连接不稳定,甚至无法连接,用户则无法正常访问网络服务。因此,当网络连接出现问题时,需要通过测试网络连接的命令来确定故障点。

2.1 ping 命令

用于测试网络连通性

  • 向目标主机持续地发送测试数据包,并显示反馈结果
    • 连接正常时会收到返回的数据包。
    • 若不能获得从目标主机发回的反馈数据包,则表示在本机到目标主机之间存在网络连通性故障。
      • DestinationHost Unreachable:表示目的主机不可达,可能目标地址不存在或者主机已经关闭
      • Networkisunreachable:表示没有可用的路由记录(如默认网关),无法达到目标主机所在的网络
      • Request timeout:表示与目标主机间的连接超时(数据包响应缓慢或丢失、目标主机有严格的防火墙限制)
# ping IP地址
ping 192.168.40.1
# ping 域名	指定请求次数4次
ping www.baidu.com -c 4

2.2 traceroute命令

用于测试从当前主机到目的主机之间经过了哪些网络结点,并显示各中间结点的连接状态(响应时间)

对于无法响应的结点,连接状态将显示为“*”。

预设数据包大小是40Bytes,用户可另行设置。

apt install inetutils-traceroute
# 同网段的另一台虚拟机
traceroute 192.168.40.132
# 真机
traceroute 192.168.40.1
# 公网地址
traceroute www.baidu.com

traceroute 命令能够比ping 命令更加准确地定位网络连接的故障点(中断点),因此执行速度会比ping命令稍慢。

在网络测试与排错过程中,通常会先使用ping命令测试与目的主机的网络连接,如果发现网络连接有故障,再使用 traceroute 命令跟踪查看是在哪个中间结点存在故障。

2.3 nslookup命令

用来测试域名解析的专用工具,使用时只要指定要解析的目标域名作为参数即可

nslookup www.baidu.com
# 指定DNS服务器
nslookup www.baidu.com 114.114.114.114

结果包括:DNS服务器、DNS解析结果

no servers could be reached:表示不能连接到指定的DNS 服务器

can’t find xxx.yyy.zzz: NXDOMAIN:表示要查询的域名不存在

2.4 dig 命令

用来测试域名解析,相对于nslookup命令,dig 可以得到更多的域名信息。

dig 的全称是(domain informationgroper),它是一个用于查询 DNS 域名服务器的灵活的工具。大多数系统管理员都是利用 dig 作为DNS 问题的故障诊断工具,因为它具有灵活性好、易用、输出清晰等特点。

dig 命令最典型的用法就是查询单个主机的信息。

dig www.baidu.com
# 指定DNS服务器
dig www.baidu.com @114.114.114.114

如果不指定 DNS 服务器,默认会使用/etc/systemd/resolved.conf 里面的地址作为DNS服务器。

3 Linux设置网络地址

3.1 启用停止网卡

# 启用网卡
ip link set ens37 up
# 停用网卡
ip link set ens37 down

3.2 新增网卡地址

# 给网卡新增一个虚拟接口,用于设置IP地址
ip link add link ens37 br0 type vlan id 2

ip link add link:添加一个新的网络接口

ens33:指定要添加网络接口的物理接口

br0:新添加的网络接口名称

type vlan:指定创建一个VLAN类型的网络接口

id 2:VLAN ID为 2

# 删除虚拟接口
ip link delete br0

3.3 分配地址

在对服务器网络进行调试的过程中,有时候需要临时在同一个网卡上使用一个新的 IP地址,但是又不能覆盖原有IP地址而导致服务程序不可用。

这时可以为网卡绑定一个虚拟的网络接口,然后为虚拟接口设置新的 IP 地址(相当于一块网卡配多个IP地址)。

# 添加IP地址
ip addr add 192.168.40.120/24 broadcast 192.168.40.255 dev ens37
ip addr add 192.168.40.122/24 broadcast 192.168.40.255 dev br0

ip addr add:为指定设备添加IP地址

192.168.40.122/24:IP地址和子网掩码

broadcast 192.168.40.255:广播地址

dev br0:指定添加IP地址的端口

# 删除IP地址
ip addr del 192.168.40.122/24 broadcast 192.168.40.255 dev br0

如果之前已经有了一个IP地址并想要替换它,首先需要删除旧的IP地址,然后使用ip命令重新分配一个新的IP地址

# 修改IP
ip addr del 192.168.40.120/24 broadcast 192.168.40.255 dev ens37
ip addr add 192.168.40.121/24 broadcast 192.168.40.255 dev ens37

3.4 route 命令

不仅可以用于查看路由表信息,还可用来添加、删除静态的路由表条目,其中也包括设置默认网关地址(默认网关记录是一条特殊的静态路由条目)。

3.4.1 添加、删除指定网段的路由记录

  • 语法:route [操作] [选项]
    • 操作:
      • add:添加路由记录
      • del:删除路由记录
    • 选项:
      • -net:指定目标网段地址
      • gw:指定下一跳路由的IP地址
# 添加路由记录
route add -net 192.168.3.0/24 gw 192.168.40.1
# 查看路由记录
route -n
# 删除路由记录
route del -net 192.168.3.0/24

3.4.2 添加、删除默认网关记录

添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用“default”表示即可,无须再使用“-net”选项指明网段地址。

# 添加默认网关记录
route add default gw 192.168.40.1
# 删除默认网关记录
route del default gw 192.168.40.1

在同一个主机的路由表中只应有一条默认网关记录。

若同时存在多条默认网关记录,则可能导致该主机的网络连接出现故障。

3.5 修改主机名称

  • 通过修改配置文件/etc/hostname 来更改的主机名,重启生效
vim /etc/hostname
  • 通过hostnamectl 命令来修改主机名,立即生效
hostnamectl set-hostname ubuntu
  • 通过hostnameml修改主机名,临时修改
hostname ubuntu

3.6 网络配置文件

对于Ubuntu 17.10及更高版本,netplan是推荐的网络配置工具。

配置文件通常位于/etc/netplan/目录下,以YAML格式编写。

vim /etc/netplan/50-cloud-init.yaml
# 保存退出后加载配置	重启后会失效
netplan apply

创建一个名为ens37-netcfg.yaml的文件

vim /etc/netplan/ens37-netcfg.yaml
network:
    ethernets:
        ens37:
            addresses:
            - 192.168.40.121/24
            nameservers:
                addresses:
                - 114.114.114.114
                search: []
            routes:
            -   to: default
                via: 192.168.40.2
    version: 2
# 保存退出后加载配置	重启后会失效
netplan apply

3.7 域名解析配置文件

  • /etc/resolv.conf:指定为本机提供 DNS 解析的服务器地址
    • 文件中记录了本机默认使用的DNS 服务器的地址信息,对该文件所做的修改将会立刻生效。
    • Linux 操作系统中最多可以指定3个(第3 个以后的将被忽略)不同的DNS 服务器地址,优先使用第一个DNS 服务器。
  • /etc/hosts:本地主机映射文件
    • 文件中记录着一份主机名与 IP 地址的映射关系表,一般用来保存经常需要访问的主机的信息。
    • 当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到再去向DNS服务器查询。
    • hosts 文件只保存在本地,所以其中的映射记录也只适用于当前主机,而无法作用于整个网络。

你可能感兴趣的:(linux,网络,运维)