6 Linux 常用命令(五)常用网络命令

6.1 ifconfig命令

ifconfig命令最主要的作用就是查看IP地址的信息,直接输入ifconfig命令即可。在CentOS 7.x中ifconfig命令默认没有安装,如果需要使用,需要安装net-tools软件包。

  • 命令名称:ifconfig。

  • 英文原意:configure a network interface。

  • 所在路径:/sbin/ifconfig。

  • 执行权限:超级用户。

功能描述:配置网络接口。

[root@localhost ~]# ifconfig

示例:

[root@localhost ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
#标志 最大传输单元
      inet 172.17.32.17 netmask 255.255.240.0 broadcast 172.17.47.255
      #IP地址 子网掩码 广播地址
      inet6 fe80::5054:ff:fe87:22ab prefixlen 64 scopeid 0x20<link>
       #IPv6地址(目前没有生效)
      ether 52:54:00:87:22:ab txqueuelen 1000 (Ethernet)
       #MAC地址
      RX packets 181113 bytes 21611036 (20.6 MiB)
      RX errors 0 dropped 0 overruns 0 frame 0
       #接收的数据包情况
      TX packets 181670 bytes 32158693 (30.6 MiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
       #发送的数据包情况

lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
#本地回环网卡
      inet 127.0.0.1 netmask 255.0.0.0
      inet6 ::1 prefixlen 128 scopeid 0x10<host>
      loop txqueuelen 1000 (Local Loopback)
      RX packets 34377459 bytes 7285224334 (6.7 GiB)
      RX errors 0 dropped 0 overruns 0 frame 0
      TX packets 34377459 bytes 7285224334 (6.7 GiB)
      TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0

6.2 ping命令

ping是常用的网络命令,主要通过ICMP协议进行网络探测,测试网络中主机的通信情况。其基本信息如下。

  • 命令名称:ping。

  • 英文原意:send ICMP ECHO_REQUEST to network hosts。

  • 所在路径:/bin/ping。

  • 执行权限:所有用户。

功能描述:向网络主机发送ICMP请求。

[root@localhost ~]# ping [选项] [ip地址或域名]
选项:
-b: 后面加入广播地址,用于对整个网段进行探测
-c 次数: 用于指定ping的次数
-s 字节: 指定探测包的大小

示例:

[root@localhost ~]# ping -b -c 3 www.baidu.com

6.3 netstat命令

netstat是网络状态查看命令,既可以查看到本机开启的端口,也可以查看有哪些客户端连接。在CentOS 7.x中netstat命令默认没有安装,如果需要使用,需要安装net-snmp和net-tools软件包。

  • 命令名称:netstat。

  • 英文原意:Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships。

  • 所在路径:/bin/netstat。

  • 执行权限:所有用户。

功能描述:输出网络连接、路由表、接口统计、伪装连接和组播成员。

[root@localhost ~]# netstat [选项]
选项:
-a: 列出所有网络状态,包括Socket程序
-c 秒数: 指定每隔几秒刷新一次网络状态
-n: 使用IP地址和端口号显示,不使用域名与服务名
-p: 显示PID和程序名
-t: 显示使用TCP协议端口的连接状况
-u: 显示使用UDP协议端口的连接状况
-l: 仅显示监听状态的连接
-r: 显示路由表

示例:

[root@localhost ~]# netstat -anput
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address     Foreign Address     State       PID/Program name  
#协议 接收队列 发送队列 本机的IP地址及端口号 远程主机的IP地址及端口号 状态
tcp        0      0 127.0.0.1:19206         0.0.0.0:*     LISTEN      4185/yudian_websvr
tcp        0      0 172.17.32.17:20006      0.0.0.0:*     LISTEN      3399/SrvMgr      
tcp        0      0 172.17.32.17:28070      0.0.0.0:*     LISTEN      3048/conn_mgr    
tcp        0      0 127.0.0.1:19207         0.0.0.0:*     LISTEN      4264/yudian_websvr
tcp        0      0 127.0.0.1:19208         0.0.0.0:*     LISTEN      4211/yudian_websvr
tcp        0      0 172.17.32.17:8008       0.0.0.0:*     LISTEN      1161/python3      

这个命令的输出较多。

  • Proto:网络连接的协议,一般就是TCP协议或者UDP协议。

  • Recv-Q:表示接收到的数据,已经在本地的缓冲中,但是还没有被进程取走。

  • Send-Q:表示从本机发送,对方还没有收到的数据,依然在本地的缓冲中,一般是不具备ACK标志的数据包。

  • Local Address:本机的IP地址和端口号。

  • Foreign Address:远程主机的IP地址和端口号。

  • State:状态。常见的状态主要有以下几种。

    • LISTEN:监听状态,只有TCP协议需要监听,而UDP协议不需要监听。

    • ESTABLISHED:已经建立连接的状态。如果使用“-l”选项,则看不到已经建立连接的状态。

    • SYN_SENT:SYN发起包,就是主动发起连接的数据包。

    • SYN_RECV:接收到主动连接的数据包。

    • FIN_WAIT1:正在中断的连接。

    • FIN_WAIT2:已经中断的连接,但是正在等待对方主机进行确认。

    • TIME_WAIT:连接已经中断,但是套接字依然在网络中等待结束。

    • CLOSED:套接字没有被使用。

在这些状态中,我们最常用的就是LISTEN和ESTABLISHED状态,一种代表正在监听,另一种代表已经建立连接。

6.4 write命令

write命令用于给指定用户发送信息

  • 命令名称:write。

  • 英文原意:send a message to all user。

  • 所在路径:/usr/bin/write。

  • 执行权限:所有用户。

功能描述:向其他用户发送信息

[root@localhost ~]# write [用户名] [远程终端]
# 消息内容

示例:

[root@localhost ~]#write user1 pts/1
hello
I will be in 5 minutes to restart, please save your data

6.5 wall命令

wall命令用于给所有登录用户发送信息

  • 命令名称:wall。

  • 英文原意:send a message to another user。

  • 所在路径:/usr/bin/wall。

  • 执行权限:所有用户。

功能描述:向所有用户发送信息

[root@localhost ~]# wall [消息内容]

示例:

[root@localhost ~]# wall "I will be in 5 minutes to restart, please save your data"

6.6 telnet命令

telnet一般用于检测目标端口是否开放,在CentOS 7.x中netstat命令默认没有安装,如果需要使用,需要安装telnet软件包。

  • 命令名称:telnet

  • 英文原意:send a message to another user

  • 所在路径:/usr/bin/telnet

  • 执行权限:所有用户

功能描述:检测服务器端口是否开放

[root@localhost ~]# telnet [ip地址] [端口]

示例:

[root@localhost ~]# telenet 192.168.5.5 56