ifconfig 是一个常用的命令,用于显示或配置网络接口的参数。
在某些新的Linux发行版中,ifconfig命令默认不安装,已被 ip 命令所取代。
如果需要使用ifconfig,可以在系统中安装net-tools包。
IP命令是一个网络工具,用于配置和管理网络接口和路由表。它是从早期的Unix系统中的ifconfig命令发展而来的。
ifconfig命令可以用于配置和管理网络接口,但是它的功能有限,不能管理路由表,因此IP命令应运而生。
在许多Linux和Unix系统中,IP命令已经取代了ifconfig命令,成为管理网络接口和路由表的主要工具。
# 显示当前所有网络接口信息
ip addr show
# 简写
ip a
# 查看指定网络接口信息
ip addr show ens33
最大传输单元
# 显示网络设备运行状态
ip link list
# 简写
ip l l
# 显示详细设备信息
ip -stats link list
# 简写
ip -s l l
查看当前主机的主机名,不用添加任何选项或参数
hostname
查看当前主机中的路由表信息
Linux 操作系统中的路由表决定着从本机向其他主机、其他网络发送数据的去向,是排除网络故障的关键信息。
route
# 将路由记录中的地址显示为数字形式
route -n
查看当前操作系统的网络连接状态、路由表、接口统计等信息
# 查看本机中是否有监听 TCP22 端口的服务程序
netstat -anpt | grep ":22"
# 显示详细的网络状况
netstat -a
# 显示当前UDP连接状况
netstat -nu
# 显示网卡列表
netstat -i
用于查看套接字统计信息的命令,功能类似于 netstat,但速度更快,提供更详细的网络连接状态信息。
ss 是 Socket Statistics(套接字统计)的缩写,用于显示和分析系统的网络连接状态。
ss 可以显示关于 TCP、UDP、UNIX套接字的详细信息,并支持丰富的过滤功能,用于调试网络、监控网络连接等。
# 显示所有套接字的详细信息
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
用户访问网络服务的前提是网络连接处于正常状态。若网络连接不稳定,甚至无法连接,用户则无法正常访问网络服务。因此,当网络连接出现问题时,需要通过测试网络连接的命令来确定故障点。
用于测试网络连通性
# ping IP地址
ping 192.168.40.1
# ping 域名 指定请求次数4次
ping www.baidu.com -c 4
用于测试从当前主机到目的主机之间经过了哪些网络结点,并显示各中间结点的连接状态(响应时间)
对于无法响应的结点,连接状态将显示为“*”。
预设数据包大小是40Bytes,用户可另行设置。
apt install inetutils-traceroute
# 同网段的另一台虚拟机
traceroute 192.168.40.132
# 真机
traceroute 192.168.40.1
# 公网地址
traceroute www.baidu.com
traceroute 命令能够比ping 命令更加准确地定位网络连接的故障点(中断点),因此执行速度会比ping命令稍慢。
在网络测试与排错过程中,通常会先使用ping命令测试与目的主机的网络连接,如果发现网络连接有故障,再使用 traceroute 命令跟踪查看是在哪个中间结点存在故障。
用来测试域名解析的专用工具,使用时只要指定要解析的目标域名作为参数即可
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:表示要查询的域名不存在
用来测试域名解析,相对于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服务器。
# 启用网卡
ip link set ens37 up
# 停用网卡
ip link set ens37 down
# 给网卡新增一个虚拟接口,用于设置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
在对服务器网络进行调试的过程中,有时候需要临时在同一个网卡上使用一个新的 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
不仅可以用于查看路由表信息,还可用来添加、删除静态的路由表条目,其中也包括设置默认网关地址(默认网关记录是一条特殊的静态路由条目)。
# 添加路由记录
route add -net 192.168.3.0/24 gw 192.168.40.1
# 查看路由记录
route -n
# 删除路由记录
route del -net 192.168.3.0/24
添加、删除默认网关记录时,与添加、删除静态路由记录的命令格式类似,但指定目标网段时只需简单地使用“default”表示即可,无须再使用“-net”选项指明网段地址。
# 添加默认网关记录
route add default gw 192.168.40.1
# 删除默认网关记录
route del default gw 192.168.40.1
在同一个主机的路由表中只应有一条默认网关记录。
若同时存在多条默认网关记录,则可能导致该主机的网络连接出现故障。
vim /etc/hostname
hostnamectl set-hostname ubuntu
hostname ubuntu
对于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