1 查看网络配置
1.1 ifconfig——查看网络接口信息
ifconfig命令来自于net-tools包 (图形化界面已安装,而最小化界面是没有的。需要自己安装) :
[root@localhost ~]# rpm -qi net-tools
Name : net-tools
Version : 2.0
Release : 0.22.20131004git.el7
Architecture: x86_64
Install Date: 2022年01月18日 星期二 17时31分40秒
Group : System Environment/Base
Size : 938986
License : GPLv2+
Signature : RSA/SHA256, 2017年08月11日 星期五 02时30分02秒, Key ID 24c6a8a7f4a80eb5
Source RPM : net-tools-2.0-0.22.20131004git.el7.src.rpm
Build Date : 2017年08月03日 星期四 17时17分34秒
Build Host : c1bm.rdu2.centos.org
Relocations : (not relocatable)
Packager : CentOS BuildSystem <http://bugs.centos.org>
Vendor : CentOS
URL : http://sourceforge.net/projects/net-tools/
Summary : Basic networking tools
Description :
The net-tools package contains basic networking tools,
including ifconfig, netstat, route, and others.
Most of them are obsolete. For replacement check iproute package.
基本用法:
| 格式 | 含义 |
|---|---|
| ifconfig | 显示当前主机中已启用(活动)的网络接口信息。 |
| ifconfig -a | 显示所有网络接口(包括没有启动的网卡) |
| ifconfig 具体网卡名称 | 只显示具体网卡的详细信息(无论是否启用) |
| ifconfig 网卡名称 up/down | 表示开启或关闭指定网卡 |
| ifconfig 网络接口 IP地址[/子网掩码长度] | 新建临时IP地址(添加一块虚拟网卡) |
| ifconfig -s | 查看通讯情况 |
1.1.1 查看所有启用的网络接口信息
在不带任何选项和参数执行ifconfig命令时,将显示当前主机中已启用(活动)的网络接口信息。
网卡名称详解:
ens33:第一块以太网的名称详解。
“ens33”中的:
- “en"是”EtherNet"的缩写,表示网卡类型为以太网;
- “s"表示热插拔插槽上的设备(hot-plug Slot);
- 数字“33”表示插槽编号。
[root@localhost ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.72.10 netmask 255.255.255.0 broadcast 192.168.72.255
inet6 fe80::a5da:ff58:2c32:2b5f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:18:b5:ff txqueuelen 1000 (Ethernet)
RX packets 54379 bytes 4648603 (4.4 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 102028 bytes 28282331 (26.9 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
inet6 ::1 prefixlen 128 scopeid 0x10<host>
loop txqueuelen 1 (Local Loopback)
RX packets 106 bytes 9256 (9.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 106 bytes 9256 (9.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
virbr0: flags=4099<UP,BROADCAST,MULTICAST> mtu 1500
inet 192.168.122.1 netmask 255.255.255.0 broadcast 192.168.122.255
ether 52:54:00:e6:f6:65 txqueuelen 1000 (Ethernet)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
ens33网卡信息每行详细解释:
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
#ens33:网卡名称
#UP:该接口已启用
#BROADCAST:支持广播
#RUNNING:正在允许
#MULTICAST:支持组播
#mtu 1500:网络传输时的最大传输单元,单位字节。这里为1500字节。
inet 192.168.72.10 netmask 255.255.255.0 broadcast 192.168.72.255
#这一行是网络接口的IP地址、子网掩码、广播地址
inet6 fe80::a5da:ff58:2c32:2b5f prefixlen 64 scopeid 0x20<link>
#这一行是IPV6地址、子网长度、作用域(link小时仅该接口有效)
ether 00:0c:29:18:b5:ff txqueuelen 1000 (Ethernet)
#这一行是mac地址、传输队列长度(传输缓存大小)、接口类型
RX packets 54379 bytes 4648603 (4.4 MiB)
#接收报文个数、总字节数
RX errors 0 dropped 0 overruns 0 frame 0
#接收错误个数、丢弃个数、溢出个数、冲突帧数
TX packets 102028 bytes 28282331 (26.9 MiB)
#发送报文个数、总字节数
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
#发送错误个数、丢弃个数、溢出个数、载荷数、冲突数
1.1.2 查看/开启/关闭/设置指定网卡
ifconfig 网卡名称 [up|down]
1)查看ens33网卡
[root@localhost ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.72.10 netmask 255.255.255.0 broadcast 192.168.72.255
inet6 fe80::a5da:ff58:2c32:2b5f prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:18:b5:ff txqueuelen 1000 (Ethernet)
RX packets 97597 bytes 8390076 (8.0 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 187394 bytes 51899032 (49.4 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
2)关闭、开启ens33网卡:
[root@localhost ~]# ifconfig ens33 down //关闭
[root@localhost ~]# ifconfig ens33 up //开启
3)设置临时虚拟网卡:
[root@localhost ~]# ifconfig ens33:0 192.168.72.20 //设置虚拟网卡ens33:0
[root@localhost ~]# ifconfig ens33:0
ens33:0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.72.20 netmask 255.255.255.0 broadcast 192.168.72.255
ether 00:0c:29:18:b5:ff txqueuelen 1000 (Ethernet)
4)查看通讯情况
[root@localhost ~]# ifconfig -s //查看通讯情况
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 104223 0 0 0 201081 0 0 0 BMRU
ens33:0 1500 - no statistics available - BMRU
lo 65536 142 0 0 0 142 0 0 0 LRU
virbr0 1500 0 0 0 0 0 0 0 0 BMU
5)增加临时网卡
[root@localhost ~]# ifconfig ens37 192.168.72.37/24
增加临时网卡也可使用 ip address实现:
ip address add 192.168.72.37/24 dev ens37
ip address del 192.168.72.37/24 dev ens37
1.2 hostname——查看主机名称
查看或设置当前主机名
hostname [主机名]
示例:
1)查看主机名称
[root@localhost ~]# hostname
localhost.localdomain
2)临时修改主机名称
[root@localhost ~]# hostname yuji
[root@localhost ~]# su
[root@yuji ~]# hostname
yuji
永久修改主机名称,修改后重启生效:
- 法一:编辑配置文件/etc/hostname,该文件只对第一行生效。
- 法二:使用 “hostnamectl set-hostname 新主机名” 命令,该命令实际是修改了配置文件。
1.3 route——查看路由表条目
服务器可以当路由使用。
命令格式:
route //打印路由表
route -n //以数字形式显示路由信息
route add -net 网段地址 gw IP地址 //添加指定网段的路由记录
route del -net 网段地址 //删除指定网段的路由记录
route add default gw IP地址 //向路由表中添加默认网关记录
route del default gw IP地址 //删除路由表中默认的网关记录
示例:
[root@yuji ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens33
192.168.72.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
[root@yuji ~]# route -n //以数字形式展示,不允许显示别名
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.72.2 0.0.0.0 UG 100 0 0 ens33
192.168.72.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
1.4 netstat——查看网络连接情况
netstat命令是一个监控TCP/IP网络的非常有用的工具,它可以显示路由表、实际的网络连接以及每一个网络接口设备的状态信息。
命令格式:
netstat [选项]
常用选项
| 选项 | 作用 |
|---|---|
| -a | 显示主机中所有活动的网络连接信息(包括监听、非监听状态的服务端口)。 |
| -n | 拒绝显示别名,以数字的形式显示相关的主机地址、端口等信息。 |
| -t | 查看TCP协议相关的信息。 |
| -u | 显示UDP协议相关的信息。 |
| -p | 显示与网络连接相关联的进程号、进程名称信息(该选项需要root权限) |
| -r | 显示路由表信息。 |
| -l | 显示处于监听状态(Listen)的网络连接及端口信息。 |
常用搭配:
netstat -a //列出所有端口
netstat -at //列出所有TCP端口
netstat -au //列出所有UDP端口
netstat -ax //列出所有unix端口
netstat -lt //列出处于监听状态的TCP端口
netstat -tnlp //直接使用ip地址列出所有处于监听状态的TCP端口,且加上程序名
示例:
1)netstat -lt,列出处于监听状态的TCP端口。
[root@localhost ~]# netstat -lt //列出处于监听状态的TCP端口
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:sunrpc 0.0.0.0:* LISTEN
tcp 0 0 localhost.locald:domain 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:ssh 0.0.0.0:* LISTEN
tcp 0 0 localhost:ipp 0.0.0.0:* LISTEN
tcp 0 0 localhost:smtp 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:shell 0.0.0.0:* LISTEN
tcp6 0 0 [::]:sunrpc [::]:* LISTEN
tcp6 0 0 [::]:ssh [::]:* LISTEN
tcp6 0 0 localhost:ipp [::]:* LISTEN
tcp6 0 0 localhost:smtp [::]:* LISTEN
tcp6 0 0 [::]:shell [::]:* LISTEN
2)netstat -tnlp,直接使用ip地址列出所有处于监听状态的TCP端口,且加上程序名。
[root@localhost ~]# netstat -tnlp
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:111 0.0.0.0:* LISTEN 1/systemd
tcp 0 0 192.168.122.1:53 0.0.0.0:* LISTEN 1462/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1113/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1111/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1394/master
tcp 0 0 0.0.0.0:514 0.0.0.0:* LISTEN 798/rsyslogd
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::22 :::* LISTEN 1113/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1111/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1394/master
tcp6 0 0 :::514 :::* LISTEN 798/rsyslogd
1.5 ss(socket statistics)——查看网络连接情况
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软件包的一部分,默认已经安装。
| 选项 | 含义 |
|---|---|
| -t | tcp协议相关 |
| -u | udp协议相关 |
| -w | 套接字相关 |
| -x | unix sock相关 |
| -l | listen状态的连接 |
| -a | 所有 |
| -n | 数字格式 |
| -p | 相关的程序及PID |
| -e | 扩展的信息 |
| -m | 内存用量 |
| -o | 计时器信息 |
| -r | --resolve 把 IP 解释为域名,把端口号解释为协议名称 |
示例:
查看TCP协议下的21端口是否开启
[root@localhost ~]# ss -ntap |grep 21 //查看TCP协议下的21端口
LISTEN 0 32 :::21 :::* users:(("vsftpd",pid=84913,fd=3))
2 测试网络连接
2.1 ping——测试网络连通性
linux中,默认会一直ping下去, 按Ctrl+c 终止。
ping [选项] 目标主机
常用选项:
| 选项 | 说明 |
|---|---|
| -w | 超时时间(在 deadline 秒后退出) |
| -c count | 指定发送报文的次数(ping指定次数后停止ping) |
| -i | 指定收发信息的间隔时间 |
| -s | 设置数据包的大小 |
| -n | 只输出数值 |
| -p | 设置填满数据包的范本样式 |
| -q | 不显示指令执行过程 |
| -R | 记录路由过程 |
| -t | 设置存活数值TTL的大小 |
| -v | 详细显示指令的执行过程 |
示例:
1)ping -c3,只ping3个包。
[root@localhost ~]# ping -c3 192.168.72.20
PING 192.168.72.20 (192.168.72.20) 56(84) bytes of data.
64 bytes from 192.168.72.20: icmp_seq=1 ttl=64 time=0.029 ms
64 bytes from 192.168.72.20: icmp_seq=2 ttl=64 time=0.031 ms
64 bytes from 192.168.72.20: icmp_seq=3 ttl=64 time=0.031 ms
--- 192.168.72.20 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.029/0.030/0.031/0.004 ms
2)ping -w 4,等待时间为4秒,4秒后自动退出。
[root@localhost ~]# ping -w 4 192.168.72.20
PING 192.168.72.20 (192.168.72.20) 56(84) bytes of data.
64 bytes from 192.168.72.20: icmp_seq=1 ttl=64 time=0.021 ms
64 bytes from 192.168.72.20: icmp_seq=2 ttl=64 time=0.039 ms
64 bytes from 192.168.72.20: icmp_seq=3 ttl=64 time=0.032 ms
64 bytes from 192.168.72.20: icmp_seq=4 ttl=64 time=0.035 ms
64 bytes from 192.168.72.20: icmp_seq=5 ttl=64 time=0.034 ms
--- 192.168.72.20 ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 3999ms
rtt min/avg/max/mdev = 0.021/0.032/0.039/0.007 ms
2.2 traceroute——跟踪数据包
测试从当前主机到目的主机之间经过的网络节点。
traceroute 目标主机地址
示例:
[root@localhost ~]# traceroute 192.168.72.20
traceroute to 192.168.72.20 (192.168.72.20), 30 hops max, 60 byte packets
1 yuji (192.168.72.20) 0.034 ms 0.007 ms 0.004 ms
2.3 nslookup——域名解析
测试DNS域名解析
nslookup 目标主机地址 [DNS服务器地址]
示例:
[root@localhost ~]# nslookup www.baidu.com //将域名解析为IP地址
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 36.152.44.96
Name: www.a.shifen.com
Address: 36.152.44.95
2.4 dig——域名解析
dig可以显示出更多详细信息。
dig是一个在类Unix命令行模式下查询DNS包括NS记录,A记录,MX记录等相关信息的工具。
[root@localhost ~]# dig www.baidu.com //将域名解析为IP地址,显示更多信息
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 27104
;; flags: qr rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.baidu.com. IN A
;; ANSWER SECTION:
www.baidu.com. 208 IN CNAME www.a.shifen.com.
www.a.shifen.com. 214 IN A 36.152.44.95
www.a.shifen.com. 214 IN A 36.152.44.96
;; Query time: 10 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: 三 3月 16 01:56:42 CST 2022
;; MSG SIZE rcvd: 101
3 永久修改网络相关配置
设置网络参数的方式:
-
临时配置--使用命令调整网络参数
- 简单、快速,可直接修改运行中的网络参数
- 一般只适合在调试网络的过程中使用
- 系统重启以后,所做的修改将会失效
-
固定设置--通过配置文件修改网络参数
- 修改各项网络参数的配置文件
- 适合对服务器设置固定参数时使用
- 需要重载网络服务或者重启以后才会生效
3.1 静态NAT网络设置
网卡配置文件:/etc/sysconfig/network-scripts/ifcfg-ens33
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet //接口类型,常见的有Ethernet、Bridge
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static //激活此设备时使用的地址配置协议,设置成static静态
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=bdc9ad35-297a-413f-a7f2-be27868e0e72 //设备的唯一标识
DEVICE=ens33 //设备名
ONBOOT=yes //在系统引导时是否激活此设备
#下面四行是自己添加的内容
IPADDR=192.168.72.10 //自定义的IP地址
NETMASK=255.255.255.0 //子网掩码
GATEWAY=192.168.72.2 //网关地址
DNS1=8.8.8.8 //DNS服务器地址
3.2 双网卡设置
步骤1. 增加网络适配器。
步骤2. ifconfig -a 显示所有网卡,查看第二块网卡名称。
[root@localhost ~]# ifconfig -a //显示所有网卡,查看第二块网卡的名称
---------------------------------
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.72.131 netmask 255.255.255.0 broadcast 192.168.72.255
inet6 fe80::7a7f:759d:45ba:68 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:18:b5:09 txqueuelen 1000 (Ethernet)
RX packets 13 bytes 1346 (1.3 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 22 bytes 4192 (4.0 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
步骤3. 编辑配置文件。
复制ens33的配置文件并改名为ens36,修改文件。
[root@localhost ~]# cd /etc/sysconfig/network-scripts/ //切换到配置文件所在目录
[root@localhost network-scripts]# cp ifcfg-ens33 ./ifcfg-ens36 //复制ens33的配置文件并改名ens36
[root@localhost network-scripts]# vim ifcfg-ens36 //编辑配置文件
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
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=ens36 //将名称修改为ens36
#UUID=bdc9ad35-297a-413f-a7f2-be27868e0e72 //注释掉UUID
DEVICE=ens36 //将设备修改为ens36
ONBOOT=yes
IPADDR=192.168.72.131 //设置一个未被使用的IP地址
NETMASK=255.255.255.0
GATEWAY=192.168.72.2
DNS1=8.8.8.8
步骤4. 重启网络服务,并查看ens36。
[root@localhost network-scripts]# systemctl restart network //重启网络服务
[root@localhost network-scripts]# ifconfig ens36 //查看ens36
ens36: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 192.168.72.131 netmask 255.255.255.0 broadcast 192.168.72.255
inet6 fe80::82e9:8745:7968:b6b2 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:18:b5:09 txqueuelen 1000 (Ethernet)
RX packets 375 bytes 26100 (25.4 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 64 bytes 9558 (9.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
3.3 域名解析配置文件
/etc/resolv.conf 文件,保存本机需要使用的DNS服务器的IP地址。
[root@localhost ~]# cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
3.4 本地主机映射文件
/etc/hosts 文件,保存主机名与IP地址的映射记录。
[root@localhost ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
119.75.218.70 www.baidu.com
hosts 文件和DNS服务器的比较:
- 默认情况下,系统首先从hosts文件查找解析记录
- hosts 文件只对当前的主机有效
- hosts 文件可减少DNS查询过程,从而加快访问速度
4. 总结
服务不能使用,排错过程:
- 一般先ping看能不能通,如果你的网络不通,将网络调通(查看防火墙、抓包)。
- 查看你的服务是否开启,使用命令“systemctl status 服务名”。
- 使用 ss 或netstat命令,查看你的服务端口是否被占用 ,一个端口一个服务。
- 最后查看你的服务配置文件是否正确。
查看网络配置:
- ifconfig、hostname、route、netstat、ss
测试网络连接:
- ping、traceroute、nslookup、dig
设置网络地址参数:
- 临时配置、永久配置