目录
一、netstat命令
输出介绍
常用命令参数
用法:
二、ss命令
常用命令参数
例
三、跟踪数据包命令
四、域名解析
设置主机DNS地址的三种方式
Netstat是控制台命令,是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。Netstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。
netstat的输出结果可以分为两个部分
1、Active Internet connections 有源TCP连接,其中"Recv-Q"和"Send-Q"指接收队列和发送队列。这些数字一般都应该是0。如果不是则表示软件包正在队列中堆积。这种情况只能在非常少的情况见到。
2、Active UNIX domain sockets 有源Unix域套接口(和网络套接字一样,但是只能用于本机通信,性能可以提高一倍)。
Proto:显示连接使用的协议。
RefCnt:表示连接到本套接口上的进程号。
Types:显示套接口的类型。
State:显示套接口当前的状态。
Path:表示连接到套接口的其它进程使用的路径名。
-n | 以数字的形式显示相关的主机地址、端口等信息 |
-r | 显示路由表信息 |
-a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口) |
-l | 显示处于监听(Listening)状态的网络连接及端口信息。 |
-t | 查看 TCP(Transmission Control Protocol,传输控制协议)相关的信息。 |
-u | 显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息。 |
-p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限
①通常使用“-anpt”或“-anpu”组合选项,以数字形式显示当前系统中所有的 TCP 和UDP连接信息,同时显示对应的进程信息
②配合管道符grep过滤出特定的记录
例
[root@ky17 bao]# netstat -anpt |grep sshd 查看sshd端口的网络连接状态
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 8970/sshd
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 9675/sshd: bao@pts/
tcp 0 52 192.168.247.17:22 192.168.247.1:56584 ESTABLISHED 9673/sshd: bao [pri
tcp6 0 0 :::22 :::* LISTEN 8970/sshd
tcp6 0 0 ::1:6010 :::* LISTEN 9675/sshd: bao@pts/
[root@ky17 bao]# netstat -ant |wc -l 直接统计tcp数量监听的数量
16
ss 是 Socket Statistics 的缩写,也可以查看网络的状态。ss 命令可以用来获取 socket 统计信息,它显示的内容和 netstat 类似。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快。当服务器的 socket 连接数量变得非常大时,无论是使用 netstat 命令还是直接 cat /proc/net/tcp,执行速度都会很慢。ss 命令利用到了 TCP 协议栈中 tcp_diag。tcp_diag 是一个用于分析统计的模块,可以获得 Linux 内核中第一手的信息,因此 ss 命令的性能会好很多。
套接字(socket)是一个抽象层,应用程序可以通过它发送或接收数据,可对其进行像对文件一样的打开、读写和关闭等操作。套接字允许应用程序将I/O插入到网络中,并与网络中的其他应用程序进行通信。网络套接字是IP地址与端口的组合。
Socket(套接字)可以看成是两个网络应用程序进行通信时,各自通信连接中的端点,这是一个逻辑上的概念。它是网络环境中进程间通信的API(应用程序编程接口),也是可以被命名和寻址的通信端点,使用中的每一个套接字都有其类型和一个与之相连进程。
-h:--help 通过该选项获取更多的使用帮助。
-V:--version 显示软件的版本号。
-t:--tcp 显示 TCP 协议的 sockets。
-u:--udp 显示 UDP 协议的 sockets。
-n:--numeric 不解析服务的名称,如 "22" 端口不会显示成 "ssh",只会显示22 。
-l:--listening 只显示处于监听状态的端口。
-p:--processes 显示监听端口的进程。
-a: --all 对 TCP 协议来说,既包含监听的端口,也包含建立的连接。
-r: --resolve 把 IP 解释为域名,把端口号解释为协议名称。
-o 选项可用于显示计时器信息
-w 用于字符串精确匹配
[root@ky17 bao]# ss -tn | grep -w 22 查看22端口的连接状态
ESTAB 0 52 192.168.247.17:22 192.168.247.1:61035
[root@ky17 bao]# ss -tnl sport le 500 查看端口号小于500的端口信息
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:*
LISTEN 0 5 192.168.122.1:53 *:*
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
LISTEN 0 128 :::111 :::*
LISTEN 0 128 :::22 :::*
LISTEN 0 100 ::1:25 :::*
[root@ky17 bao]# ss -tnl sport ge 500 查看端口号大于500的端口信息
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:6000 *:*
LISTEN 0 128 127.0.0.1:631 *:*
LISTEN 0 128 127.0.0.1:6010 *:*
LISTEN 0 128 :::6000 :::*
LISTEN 0 128 ::1:631 :::*
LISTEN 0 128 ::1:6010 :::*
跟踪数据包的路由途径:traceroute
若服务器上没有 traceroute 命令,可通过 yum 方式安装 traceroute 软件包
traceroute 命令可以用于测试从当前主机到目的主机之间经过了哪些网络结点,并显示各中间结点的连接状态(响应时间)。对于无法响应的结点,连接状态将显示为“*”
traceroute + 目标IP
例
[root@ky17 bao]# traceroute 127.0.0.1
traceroute to 127.0.0.1 (127.0.0.1), 30 hops max, 60 byte packets
1 localhost (127.0.0.1) 0.061 ms 0.009 ms 0.006 ms
nslookup + DNS服务器地址 (如百度)
例
[root@ky17 bao]# nslookup www.baidu.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
www.a.shifen.com canonical name = www.wshifen.com.
Name: www.wshifen.com
Address: 103.235.46.39
vi /etc/resolv.conf
search localdomain
nameserver 202.106.0.20
nameserver 202.106.148.1
resolv.conf 文件中的“search localdomain”行用来设置默认的搜索域(域名扩展名)。
例如,当访问主机“localhost”时,就相当于访问“localhost.localdomain”。
一行一个DNS,最多配置三个DNS
/etc/resolv.conf 文件中记录了本机默认使用的 DNS 服务器的地址信息,对该文件所做 的修改将会立刻生效。Linux 操作系统中最多可以指定 3 个(第 3 个以后的将被忽略)不同 的 DNS 服务器地址,优先使用第一个 DNS 服务器。
本地主机映射文件
文件中记录着一份主机名与 IP 地址的映射关系表,一般用来保存经常需要访问的主机的信息。当访问一个未知的域名时,先查找该文件中是否有相应的映射记录,如果找不到再去向 DNS 服务器查询。
在/etc/hosts 文件中添加“119.75.218.70 www.baidu.com”的映射记录,则当访问网站 www.baidu.com 时,将会直接向 IP 地址 119.75.218.70 发送 Web 请求,省略了向 DNS