Linux常用命令--网络相关命令

摘要

  • 网络相关命令,如ping、ifconfig、netstat以及查看DNS、检查域名和证书的到期时间等等

  • 本文基于CentOS8(x86_64)

1.测试网络和服务的连通性

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 测试网络连通性
ping 192.168.36.49 -c 3 : -c 测试次数
ping 192.168.36.49 -c 3 -s 1000 : -s 发送icmp包的大小bytes

# ping 域名,可以查看到负载均衡器名及其分发到的ip
# 可以看到多次ping baidu的域名,得到了不同的ip地址
ping www.baidu.com
PING www.a.shifen.com (110.242.68.4) 56(84) bytes of data.
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=1 ttl=50 time=19.7 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=2 ttl=50 time=19.8 ms
64 bytes from 110.242.68.4 (110.242.68.4): icmp_seq=3 ttl=50 time=19.8 ms

ping www.baidu.com
PING www.a.shifen.com (110.242.68.3) 56(84) bytes of data.
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=1 ttl=49 time=19.6 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=2 ttl=49 time=19.6 ms
64 bytes from 110.242.68.3 (110.242.68.3): icmp_seq=3 ttl=49 time=19.6 ms

# 测试服务连通性
telnet 192.168.36.49 3306

禁止ping

  • 临时禁止,服务器重启后失效
1
echo "1" > /proc/sys/net/ipv4/icmp_echo_ignore_all
  • 永久禁止
1
2
3
4
5
6
vim /etc/sysctl.conf
在文件最后增加如下内容后保存退出
net.ipv4.icmp_echo_ignore_all = 1

使修改生效
sysctl -p

2.查看网络设置信息

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
ifconfig -a : 查看所有网卡信息
ifconfig eth0 : 查看指定网卡信息

ip a : 查看所有网卡信息

# 临时设置IP,重启机器或者重启network马上失效
ifconfig eth0 192.168.12.51

# 启用网卡
ifconfig eth0 up 或者 ifup eth0

# 禁用网卡
ifconfig eth0 down 或者 ifdown eth0

# 重启network
systemctl restart network

永久设置ip
vim /etc/sysconfig/network-scripts/ifcfg-网卡名称
比如网卡名称为eth0,则vim /etc/sysconfig/network-scripts/ifcfg-eth0

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
DEVICE=eth0 网卡对应的设备别名,如ifcfg-eth0第一块网卡

BOOTPROTO=static 网卡获得ip地址的方式,可是设置为 dhcp

BROADCAST=192.168.0.255 子网广播地址

GATEWAY=192.168.1.1 默认网关

IPADDR=192.168.1.117 网卡IP地址

IPV6INIT=no 是否启用IPV6

IPV6_AUTOCONF=no

NETMASK=255.255.255.0 网卡对应网络掩码

NETWORK=192.168.1.0 网卡对应的网络地址

ONBOOT=yes 系统启动时是否设置此网络接口,设置为yes时,系统启动时激活此设备。默认设置为yes

TYPE=Ethernet 网卡的类型

3.查看进程端口

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
netstat -tunpl : 查看端口是否启动,或者查看占用端口的进程

-t 或 --tcp:显示所有TCP网络连接。
-u 或 --udp:显示所有UDP网络连接。
-n 或 --numeric:直接使用IP地址而不是主机名显示网络连接,使用端口号而不是服务名显示本地和远程地址。这样可以避免网络查找而加快命令的执行速度。
-p 或 --programs:显示每个套接字/网络连接对应的进程。
-l 或 --listening:只显示处于监听状态的套接字(也就是说,只显示服务器的网络连接)。

# 执行netstat -tunpl命令后,你可能会看到如下的列:
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 1158/sshd
tcp6 0 0 :::3306 :::* LISTEN 777/mysqld
udp 0 0 172.19.230.128:68 0.0.0.0:* 598/systemd-network
udp 0 0 127.0.0.1:323 0.0.0.0:* 569/chronyd
udp6 0 0 :::546 :::* 598/systemd-network
udp6 0 0 ::1:323 :::* 569/chronyd

# 各列含义说明
Proto:协议名称,如TCP或UDP。
Recv-Q和Send-Q:分别表示接收和发送队列的大小。在理想情况下,这些数字应为0。如果不是,可能会有网络问题。有时服务进程活着呢,但是就是不能响应客户端的请求,此时就要查看Recv-Q是否不为0,不为0则说明可能服务端在处理接收到的数据时速度较慢,导致接收队列中的数据在等待处理。这可能是由于服务器负载过重、资源不足或者应用程序本身存在性能问题,也可能是网络延迟导致的系统瓶颈,总之此时服务端已经不能响应客户端的请求了。
Local Address:本地端点的IP地址和端口号。
Foreign Address:远程端点的IP地址和端口号。如果该连接处于监听状态,这里将显示为0.0.0.0:*或:::*。
State:网络连接的状态。对于TCP,可能的状态包括LISTEN、ESTABLISHED、CLOSE_WAIT等。对于UDP或处于监听状态的网络连接,这一列为空。
PID/Program name:创建该网络连接的进程ID和程序名称。如果没有相应的权限,这一列可能为空。

条件过滤示例,只显示指定进程或端口的信息:
netstat -tunpl | grep sshd
netstat -tunpl | grep 3306

4.查看DNS

8.1 查看DNS

1
2
3
4
5
6
7
8
# 方法1
cat /etc/resolv.conf

# 方法2
nslookup localhost

# 方法3
dig

8.2 设置DNS

1
2
3
4
5
6
7
vim /etc/resolv.conf
# 可以设置多个DNS,优先级从上到下
nameserver xxx.xxx.xxx.xxx
nameserver xxx.xxx.xxx.xxx

# 重启网络
systemctl restart network

5.检查域名到期时间

1
whois baidu.com | grep -E '(Expiry Date|Expiration Time)'

6.检查域名绑定的证书到期时间

1
echo | openssl s_client  -connect  www.baidu.com:443 2>/dev/null | openssl x509 -noout -dates | awk -F'=' 'NR==2{print $2}'

7.设置HOSTNAME

1
2
3
4
5
6
7
8
# 查看HOSTNAME
hostname 或者 hostnamectl

# 临时设置,重启后失效
hostname newName

# 永久立即生效,不需要重启
hostnamectl set-hostname newName

8.路由

1
2
3
4
5
# 查看路由列表
route -n

# 添加路由规则,这里表示当前服务器要访问172.20.0.0/24这个网段的ip要去路由器192.168.10.20上查找
route add -net 172.20.0.0/24 gw 192.168.10.20 dev eth0