文章目录
netstat命令(显示本机网络连接、运行端口和路由表等信息)
root@localhost ~]# netstat -tlunp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7186/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 7383/master
tcp6 0 0 :::22 :::* LISTEN 7186/sshd
tcp6 0 0 ::1:25 :::* LISTEN 7383/master
udp 0 0 0.0.0.0:68 0.0.0.0:* 6899/dhclient
udp 0 0 127.0.0.1:323 0.0.0.0:* 6421/chronyd
udp6 0 0 ::1:323 :::* 6421/chronyd
#各字段释义
Proto:数据包的协议,分为TCP和UDP
Recv-Q:表示收到的数据已经在本地接受缓存,但是还没有被进程取走的数据包数量
Sent-Q:对方没有收到的数据包,或者没有ACK回复的,还在本地缓冲区的数据包数量
Local Address:本地IP:端口,通过端口可以知道本级开启了哪些服务
Foreign Address:远程主机:端口也就是远程那个IP使用哪个端口连接到本机
State:连接状态,主要是已经建立连接(ESTABLISEND)和监听两种状态(LISTEN)
PID/Program name:主要是进程ID和进程命令
[root@localhost ~]# netstat -an
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN
tcp 0 0 192.168.18.212:22 192.168.18.1:52993 ESTABLISHED
tcp 0 52 192.168.18.212:22 192.168.18.1:52909 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
udp 0 0 0.0.0.0:68 0.0.0.0:*
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp6 0 0 ::1:323 :::*
raw6 0 0 :::58 :::* 7
Active UNIX domain sockets (servers and established)
Proto RefCnt Flags Type State I-Node Path
unix 2 [ ACC ] SEQPACKET LISTENING 21520 /run/udev/control
unix 3 [ ] DGRAM 8979 /run/systemd/notify
unix 2 [ ] DGRAM 8981 /run/systemd/cgroups-agent
unix 2 [ ACC ] STREAM LISTENING 35610 /var/run/vmware/guestServicePipe
unix 2 [ ACC ] STREAM LISTENING 8999 /run/systemd/journal/stdout
unix 5 [ ] DGRAM 9002 /run/systemd/journal/socket
#各字段释义
Proto:协议,一般为unix
RefCnt:连接到此Socket的进程数量
Flags:连接标识
Type:Socket访问类型
State:连接状态,已经建立连接(ESTABLISHED)和监听两种状态(LISTEN)
I-Node:程序文件的Inode号
Path:Socket程序的路径,或者相关数据的输出路径
寻找特定程序运行的端口
[root@localhost ~]# netstat -nltp|grep sshd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 7186/sshd
tcp6 0 0 :::22 :::* LISTEN 7186/sshd
列出所有的tcp协议的端口
[root@localhost ~]# netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost.localdoma:ssh 192.168.18.1:52993 ESTABLISHED
tcp 0 52 localhost.localdoma:ssh 192.168.18.1:52909 ESTABLISHED
查看本机路由信息
[root@localhost ~]# netstat -r
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
default gateway 0.0.0.0 UG 0 0 0 ens33
default gateway 0.0.0.0 UG 0 0 0 ens33
link-local 0.0.0.0 255.255.0.0 U 0 0 0 ens33
192.168.18.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
192.168.18.0 0.0.0.0 255.255.255.0 U 0 0 0 ens33
#状态说明
CLOSED:初始(无连接)状态
LISTEN:监听状态,等待远程机器的连接请求
SYN_SEND:在TCP三次握手期间,主动连接端发送了SYN包后,进入SYN_SEND状态,等待对方的ACK包
SYN_RECV:在TCP三次握手期间,主动连接端收到SYN包后,进入SYN_RECV状态。
ESTABLISHED:完成TCP三次握手后,主动连接端进入ESTABLISHED状态。此时,TCP连接已经建立,可以进行通信。
FIN_WAIT_1:在TCP四次挥手时,主动关闭端发送FIN包后,进入FIN_WAIT_1状态。
FIN_WAIT_2:在TCP四次挥手时,主动关闭端收到ACK包后,进入FIN_WAIT_2状态。
TIME_WAIT:在TCP四次挥手时,主动关闭端发送ACK包之后,进入TIME_WAIT状态,等待最多MSL时间,让被动关闭端收到ACK包。
CLOSING:在TCP四次挥手期间,主动关闭端发送了FIN包后,没有收到对应的ACK包,却受到了对方的FIN包,此时,进入CLOSING状态。
CLOSE_WAIT:在TCP四次挥手期间,被动关闭端收到FIN包后,进入CLOSE_WAIT状态。
LAST_ACK:在TCP四次挥手时,被动关闭端发送FIN包后,进入LAST_ACK状态,等待对方的ACK包。
ss命令
ss命令用于显示socket状态,可以显示packet socket,tcp socket,udp socket,dccp socket等,是一个非常实用、快速、有效的跟踪IP连接和socket的新工具。
它可检测到如下信息:
- 所有的TCP sockets
- 所有的UDP sockets
- 所有的ssh/ftp/https持久连接
- 所有连接到xshell的本地进程
- 使用state(如:connected,synchronized,SYN-RECV,SYN-SENT,TIME-WAIT)、地址、端口过滤
- 所有的state FIN-WAIT-1 TCP socket连接等
常用选项
-t | tcp协议的连接 |
---|---|
-u | udp协议的连接 |
-l | 监听状态的连接 |
-a | 所有状态的连接 |
-e | 显示扩展信息 |
-m | 显示套接连接使用的内存信息 |
-p | 进程及UDP |
-n | 数字格式显示 |
查看所有tcp协议的连接
[root@localhost ~]# ss -ta
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:ssh *:*
LISTEN 0 100 127.0.0.1:smtp *:*
ESTAB 0 52 192.168.18.212:ssh 192.168.18.1:59971
LISTEN 0 128 :::ssh :::*
LISTEN 0 100 ::1:smtp :::*
查看所有协议监听以及列出进程号
[root@localhost ~]# ss -nltup
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 *:68 *:* users:(("dhclient",pid=6713,fd=6))
udp UNCONN 0 0 *:68 *:* users:(("dhclient",pid=6722,fd=6))
udp UNCONN 0 0 127.0.0.1:323 *:* users:(("chronyd",pid=6525,fd=1))
udp UNCONN 0 0 ::1:323 :::* users:(("chronyd",pid=6525,fd=2))
tcp LISTEN 0 128 *:22 *:* users:(("sshd",pid=7058,fd=3))
tcp LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=7172,fd=13))
tcp LISTEN 0 128 :::22 :::* users:(("sshd",pid=7058,fd=4))
tcp LISTEN 0 100 ::1:25 :::* users:(("master",pid=7172,fd=14))
查看所有基于ssh建立连接的信息
[root@localhost ~]# ss -o state established '( dport = :ssh or sport = :ssh )'
Netid Recv-Q Send-Q Local Address:Port Peer Address:Port
tcp 0 52 192.168.18.212:ssh 192.168.18.1:59971 timer:(on,243ms,0)
获取当前主机到目的主机所经过的路由(网关)
traceroute命令
通过traceroute我们可以知道信息从你的计算机到互联网另一端的主机是走的什么路径。当然每次数据包由某一同样的出发点(source)到达某一同样的目的地(destination)走的路径可能会不一样,但基本上来说大部分时候所走的路由是相同的。linux系统中,我们称之为traceroute,在MS Windows中为tracert。 traceroute通过发送小的数据包到目的设备直到其返回,来测量其需要多长时间。一条路径上的每个设备traceroute要测3次。输出结果中包括每次测试的时间(ms)和设备的名称(如有的话)及其IP地址。
[root@localhost ~]# traceroute 192.168.18.21
traceroute to 192.168.18.21 (192.168.18.21), 30 hops max, 60 byte packets
1 192.168.18.21 (192.168.18.21) 0.788 ms !X 0.561 ms !X 0.399 ms !X
[root@localhost ~]# traceroute www.baidu.com
traceroute to www.baidu.com (103.235.46.39), 30 hops max, 60 byte packets
1 gateway (192.168.18.2) 0.408 ms 0.432 ms 0.334 ms
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
...
以上出现很多*号这样的情况,可能是防火墙封掉了ICMP的返回信息,所以我们得不到什么相关的数据包返回数据。
mtr命令
在Linux中有一个更好的网络连通性判断工具,它可以结合ping nslookup tracert 来判断网络的相关特性,这个命令就是mtr
例:
mtr 104.193.88.123 (www.baidu.com)
已报告模式显示
[root@localhost ~]# mtr -r 192.168.18.21
Start: Fri Nov 27 10:05:50 2020
HOST: localhost.localdomain Loss% Snt Last Avg Best Wrst StDev
1.|-- 192.168.18.21 0.0% 10 1.2 2.2 0.5 13.0 3.7
wget命令(从网络上下载软件)
wget是一个从网络上自动下载文件的工具。所谓的自动下载是指,CentOS wget可以在用户退出系统的之后在后台执行。wget下载数据的时候使用的协议可以是http,https,ftp三种协议。使用wget命令时的输出信息中可以看到本地下载使用的什么协议。
下载后重命名
[root@localhost ~]# wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
下载时,不显示详细信息,即在后台下载。
命令执行后会,下载的详细信息不会显示在终端,会在当前目录下生成一个web-log记录下载的详细信息。
[root@localhost ~]# wget -O yum.repo -b https://mirrors.aliyun.com/repo/Centos-7.repo
继续在后台运行,pid 为 7646。
将把输出写入至 “wget-log”。
下载时,不显示详细信息,同时将下载信息保存到文件中
[root@localhost ~]# wget -o file1 https://mirrors.aliyun.com/repo/Centos-7.repo
wget -c:
重新启动下载中断的文件,对于我们下载大文件时突然由于网络等原因中断非常有帮助,我们可以继续接着下载而不是重新下载一个文件。
scp命令(不同系统间拷贝)
scp是一个基于SSH的不同Linux系统间相互拷贝文件或目录的工具。scp是有security的文件copy,基于ssh登录,也就是它实际上是使用ssh协议。
[root@localhost ~]# scp file root@192.168.18.21:/tmp/
root@192.168.18.21's password:
file 100% 9 7.0KB/s 00:00
递归复制目录
[root@localhost ~]# scp -r etc root@192.168.18.21:/tmp/
root@192.168.18.21's password:
passwd 100% 1311 42.6KB/s 00:00
passwd.zip 100% 634 50.1KB/s 00:00
iproute家族
ip-link
与ifconfig作用一样
[root@localhost ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:af:89:a5 brd ff:ff:ff:ff:ff:ff
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:af:89:af brd ff:ff:ff:ff:ff:ff
示例1:启动/关闭网卡
[root@localhost ~]# ifconfig ens37 down #关闭网卡ens37
[root@localhost ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:af:89:a5 brd ff:ff:ff:ff:ff:ff
3: ens37: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN mode DEFAULT group default qlen 1000
link/ether 00:0c:29:af:89:af brd ff:ff:ff:ff:ff:ff
[root@localhost ~]# ip link set ens37 up #启动网卡ens37
[root@localhost ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:af:89:a5 brd ff:ff:ff:ff:ff:ff
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:af:89:af brd ff:ff:ff:ff:ff:ff
示例2:修改MAC地址
[root@localhost ~]# ip link set dev ens37 address 00:01:4f:00:15:f1
-s选项出现两次或多次,ip会输出更为详细的错误信息统计。这个命令等于传统的ifconfig ens37
[root@localhost ~]# ip -s -s link ls ens37
3: ens37: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:af:89:af brd ff:ff:ff:ff:ff:ff
RX: bytes packets errors dropped overrun mcast
10436 80 0 0 0 0
RX errors: length crc frame fifo missed
0 0 0 0 0
TX: bytes packets errors dropped carrier collsns
5152 36 0 0 0 0
TX errors: aborted fifo window heartbeat transns
0 0 0 0 4