Linux常用命令之网络管理

本篇继续分享Linux中常用命令。主要分享Linux系统的网络管理相关的命令。

ifconfig命令——配置或显示网络接口信息


ifconfig命令用于配置网卡IP地址等网络参数或显示当前网络的接口状态,需要以root用户的身份来执行。

如果命令不存在则安装

yum install -y net-tools

使用ifconfig命令配置网卡信息仅会临时生效,重启网络或服务器就会失效。

选项:

up激活指定的网络接口
down 关闭指定的网络接口
hw设置网卡的MAC地址

操作:

# 查看所有已启动的网卡信息 ifconfig
# 查看eth0网卡信息ifconfig eth0
# 查看所有网卡信息(包括未开启的)ifconfig -a
# 启动eth1网卡ifconfig eth1 up
# 关闭eth1网卡ifconfig eth1 down
# 为网卡配置信息ifconfig eth0 172.16.1.30

# 为网卡配置多个IPifconfig eth0:0 172.16.1.28 netmask 255.255.255.0  up
ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.16.1.27 netmask 255.255.255.0 broadcast 172.16.1.255
inet6 fe80::ffaa:cae4:9cc0:3250 prefixlen 64 scopeid 0x20<link>
inet6 fe80::eb49:7220:1bb9:df4f prefixlen 64 scopeid 0x20<link>
inet6 fe80::21b6:b00:310a:19d3 prefixlen 64 scopeid 0x20<link>
ether 28:6e:d4:89:b3:85 txqueuelen 1000 (Ethernet) RX packets 5035132 bytes 609739285 (581.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0 TX packets 2070630 bytes 384120838 (366.3 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth0:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500

inet 172.16.1.28 netmask 255.255.255.0 broadcast 172.16.1.255
ether 28:6e:d4:89:b3:85 txqueuelen 1000 (Ethernet)

网卡的配置文件在/etc/sysconfig/network-scriprts/目录下。eth0对应的是ifcfg-eth0文件。

ifup命令——激活网络接口


ifup命令可读取配置文件/etc/sysconfig/network和/etc/sysconfig/network-scripts/ifcfg-<configuration>对网络接口进行相应的操作。

操作:

# 激活eth0网络接口,等同于
ifconfig eth0 upifup eth0   
# 查看eth0网络接口状态

ifconfig eth0

ifdown命令——用于禁用指定的网络接口


操作:

# 关闭eth0网卡接口,该操作导致断开SSH连接,谨慎操作
ifdown eth0
# 重启网卡

ifdown eth0 && ifup eth0

route命令——管理路由表


route命令可以为服务器设置静态路由。

选项:

-n查看路由信息
-ee显示更详细的路由信息
add添加路由信息
del删除路由信息
-net到一个网络的路由,后面接网络号地址
-host到一个主机的路由,后面接一个主机地址
netmask添加子网掩码
gw指定网关
dev If指定由哪个网卡出去,如eth0

操作:

# 查看系统路由信息
route -n 
# 删除路由信息

route del default   //删除默认网关route del default gw 172.16.1.254 route del default  gw 172.16.1.254 dev eth0
# 添加路由信息

route add default gw 172.16.1.254
route add default gw 172.16.1.254 dev eth0
# 配置去往某一网络或网段的路由
172网段主机访问192网段的主机。

route add -net 192.168.4.0/24 gw 172.16.1.254
route add -net 192.168.4.0/24 netmask 255.255.255.0 dev eth1
删除路由

route del -net 192.168.4.0/24 dev eth1
# 配置去往某个主机的路由

route add -host 172.16.2.250 dev eth0
删除路由:

route del -host 172.16.2.250 dev eth0

以上配置在重启网络时都会失效需要写到配置中。

需要写到/etc/sysconfig/network-scripts/route-eth*或/etc/rc.local文件中,重启会重新加载。

192.168.4.0/24 via 172.16.1.254

arp命令——管理系统的arp缓存


arp是地址解析协议,主要是根据IP地址获取物理地址。arp可以显示缓存区中的所有条目、删除指定的条目或者添加静态的IP地址与MAC地址的对应关系。

选项:

-n显示IP地址对应的MAC地址信息
-s <主机><MAC>指定主机的IP地址与MAC地址的静态映射
-d <主机>删除制定主机的arp条目

操作:

# 显示arp缓存区的所有条目[root@localhost ~]# arp -n
Address HWtype HWaddress Flags Mask Iface
172.16.1.20 ether 28:6e:d4:8a:02:c0 C eth0
172.16.1.25 ether 28:6e:d4:8a:15:61 C eth0
172.18.0.9 ether 02:42:ac:12:00:09 C br-7f15bb750845
172.16.1.254 (incomplete) eth0
172.16.1.22 ether 28:6e:d4:89:e0:09 C eth0
172.16.1.24 ether 28:6e:d4:88:eb:3d C eth0

# 查看指定主机的arp条目

arp -n 172.16.1.27  
# 绑定IP地址和MAC地址(临时,)

[root@localhost ~]# arp -s 172.16.1.20 28:6e:d4:8a:02:c1
[root@localhost ~]# arp -n
Address HWtype HWaddress Flags Mask Iface
172.16.1.20 ether 28:6e:d4:8a:02:c1 CM eth0
# 删除静态ARP绑定
[root@localhost ~]# arp -d 172.16.1.20

ip命令——网络配置工具


ip命令用于显示或管理linux系统的路由、网络设备、策略路由和隧道。

语法格式:

ip  [选项]  [网络对象]  [操作命令]

操作:

# 查看网卡信息
[root@localhost ~]# ip a
# 关闭网卡

[root@localhost ~]# ip link set eth0 down
# 开启网卡

[root@localhost ~]# ip link set eth0 up
# 添加IP地址

[root@localhost ~]# ip a add 172.16.1.31/24 dev eth0
# 删除IP地址

[root@localhost ~]# ip a del 172.16.1.31/24 dev eth0
# 查看路由

[root@localhost ~]# ip routedefault via 172.16.1.254 dev eth0 proto static metric 100
172.16.1.0/24 dev eth0 proto kernel scope link src 172.16.1.27 metric 100
172.17.0.0/16 dev docker0 proto kernel scope link src 172.17.0.1
172.18.0.0/16 dev br-7f15bb750845 proto kernel scope link src 172.18.0.1

注意:

1、删除网卡的主IP地址,同时会删除该网卡的所有IP地址。

2、删除网卡的辅助IP地址,不会影响该网卡的其他IP地址。

3、ip命令集成了ifconfig和route的功能,逐渐替代这两个IP

netstat命令——查看网络端口信息


用于显示本机网络的连接状态、运行端口和路由表等信息。

选项:

-n显示数字形式的地址而不是去解析主机
-a显示处于监听状态和非监听状态的socket信息
-c <秒数>每隔几秒刷新一次
-l仅显示处于监听状态的网络状态
-t显示所有的TCP连接情况
-u显示所有的UDP连接情况
-p显示socket所属进程的PID和名称

常用组合:

# 列出所有处于监听状态的端口信息
[root@localhost ~]# netstat -lntup
# 列出所有处于监听和非监听状态的端口信息

[root@localhost ~]# netstat -antup

重要的两个状态:

1、ESTABLISHED:表示处于连接的状态,认为有一个EASTABLISHED是一个服务的并发连接。

2、LISTEN:socket正在监听连接请求。

ss命令——查看网络端口信息


ss命令和netstat功能类似,但它能显示更多更详细的网络连接信息,比netstat更快更高效

安装ss命令:

yum -y install iproute
# 列出所有处于监听状态的端口信息
[root@localhost ~]# ss -lntup
# 列出所有处于监听和非监听状态的端口信息

[root@localhost ~]# ss -antup

ping命令——测试主机之间网络的连通性


ping命令发出请求后,远端主机网络联通的话,就会收到回应消息。可判断主机是否正常或两者的网络是否可以互通。

选项:

-c <次数>指定发送ICMP报文的次数,默认一直发送报文
-i <时间>发送报文的间隔时间,默认是1s
-t <生存期>设置发送的数据包其生存期TTL值

操作:

# 直接ping域名
[root@localhost ~]# ping harbor.liyb.com
# 测试IP地址

[root@localhost ~]# ping 172.16.1.27
# 每次ping间隔2秒,一共5次。

[root@localhost ~]# ping -t 2 -c 5 172.16.1.27
PING 172.16.1.27 (172.16.1.27) 56(84) bytes of data.
64 bytes from 172.16.1.27: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 172.16.1.27: icmp_seq=2 ttl=64 time=0.032 ms
64 bytes from 172.16.1.27: icmp_seq=3 ttl=64 time=0.032 ms
64 bytes from 172.16.1.27: icmp_seq=4 ttl=64 time=0.028 ms
64 bytes from 172.16.1.27: icmp_seq=5 ttl=64 time=0.026 ms

--- 172.16.1.27 ping statistics ---5 packets transmitted, 5 received, 0% packet loss, time 3999msrtt min/avg/max/mdev = 0.026/0.029/0.032/0.005 ms

注意:如果不加-c参数会一直ping下去,这时需要使用Ctrl + c来终止。

traceroute命令——追踪数据传输路由状态


traceroute命令和window下的tracert命令类似,用于显示网络数据包传输到指定主机的路径信息

安装traceroute:

yum install -y traceroute

操作:

traceroute www.baidu.com

注意:

1、有时会看到一些星号。可能是因为网络设备封堵或丢弃了返回的信息,所以得不到返回信息。

2、traceroute默认使用UDP协议(受网络影响性能不太好),可以使用-I参数来调用icmp协议。

telnet命令——远程登录主机或检测远程端口


telnet命令使用23端口进行远程,但是使用明文传输,安全性不好。目前远程连接一般使用安全性更好的SSH服务。现在telnet的主要应用场景是判断远端服务器的端口是否开放。

操作:

# 端口放通的现象
[root@localhost ~]# telnet 172.16.1.20 22
Trying 172.16.1.20...Connected to 172.16.1.20.Escape character is '^]'.S
SH-2.0-OpenSSH_7.4
# 看到这种情况,代表22端口是放通的。
# 端口无法连接的现象
[root@localhost ~]# telnet 172.16.1.20 3306
Trying 172.16.1.20...telnet: connect to address 172.16.1.20: Connection refused

ssh命令——远程登录主机


ssh命令可以使用ssh加密协议实现安全的远程登录服务器,实现对服务器的远程管理。

语法格式:

ssh  [选项]  [用户]@[主机名或IP地址]  [远程执行的命令]

选项:

-p指定ssh登录端口,默认是22端口
-t强制分配伪终端
-v调试模式

操作:

# 首次连接会提示,再次连接就不会提示,输入正确密码就可以远程
[root@k8s-master03 ~]# ssh -p 22 root@172.16.1.20The authenticity of host '172.16.1.20 (172.16.1.20)' can't be established.ECDSA key fingerprint is SHA256:ANt+WLWZpyB8YH14ROYVMTS68fEcEqoIrdVAi2FtwvU.ECDSA key fingerprint is MD5:d0:f1:19:71:df:cb:39:b3:b2:cb:9a:83:39:f2:05:cb.Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '172.16.1.20' (ECDSA) to the list of known hosts.
root@172.16.1.20's password:


# 远程执行命令

[root@localhost ~]# ssh root@172.16.1.20 "free -h"
root@172.16.1.20's
password: # 输入正常密码
total used free shared buff/cache available
Mem: 15G 1.4G 2.4G 743M 11G 13G
Swap: 0B 0B 0B
# 调试

[root@localhost ~]# ssh -v root@172.16.1.20

wget命令——命令行下载工具


wget命令用于从网络上下载某些资料,可以直接从网络上下载自己的所需要的文件

选项:

-o将文件的执行结果写入文件中
-O指定保存的文件名后下载文件
-c断点续传
–limit-rate限速下载

操作:

# 下载单个文件,直接后面加链接
wget https://dlcdn.apache.org/tomcat/tomcat-8/v8.5.98/src/apache-tomcat-8.5.98-src.tar.gz
# 指定保存的文件后下载

wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
# 限速下载

wget --limit-rate=5k -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo

nslookup命令——域名解析查询工具

安装:yum  -y install bind-utils

语法:

nslookup [选项]  [域名/IP]  [DNS服务器]

操作

# 查看DNS配置文件
[root@localhost ~]# cat /etc/resolv.conf # Generated by NetworkManagersearch liyb.comnameserver 172.16.1.27
# 交互模式

[root@localhost ~]# nslookup> server 172.16.1.27 # 指定DNS服务器
Default server: 172.16.1.27
Address: 172.16.1.27#53
> harbor.liyb.com # 解析域名
Server: 172.16.1.27
Address: 172.16.1.27#53
Name: harbor.liyb.com

Address: 172.16.1.26

# 非交互模式

[root@localhost ~]# nslookup harbor.liyb.com
Server: 172.16.1.27
Address: 172.16.1.27#53
Name: harbor.liyb.com

Address: 172.16.1.26

dig命令——域名查询工具


dig命令用于测试域名系统的工作是否正常

选项:

@<DNS的IP地址>指定DNS服务器来进行解析
-t指定要查询的DNS数据类型
+trace从根域名开始跟踪查询结果
+short仅输出最精简的CNAME和A记录

操作:

# 查询指定域名的IP地址

[root@localhost ~]# dig harbor.liyb.com

; <<>> DiG 9.11.4-P2-RedHat-9.11.4-26.P2.el7 <<>> harbor.liyb.com;; global options: +cmd;; Got answer:;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 6359;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 2

;; OPT PSEUDOSECTION:; EDNS: version: 0, flags:; udp: 4096;; QUESTION SECTION:;harbor.liyb.com. IN A

;; ANSWER SECTION:harbor.liyb.com. 86400 IN A 172.16.1.26

;; AUTHORITY SECTION:liyb.com. 86400 IN NS www.liyb.com.

;; ADDITIONAL SECTION:www.liyb.com. 86400 IN A 172.16.1.27

;; Query time: 0 msec;; SERVER: 172.16.1.27#53(172.16.1.27);; WHEN: 五 1月 26 12:04:32 CST 2024;; MSG SIZE rcvd: 94# 指定DNS服务器[root@localhost ~]# dig @172.16.1.27 harbor.liyb.com
# 精简输出
[root@localhost ~]# dig +short harbor.liyb.com172.16.1.26

tcpdump命令——监听网络流量


tcpdump命令是一个截获网络数据包的包分析工具。tcpdump可以将网络中传送的数据包的“头”完全截获下来以提供分析。

选项:

-c <数量>接收到指定的数据包数目后退出
-i <网络接口>指定要监听的网络接口
-n不进行DNS解析,加快显示速度
-nn不将协议和端口数字等转换成名字
-q以更快速输出的方式运行。
-v显示命令执行的详细信息

操作:

# 不加参数将启动监视第一个网络接口所流过的数据包
[root@localhost ~]# tcpdump
# 指定网络接口进行监听

[root@localhost ~]# tcpdump -i eth0
# 指定监听主机的数据包

[root@localhost ~]# tcpdump -n host 172.16.1.26
# 监听指定端口的数据包

[root@localhost ~]# tcpdump -nn port 22常见的协议关键字有ip、arp、icmp、tcp、udp等类型。
# 使用tcpdump对tcp数据进行抓包[root@localhost ~]# tcpdump tcp dst port 80 or src 172.16.1.26 -i eth0 -n

以下是TCP状态机制:

图片来自网络

本篇Linux常用命令分析完结!

此条目发表在未分类分类目录。将固定链接加入收藏夹。

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注