网络状态查看工具
两套工具,centos7之前net-tools,之后 iproute2.
- 网卡命名规则受biosdevname和net.ifnames两个参数影响
- 编辑/etc/default/grub文件,增加biosdevname=0 net.ifnames=0
实际上自己的虚拟机相应位置没有这两个参数。
- 更新grub # grub2-mkconfig -o /boot/grub2/grub.cfg
- 这个/etc/default/grub文件是给用户看的,不是用于系统启动时读取的。
grub2-mkconfig -o /boot/grub2/grub.cfg
查看网卡物理连接状况
mii-tool eth0(网卡名称)
[oracle@localhost /etc/default]$ sudo mii-tool eno16777736
[sudo] password for oracle:
eno16777736: negotiated 1000baseT-FD flow-control, link ok
eno16777736: negotiated 1000baseT-FD flow-control, link ok
这条消息表示网卡 eno16777736
已成功协商到了 1000 兆位每秒的全双工模式(1000baseT-FD),并且流控制已启用,连接正常。
1000baseT-FD
表示网卡连接速度为 1000 兆位每秒(即 Gigabit Ethernet),全双工模式表示网卡可以同时发送和接收数据。flow-control
是一种网络流控制机制,用于控制数据传输的速率,避免数据丢失和网络拥塞。link ok
表示网卡与网络设备之间的物理连接正常,可以进行数据传输。
查看网关
route -n 使用-n参数不解析主机名
[oracle@localhost /etc/default]$ route -n # 显示路由表信息
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.88.2 0.0.0.0 UG 100 0 0 eno16777736
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eno16777736
192.168.88.0 0.0.0.0 255.255.255.0 U 100 0 0 eno16777736
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
Destination
:目的地网络地址。Gateway
:下一跳网关地址。Genmask
:子网掩码。Flags
:标志,U
表示路由是有效的。Metric
:路由的优先级,数字越小优先级越高。Ref
:路由的引用计数。Use
:路由被使用的次数。Iface
:路由所使用的网络接口。
根据您提供的路由表信息,可以看到以下几条路由信息:
0.0.0.0
到192.168.88.2
的路由,使用eno16777736
网卡作为出口,表示默认路由。169.254.0.0
到0.0.0.0
的路由,使用eno16777736
网卡作为出口,这是一个本地链路路由。192.168.88.0
到0.0.0.0
的路由,使用eno16777736
网卡作为出口,表示到达192.168.88.0/24
子网的路由。192.168.122.0
到0.0.0.0
的路由,使用virbr0
网桥作为出口,表示到达192.168.122.0/24
子网的路由。
这些路由信息描述了数据包在网络中的传输路径,其中默认路由用于发送到不在本地子网的数据包,本地链路路由用于本地通信,其他路由用于到达特定子网的数据包。
网络配置命令
ifconfig <接口> <IP地址> [netmask 子网掩码] # 设置ip或子网掩码
ifup <接口> ifdown <接口> # 开启、关闭网卡
接口就是网卡名
route add default gw <网关ip>
route add -host <指定ip> gw <网关ip>
route add -net <指定网段> netmask <子网掩码> gw <网关ip>
ip addr ls # 相当于ifconfig
ip link set dev eth0 up # 相当于ifup eth0
ip addr add 10.0.0.1/24 dev eth1 # 相当于 ifconfig eth1 10.0.0.1 netmask 255.255.255.0
ip route add 10.0.0/24 via 192.168.0.1 # 相当于route add -net 10.0.0.0 netmask 255.255.255.0 gw 192.168.0.1
网络故障排除
相关命令 ping traceroute mtr nslookup telnet tcpdump netstat ss
以下是关于网络诊断和管理的常用命令的简要说明:
- ping:用于测试主机之间的连通性,发送 ICMP 回显请求并等待回应。
参数:-c <次数>:指定发送的 ICMP 请求次数。 -i <间隔>:设置发送 ICMP 请求的时间间隔。 - traceroute:跟踪数据包从本地主机到目标主机的路径,显示经过的路由器。
参数:-n:禁止将 IP 地址解析为主机名。 -m <最大跃点数>:设置最大跃点数。 - mtr:结合了
ping
和traceroute
的功能,连续跟踪目标主机的路径并显示丢包率等信息。
参数:-c <次数>:指定连续发送的数据包次数。 - nslookup:用于查询 DNS 记录,解析域名到 IP 地址或反向解析 IP 地址到域名。
- telnet:用于远程登录到另一台主机,测试端口连接和网络服务是否可用。
- tcpdump:网络数据包分析工具,用于捕获和分析网络数据包,查看网络流量和协议信息。
参数:-i <接口>:指定要监听的网络接口。-n:禁止将 IP 地址解析为主机名。 - netstat:显示网络连接、路由表、接口统计等信息,用于监视网络状态。
参数:-t:显示 TCP 连接。-n:禁止将 IP 地址和端口号解析为主机名和服务名,直接显示数字形式。-p:显示建立相关连接的进程名称。-l:仅显示监听状态的连接。 - ss:
netstat
的现代替代工具,显示套接字统计信息,更高效和功能更强大。
参数:-t:显示 TCP 连接。-u:显示 UDP 连接。-l:显示监听的端口。
示例:
ping -c 4 google.com # :向 google.com 发送 4 个 ICMP 请求。
traceroute -n google.com #:跟踪到 google.com 的路径,IP 地址格式显示。
mtr -c 5 google.com # :连续跟踪到 google.com 的路径 5 次。
nslookup google.com #:查询 google.com 的 DNS 记录。
telnet google.com 80 # :尝试连接到 google.com 的 80 端口。
tcpdump -i eno16777736 -n # :监听 eno16777736 网卡的数据包。
netstat -tuln # :显示所有 TCP 和 UDP 的监听端口。
ss -tuln # :显示所有 TCP 和 UDP 的监听端口。
网络服务管理和配置文件
-
NetworkManager:
- 配置文件位置:
/etc/NetworkManager/NetworkManager.conf
:主配置文件。/etc/NetworkManager/system-connections/
:存储各个网络连接的配置文件。
- 管理命令:
- 使用
nmcli
和nmtui
进行网络管理。
- 使用
- 配置文件位置:
-
传统网络服务(如
network
):- 配置文件位置:
/etc/network/interfaces
:Debian/Ubuntu 系统的网络接口配置文件。/etc/sysconfig/network-scripts/ifcfg-*
:CentOS/RHEL 系统的网络接口配置文件。
- 示例配置(Debian/Ubuntu):
auto eth0 iface eth0 inet static address 192.168.1.2 netmask 255.255.255.0 gateway 192.168.1.1
- 示例配置(CentOS/RHEL):
DEVICE=eth0 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.1.2 NETMASK=255.255.255.0 GATEWAY=192.168.1.1
- 配置文件位置:
重启网络服务
-
NetworkManager:
sudo systemctl restart NetworkManager
-
传统网络服务:
sudo systemctl restart networking
开关 Network 和 NetworkManager 服务
-
Network:
- 在大多数 Linux 发行版中,传统的网络服务通常由
network
或networking
服务管理。 - 启动服务:
sudo systemctl start networking
- 停止服务:
sudo systemctl stop networking
- 重启服务:
sudo systemctl restart networking
- 在大多数 Linux 发行版中,传统的网络服务通常由
-
NetworkManager:
- 启动服务:
sudo systemctl start NetworkManager
- 停止服务:
sudo systemctl stop NetworkManager
- 重启服务:
sudo systemctl restart NetworkManager
- 启动服务:
检查服务状态
- 检查服务状态:
sudo systemctl status NetworkManager
sudo systemctl status networking