第十二章、Linux网络设置
1、查看所有活动的网络接口信息
1.1 执行ifconfig命令
[root@xiaolei ~]# yum install -y net-tools
安装后可以执行ifconfig命令
2、查看指定网络接口信息
2.1 ifconfig +网络接口
示例:
[root@xiaolei ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 20.0.0.51 netmask 255.0.0.0 broadcast 20.255.255.255
inet6 fe80::306:ad64:135e:2ecd prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:3c:15:98 txqueuelen 1000 (Ethernet)
RX packets 508878 bytes 553830715 (528.1 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 246233 bytes 15425972 (14.7 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2.1.1 mtu:网络最大传输单元
①不恰当的本地MTU值
当本地MTU值>网络MTU值时需要拆包,会导致效率下降
当本地MTU值<网络MTU值时,未发挥最大传输能力
②理想的本地MTU值
本地MTU值=网络MTU值
③而一般以太网MTU都为1500,所以在以太网中,往往TCP MSS为1460。
2.1.2 inet:ip地址
2.1.3 netmask:子网掩码
2.1.4broadcast:广播号
2.2 ifconfig常用选项
选项 | 说明 |
---|---|
ifconfig +网卡名称 | 只显示具体网卡的详细信息(无论该网卡是否使用) |
ifconfig -a | 显示所有网卡,包括没有启动的网卡 |
ifconfig +网卡名称 +up/dowm | 开启或关闭网卡 |
ifconfig +网卡名称 +IP地址+子网掩码(/子网掩码长度) | 添加虚拟网卡 |
ifconfig ens33:0+ip地址 | 表示虚拟网卡 |
ifconfig ens33:0 +up/dowm | 开启或关闭虚拟网卡 |
ifconfig -s | 网络通讯情况 |
2.3 示例:
[root@xiaolei ~]# ifconfig -s
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 546914 0 0 0 266710 0 0 0 BMRU
lo 65536 0 0 0 0 0 0 0 0 LRU
3、查看主机名称
3.1 hostname命令
3.1.1 查看或临时设置当前主机名——hostname +主机名
3.2 永久设置主机名
3.2.1 hostnamectl set-hostname +主机名
3.2.2 vi +hostname——设置完需要重启系统才生效
3.2.3 示例:
[root@xiaolei ~]# hostnamectl set-hostname xiaowang
[root@xiaolei ~]# su ###刷新
[root@xiaowang ~]#
4、查看路由表条目
4.1 route命令
4.1.1 route -n——查看或设置主机中路由表信息
4.1.2 ip routing-table
4.2 示例:
[root@xiaolei ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 20.0.0.2 0.0.0.0 UG 100 0 0 ens33
20.0.0.0 0.0.0.0 255.0.0.0 U 100 0 0 ens33
5、查看网络连接情况——netstat(即端口扫描)
5.1 netstat
5.1.1 netstat -natp
5.1.2 netstat -natp | grep +端口号
5.2 常用选项
选项 | 说明 |
---|---|
netstat -a | 显示主机中所有活动的网络连接信息(包括监听、、非监听状态的服务端口) |
netstat -n | 以数字的形式显示相关的主机地址、端口等信息 |
netstat -r | 显示路由表信息 |
netstat -l | 显示处于监听(Listening)状态的网络连接及端口信息 |
netstat -t | 查看TCP(Transmission Control Protocol,传输控制协议)协议相关的信息 |
netstat -u | 显示 UDP(User Datagram Protocol,用户数据报协议)协议相关的信息 |
netstat -p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要 root 权限) |
5.3 示例:
[root@xiaolei ~]# netstat -natp
Active Internet connections (servers and established)
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 1004/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1228/master
tcp 0 0 20.0.0.51:22 20.0.0.1:62279 ESTABLISHED 3807/sshd: root@not
tcp 0 48 20.0.0.51:22 20.0.0.1:62273 ESTABLISHED 3803/sshd: root@pts
tcp 0 0 20.0.0.51:22 20.0.0.1:60025 ESTABLISHED 1542/sshd: root@pts
tcp6 0 0 :::22 :::* LISTEN 1004/sshd
tcp6 0 0 ::1:25 :::* LISTEN 1228/master
[root@xiaolei ~]# netstat -natp | grep 80
tcp 0 0 20.0.0.51:22 20.0.0.1:62279 ESTABLISHED 3807/sshd: root@not
tcp 0 48 20.0.0.51:22 20.0.0.1:62273 ESTABLISHED 3803/sshd: root@pts
6、获取socket统计信息——ss
6.1 ss 命令概述
可以査看网络连接情况,主要用于获取 socket,统计信息,它可以显示和 netstat 命令类似的输出内容。但 ss 的优势在于它能够显示更多更详细的有关 TCP 和连接状态的信息,而且比 netstat 更快速更高效。
当服务器的socket连接数量变得非常大时,无论是使用netstat命令还是直接cat /proc/net/tcp,执行速度都会很慢,ss快的秘诀在于,它利用到了TCP协议栈中tcp_diag。tcp_diag是一个用于分析统计的模块,可以获得Linux 内核中第一手的信息,这就确保了ss的快捷高效
ss命令是Linux CentOs 7中iproute软件包的一部分,默认已经安装。
6.2 ss常用选项
选项 | 说明 |
---|---|
ss -t | tcp协议相关 |
ss -u | udp协议相关 |
ss -w | 罗套接字相关 |
ss -x | unix sock相关 |
ss -l | listen状态的连接 |
ss -a | 所有 |
ss -n | 数字格式 |
ss -p | 相关的程序即PID |
ss -e | 扩展的信息 |
☆ss -m | 内存用量 |
ss -o | 计时器信息 |
ss -r | resolove把ip解释为协议名称 |
6.3 ss -nltp | grep 22——查看tcp的所有包含的22端口
6.4 ss命令总结
6.4.1 ss可以查看网络连接信息
6.4.2 与netstat不同的点在于ss主要向socket获取统计信息
6.4.3 ss可以查询内存
6.4.4 2条命令均可查看pid和进程/进程名
6.5 tcp和tcp6协议
tcp是ipv4,tcp6是ipv6
6.6 LISTEN
6.6.1 “LISTEN” 是指在网络通信中等待连接的 TCP 端口的状态之一。
当一个主机上的应用程序在指定的端口上开始监听连接请求时,它进入 “LISTEN” 状态,表示正在等待其他主机建立连接。
6.6.2 “ESTABLISHED” 是指在网络通信中建立的 TCP 连接的状态之一。它表示当前的 TCP 连接已成功建立并且正在进行数据传输。
已连接(已建立三次握手) TIME_OUT
7、netstat与ss比较
可以使用time命令来比较
[root@xiaolei ~]# time netstat -ant
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 20.0.0.51:22 20.0.0.1:62279 ESTABLISHED
tcp 0 48 20.0.0.51:22 20.0.0.1:62273 ESTABLISHED
tcp6 0 0 :::22 :::* LISTEN
tcp6 0 0 ::1:25 :::* LISTEN
real 0m0.002s
user 0m0.002s
sys 0m0.000s
[root@xiaolei ~]# time ss -ant
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:22 *:*
LISTEN 0 100 127.0.0.1:25 *:*
ESTAB 0 0 20.0.0.51:22 20.0.0.1:62279
ESTAB 0 0 20.0.0.51:22 20.0.0.1:62273
LISTEN 0 128 [::]:22 [::]:*
LISTEN 0 100 [::1]:25 [::]:*
real 0m0.029s
user 0m0.001s
sys 0m0.003s
7.1 性能
ss
命令通常比 netstat
更快,因为它直接从内核获取套接字信息,而不需要解析 /proc
文件系统。
7.2 详细程度
ss
命令提供了更多的输出选项和更详细的输出结果,例如可以显示套接字的定时器信息、内存使用情况等。
7.3 兼容性
netstat
在较早的 Linux 发行版中可用,而 ss
可能在某些旧版本中不可用。然而,现代 Linux 发行版通常都包含这两个命令。
总之,ss
命令在很多方面优于 netstat
,尤其是在性能和详细程度上。如果您的 Linux 系统支持 ss
命令,建议优先使用它。如果 ss
不可用,可以使用 netstat
作为替代方案。
8、lsof命令
[root@xiaolei ~]# lsof
COMMAND PID TID USER FD TYPE DEVICE SIZE/OFF NODE NAME
systemd 1 root cwd DIR 253,0 235 64 /
systemd 1 root rtd DIR 253,0 235 64 /
systemd 1 root txt REG 253,0 1632776 34029663
8.1 各字段解释
字段一:COMMAND——进程名
字段二:PID——进程ID
字段三:TID——线程ID
字段四:USER——所属用户
字段五:FD——文件描述符。可能的值为“cwd ,当前工作目录”,“rtd ,root目录”,“txt,txt文件”,“mem,内存映射文件”,“err,文件描述符信息错误”,“jld,jail 目录(FreeBSD)”,
“Lnn,库文件相关(AIX)”,“Mxx,十六进制内存映射类型值”,“m86,DOS合并映射文件”,
“mmap,内存映射设备”,“pd,父目录”,“v86,vp/ix 映射文件”,“-,未知的或者被锁定的符号”,
“tr,内核跟踪文件(OpenBSD)”
字段六:TYPE——与文件关联的node类型。可能的值为“DIR,目录”,“REG,普通文件”,“CHR,字符”,“FIFO,管道通讯特殊文件”,“LINK,符号链接文件”,“unix,UNIX域socket文件”,“inet,互利联网域套接字文件”,“IPv4,IPv4套接字文件”,“IPv6,IPv6套接字文件”,“DEL,被删除的文件的linux映射文件”,“DOOR,VDOOR文件”,“KQUEUE,BSD类型内核事件队列文件”等等。
字段七:DEVICE——设备编号,用逗号分割,用于特殊字符、特殊块、常规文件、目录和NFS文件
字段八:SIZE/OFF——文件大小以及文件偏移量
字段九:NODE——本地文件node编号
字段十:NAME——文件系统挂载点名称
8.2 常用选项
选项 | 说明 |
---|---|
lsof -i | 只显示网络连接信息 |
lsof -P | 强制显示端口号 |
lsof -a | 进行与查询条件的逻辑与操作 |
lsof -p+pid | 指定要查询的进程ID |
8.3 示例
[root@xiaolei ~]# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
sshd 1004 root 3u IPv4 19329 0t0 TCP *:ssh (LISTEN)
sshd 1004 root 4u IPv6 21810 0t0 TCP *:ssh (LISTEN)
master 1228 root 13u IPv4 24607 0t0 TCP localhost:smtp (LISTEN)
master 1228 root 14u IPv6 24608 0t0 TCP localhost:smtp (LISTEN)
sshd 3803 root 3u IPv4 32795 0t0 TCP xiaolei:ssh->20.0.0.1:62273 (ESTABLISHED)
sshd 3807 root 3u IPv4 32013 0t0 TCP xiaolei:ssh->20.0.0.1:62279 (ESTABLISHED)
9、ping命令——测试网络连通性
9.1 基本格式
ping +选项+目标主机
9.2 常用选项
选项 | 说明 |
---|---|
ping -c | 发送包的个数,最常用的方式 |
ping -i | 发送包的间隔时间 |
ping -W | 超市时间 |
ping -w | 多少秒后停止ping命令操作 |
9.3 示例:
[root@xiaolei ~]# ping -c5 www.baidu.com
PING www.a.shifen.com (180.101.50.242) 56(84) bytes of data.
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=1 ttl=128 time=6.99 ms
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=2 ttl=128 time=5.51 ms
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=3 ttl=128 time=9.69 ms
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=4 ttl=128 time=55.6 ms
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=5 ttl=128 time=6.19 ms
--- www.a.shifen.com ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4023ms
rtt min/avg/max/mdev = 5.511/16.802/55.624/19.463 ms
10、跟踪数据包的路由途径——traceroute
10.1 概述:
traceroute
是一个在 Linux 系统中用于诊断网络连接问题的命令行工具。它通过发送一系列带有递增 TTL(Time to Live)值的 ICMP Echo 请求报文(也称为 UDP 数据报文)来追踪数据包从源主机到目标主机之间经过的路由节点。每个路由器在接收到数据包时,会将 TTL 值减一,当 TTL 值减至 0 时,路由器会丢弃该数据包并向源主机发送一个 ICMP Time Exceeded 消息。通过分析这些消息,traceroute
可以确定数据包在到达目标主机之前经过的路由节点。
10.2 测试从当前主机到目的主机经过的网络节点(L3三层设备)
10.3 基本格式:traceroute +目标主机地址
[root@xiaolei ~]# traceroute www.baidu.com
traceroute to www.baidu.com (180.101.50.188), 30 hops max, 60 byte packets
1 gateway (20.0.0.2) 0.061 ms 0.046 ms 0.047 ms
2 * * *
3 * * *
…………省略…………
29 * * *
30 * * *
###可以看到数据包从源主机到目标主机经过的路由节点及其延迟时间
10.4 常用选项
选项 | 说明 |
---|---|
traceroute -l | 使用 ICMP Echo 请求报文代替 UDP 数据报文 |
traceroute -T | 使用 TCP SYN 报文代替 UDP 数据报文 |
traceroute -w | 设置等待每个响应的最大时间(以秒为单位) |
traceroute -q | 设置每个 TTL 值发送的报文数量 |
10.5 补充:wireshark、tcpdump也可以检测网络状态
11、测试DNS域名解析——nslookup
11.1 概述:
nslookup
是一个在 Linux 系统中用于查询 DNS(Domain Name System,域名系统)记录的命令行工具。它允许用户查询域名对应的 IP 地址、IP 地址对应的域名、MX 记录、NS 记录等 DNS 信息。nslookup
可以帮助用户诊断域名解析问题,验证 DNS 配置,以及获取有关域名的其他相关信息
11.2 基本格式:
nslookup +目标主机地址
11.3 示例:
C:\Users\22702>nslookup www.baidu.com
服务器: public1.114dns.com
Address: 114.114.114.114
非权威应答:
名称: www.a.shifen.com
Addresses: 240e:e9:6002:15c:0:ff:b015:146f
240e:e9:6002:15a:0:ff:b05c:1278
180.101.50.188
180.101.50.242
Aliases: www.baidu.com
12、设置网络接口参数——ifconfig
12.1 配置文件所在位置—— vi /etc/sysconfig/network-scripts/ifcfg-ens33
[root@xiaolei ~]# vi /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet ###设置网卡类型,Ethernet表示以太网
PROXY_METHOD=none ###
BROWSER_ONLY=no
BOOTPROTO=static ###设置网卡的配置方式,"static”表示使用静态IP地 址,“dhcp”时表示动态获取地址
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=87792be4-142b-4937-bbab-85c4c47bfb93
DEVICE=ens33 ###设置网卡名称
ONBOOT=yes ###设置网卡是否在Linux操作系统启动时激活
IPADDR=20.0.0.51 ###设置网卡的IP地址
GATEWAY=20.0.0.2 ###设置网卡的默认网关地址
NTEMASK=255.255.255.0 ###设置网卡的子网掩码
DNS1=114.114.114.114 ###设置DNS服务器的IP地址
13、 配置DNS域名解析服务器
13.1修改DNS域名解析配置文件——vi /etc/resolv.conf
13.2配置文件解析——nameserver 192.168.233.21
###nameserver表示DNS服务器名称,8.8.8.8表示DNS解析服务器地址
13.3修改完需要重启网卡服务——systemctl restart network
[root@xiaolei ~]# vi /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
[root@xiaolei ~]# systemctl restart network
14、域名解析配置文件
14.1 /etc/resolv.conf,保存的是你DNS服务器的地址
14.2 /etc/hosts 文件,保存主机名与IP地址的映射记录
[root@xiaolei ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
15、设置路由记录——route
15.1 添加到指定网段的路由记录——route add -net +网段地址 +gw +指定出去接口
route add -net 192.168.14.0/24 gw 192.168.233.21 devens33
添加一个静态路由,将目标网络地址192.168.14.0/24通过网关192.168.233.21发送到网卡ens33。这个命令会告诉操作系统在发送到目标网络192.168.14.0/24的数据包时,应该通过指定的网关192.168.233.21进行中转,并通过网卡ens33进行发送