上篇文章介绍了windows常用的网络命令,这篇来介绍Linux的。当然由于云计算、容器技术的发展,Linux环境网络命令越来越多、越来越复杂,这里只介绍网工常用的几个命令,比如ifconfig、ping、traceroute等。而像veth、peer等命令不在此讨论,等以后找机会专门介绍虚拟网络相关技术。
1. net-tools和iproute2
这篇文章不是介绍Linux操作系统的,所以本来不打算写这部分,但是发现很多人对Linux系统了解的太少了,以至于不知道为什么在有些Linux系统中ifconfig提示“未找到命令”。
net-tools起源于BSD的TCP/IP工具箱,后来成为老版本Linux内核中配置网络功能的工具,如今很多系统管理员依然习惯通过组合使用诸如ifconfig、route、arp和netstat等命令来配置网络功能、解决网络故障。但自2001年起,Linux社区已经对其停止维护,甚至一些Linux发行版比如Arch Linux和 /RHEL 7则已经完全抛弃了net-tools,只支持iproute2,对于网络配置工具而言,iproute2的出现旨在从功能上取代net-tools。
net-tools和iproute2命令的大致对比如下:
现在,大家知道如果没有ifconfig,可以尝试用ip addr show来查询网络配置。
2. ifconfig/ip addr show命令
ifconfig/ip addr show命令可查看电脑ip参数配置信息,如ip地址、mac地址等。
3. ping命令
ping命令用于检测网络连通性,通过ping统计结果判断网络状态。Ping是工作在 TCP/IP网络体系结构中应用层的一个服务命令,主要是向特定的目的主机发送 ICMP(Internet Control Message Protocol 因特网报文控制协议)Echo 请求报文,测试目的站是否可达及了解其有关状态。根据ping包的结果,可以判断整个网络链路哪个环节出了问题。
linux下的ping和windows下的ping稍有区别,linux下ping不会自动终止,需要按ctrl+c终止或者用参数-c指定要求完成的回应次数。
-c | 设置请求包的数量 |
-s | 设置请求包的大小 |
-I | 设置使用的源地址 |
4. traceroute命令
traceroute(跟踪路由)命令用于确定 ip 数据包访问目标所经过的网络路径。
linux下的traceroute和windows下的tracert稍有区别,Windows下的tracert使用ICMP协议,而linux下的traceroute使用UDP协议,如果想使用ICMP协议,可以使用-I。
5. nslookup/dig命令
nslookup/dig命令用于解析域名,查询DNS的记录,在网络故障的时候用来诊断网络问题。如果网络异常或无法收到dns服务器发来的消息,就无法解析出域名对应的ip地址。
两者格式稍有不同,命令格式:
- nslookup domain [dns-server]
- dig @dns-server domain
6. arp/ip neigh命令
arp/ip neigh(地址解析协议)命令用于操作主机的arp缓冲区,它可以显示arp缓冲区中的所有条目,删除指定的条目或者添加。
常用参数配置
arp -a | 显示缓存中所有的arp表项 |
arp -a ip | 查看指定ip地址的arp表项 |
arp -s ip mac | 手动添加一条arp静态表项 |
arp -d ip | 删除一条arp表项 |
ip neigh | 显示缓存中所有的arp表项 |
ip neigh ip | 查看指定ip地址的arp表项 |
ip neigh add ip mac | 手动添加一条arp静态表项 |
ip neigh del ip | 删除一条arp表项 |
7. route/ip route命令
route/ip route命令用来显示、人工添加和修改路由表项。
常用参数配置
route print | 显示路由表中的当前项目 |
route add | 添加一条路由到路由表 |
route change | 修改一条路由到路由表 |
route delete | 从路由表中删除一条路由 |
ip route list | 显示路由表中的当前项目 |
ip route add | 添加一条路由到路由表 |
ip route change | 修改一条路由到路由表 |
ip route del | 从路由表中删除一条路由 |