目录
前言
云计算定义:用户可以通过网络灵活获取计算机资源池(CPU、内存、存储、带宽等)中的资源,并且具有按量计费和弹性伸缩的特性。从云计算的定义中我们可以看出,云计算服务的提供离不开网络的加持,熟练掌握Linux网络知识也是尤为重要的,所以这段时间小编主要给大家带来Linux网络相关知识。
一、查看网络配置
1.1查看所有活动的网络接口信息
ifconfig 命令 ###使用该命令需要先安装net-tools网络管理工具
示例:
[root@node2 ~]# ifconfig
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500 #物理网卡信息
inet 10.0.0.60 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::3008:8d84:4fb8:cdf6 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:53:ec:8c txqueuelen 1000 (Ethernet)
RX packets 803702 bytes 1112601577 (1.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 202065 bytes 27785465 (26.4 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 3229 bytes 291042 (284.2 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 3229 bytes 291042 (284.2 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:4e:d7:c8 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
1.2查看指定网络接口信息
ifconfig 网络接口
示例:
[root@node2 ~]# ifconfig ens33
ens33: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.60 netmask 255.255.255.0 broadcast 10.0.0.255
inet6 fe80::3008:8d84:4fb8:cdf6 prefixlen 64 scopeid 0x20<link>
ether 00:0c:29:53:ec:8c txqueuelen 1000 (Ethernet)
RX packets 804380 bytes 1113242316 (1.0 GiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 202552 bytes 27827710 (26.5 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
1.3常见的几种网络接口
- ens33:物理网卡
- loopback(lo):回环网卡,测试TCP/IP协议是否正常,能ping通127.0.0.0/24网段的IP地址代表TCP/IP协议能够使用,才能实现网络通信
- virbr0:虚拟的桥接网卡
补充知识:虚拟机与宿主机的三种网络连接模式
- VMnet0:桥接模式,把虚拟机直接暴露在局域网环境下,可以直接被访问
- VMnet1:仅主机模式,把虚拟机之间构建成局域网,只能宿主机和虚拟机通信,无法与外部通信
- VMnet8:NAT模式,把虚拟机连接到类似三层交换的虚拟网卡上,不仅可以内部通信还可以与外部通信。
1.4查看主机名称
- hostname 命令—查看或设置当前主机名
- hostname 主机名 ##临时修改主机名
- hostnamectl set-hostname 主机名 ##永久修改主机名
注意:本处永久修改主机名是通过命令修改的,但其实在Linux系统中临时修改大部分都是通过命令
实现的,而永久修改则是修改配置文件实现。
1.5查看路由表条目
route命令 加上-n,内容不变,但都以数字形式显示
示例:
[root@node2 ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens33
10.0.0.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@node2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 100 0 0 ens33
10.0.0.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.6查看网络连接情况
netstat命令—查看系统的网络连接状态、路由表、接口统计等信息
-a 显示所有接口信息,包含已连接和未连接正在监听的
-n 代表以数字形式进行显示
-p 显示进程号pid
-t 查看TCP协议已连接的信息
-u 查看UDP协议已连接的信息
-r 查看路由表
常用-ntap:以数字形式显示当前系统中所有的TCP连接信息,同时显示进程信息;
-nuap:以数字形式显示当前系统中所有的UDP连接信息,同时显示进程信息;
结合grep命令可以过滤出所需要的特定网络连接信息
示例:
[root@node2 ~]# netstat -napt
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:9100 0.0.0.0:* LISTEN 77600/grunt
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 1454/dnsmasq
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1146/sshd
tcp 0 0 127.0.0.1:631 0.0.0.0:* LISTEN 1148/cupsd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1413/master
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 84617/sshd: root@pt
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 88972/sshd: root@pt
tcp 0 0 10.0.0.60:22 10.0.0.1:56839 ESTABLISHED 84617/sshd: root@pt
tcp 0 0 10.0.0.60:22 10.0.0.1:54786 ESTABLISHED 88972/sshd: root@pt
tcp6 0 0 :::111 :::* LISTEN 1/systemd
tcp6 0 0 :::22 :::* LISTEN 1146/sshd
tcp6 0 0 ::1:631 :::* LISTEN 1148/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 1413/master
tcp6 0 0 ::1:6010 :::* LISTEN 84617/sshd: root@pt
tcp6 0 0 ::1:6011 :::* LISTEN 88972/sshd: root@pt
[root@node2 ~]# netstat -anpt | grep sshd ####过滤出sshd服务的网络信息
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1146/sshd
tcp 0 0 127.0.0.1:6010 0.0.0.0:* LISTEN 84617/sshd: root@pt
tcp 0 0 127.0.0.1:6011 0.0.0.0:* LISTEN 88972/sshd: root@pt
tcp 0 0 10.0.0.60:22 10.0.0.1:56839 ESTABLISHED 84617/sshd: root@pt
tcp 0 52 10.0.0.60:22 10.0.0.1:54786 ESTABLISHED 88972/sshd: root@pt
tcp6 0 0 :::22 :::* LISTEN 1146/sshd
tcp6 0 0 ::1:6010 :::* LISTEN 84617/sshd: root@pt
tcp6 0 0 ::1:6011 :::* LISTEN 88972/sshd: root@pt
1.7查看系统的网络连接情况,获取socket统计信息
ss 【选项】
-t TCP连接的信息
-u UDP连接的信息
-l 查看监听状态的信息
-p 显示进程号
-a 显示所有的网络连接信息
-n 将服务名称改为端口号
-r 以服务名称显示(默认就是显示服务名称,和-n相对)
示例:
[root@node2 ~]# ss -anpt #以端口号显示所有TCP连接的信息,同时显示进程号
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:9100 *:* users:(("grunt",pid=77600,fd=12))
LISTEN 0 128 *:111 *:* users:(("systemd",pid=1,fd=33))
LISTEN 0 5 192.168.122.1:53 *:* users:(("dnsmasq",pid=1454,fd=6))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=1146,fd=3))
LISTEN 0 128 127.0.0.1:631 *:* users:(("cupsd",pid=1148,fd=12))
LISTEN 0 100 127.0.0.1:25 *:* users:(("master",pid=1413,fd=13))
LISTEN 0 128 127.0.0.1:6010 *:* users:(("sshd",pid=84617,fd=9))
LISTEN 0 128 127.0.0.1:6011 *:* users:(("sshd",pid=88972,fd=9))
ESTAB 0 0 10.0.0.60:22 10.0.0.1:56839 users:(("sshd",pid=84617,fd=3))
ESTAB 0 0 10.0.0.60:22 10.0.0.1:54786
注意:
netstat和ss命令的应用场景:
并发连接一万以内的使用netstat;高并发连接,超过一万的使用ss,因为它能获得第一手socket统计信息。
二、测试网络是否连接
2.1ping命令–测试网络连通性
ping 【选项】目标主机
[root@node2 ~]# ping www.baidu.com
PING www.a.shifen.com (180.101.49.12) 56(84) bytes of data.
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=2 ttl=128 time=6.81 ms
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=3 ttl=128 time=6.75 ms
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=4 ttl=128 time=6.39 ms
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=5 ttl=128 time=9.28 ms
64 bytes from 180.101.49.12 (180.101.49.12): icmp_seq=6 ttl=128 time=6.35 ms
^C #Ctrl+C 终止退出
--- www.a.shifen.com ping statistics ---
6 packets transmitted, 5 received, 16% packet loss, time 5009ms
rtt min/avg/max/mdev = 6.358/7.122/9.287/1.102 ms
2.2ping不通的两种情况
- 连接超时:可能对方防火墙打开,导致数据有去无回
- 无法访问目标主机:数据无法到达目标主机,可以查看网关配置是否正确
三、跟踪数据包
traceroute命令—测试从当前主机到目的主机之间经过的网络节点
traceroute 目标主机地址
注意:
- 此命令是追踪数据包的流向,一般在局域网使用,到达广域网上可能会被屏蔽(因为做了NAT地址转换,结果会以“*”显示)
- 追踪到的第一个网络节点是网关。
[root@node2 ~]# traceroute www.baidu.com
traceroute to www.baidu.com (180.101.49.12), 30 hops max, 60 byte packets
1 gateway (10.0.0.254) 0.118 ms 0.059 ms 0.089 ms
2 * * *
3 * * * #追踪到的第一个节点时网关,到达广播域被屏蔽,所以显示为‘*‘
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *^C^C
四、域名解析
nslookup命令—测试DNS域名解析
nslookup 目标主机地址 【DNS服务器地址】
注意:需要先使用yum安装bind-utils命令,否则无法使用nslookup命令
[root@node2 ~]# nslookup www.baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53 #提供DNS服务的地址
Non-authoritative answer:
www.baidu.com canonical name = www.a.shifen.com.
Name: www.a.shifen.com
Address: 180.101.49.11 #解析出来的地址
Name: www.a.shifen.com
Address: 180.101.49.12
补充内容:dig命令同样可以测试DNS域名解析,并且比nslookup命令解析域名信息更加详细
dns服务的端口号为53(TCP端口的53,用于安全连接;UDP端口的53,用于域名解析)
[root@node2 ~]# dig www.baidu.com
; <<>> DiG 9.9.4-RedHat-9.9.4-50.el7 <<>> www.baidu.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 3457
;; 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. 780 IN CNAME www.a.shifen.com. #www.baidu.com是www.a.shifen.com的别名
www.a.shifen.com. 226 IN A 180.101.49.12
www.a.shifen.com. 226 IN A 180.101.49.11
;; Query time: 4 msec
;; SERVER: 114.114.114.114#53(114.114.114.114) #DNS服务的端口号为53 (TCP端口的53,用于安全连接;UDP端口的53,用于域名解析)
;; WHEN: 三 12月 23 15:22:49 CST 2020
;; MSG SIZE rcvd: 101
配置DNS的三种方式:
[root@node2 ~]# vim /etc/resolv.conf
# Generated by NetworkManager
nameserver 114.114.114.114
##修改/etc/resolv.conf配置文件,nameserver 域名IP (dns服务地址可以用网关地址充当)
[root@node2 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=static
IPADDR=10.0.0.60
GATEWAY=10.0.0.254
NETMASK=255.255.255.0
DNS=10.0.0.1
DNS1=114.114.114.114 #添加DNS字段
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=96044822-bd06-4126-b107-cb87a0f94638
DEVICE=ens33
ONBOOT=yes
#直接配置本地解析
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
10.0.0.60 www.baidu.com
五、设置网络参数
5.1临时配置–使用命令调整网络参数
- 简单,快速,可直接修改运行中的网络参数
- 一般只适合在调试网络的过程中使用
- 系统重启以后,所做的修改将会直接失效
5.2固定设置–通过配置文件修改网络参数
- 修改各项网络参数的配置文件
- 适合对服务器设置固定参数时使用
- 需要重载网络服务或者重启以后才会生效
5.3设置网络接口参数ifconfig
- 设置网络接口的IP地址、子网掩码
ifconfig 网络接口 ip地址 netmask 子网掩码
ifconfig 网络接口 ip地址/子网掩码
- 禁用或者重新激活网卡
ifconfig 网络接口 up
ifconfig 网络接口 down
- 设置虚拟网络接口
ifconfig 网络接口:序号 IP地址
注意:一旦物理网卡down了,虚拟接口也会down掉
5.4设置路由记录route
- 添加到指定网段的路由记录
route add -net 网段地址 gw IP地址
[root@node2 ~]# route add -net 192.168.122.0/24 gw 10.0.0.254 #将192.168.122.0/24网段添加到路由表
[root@node2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 100 0 0 ens33
10.0.0.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
192.168.122.0 10.0.0.254 255.255.255.0 UG 0 0 0 ens33
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
- 删除到指定网段的路由记录
route del -net 网段地址
[root@node2 ~]# route del -net 192.168.122.0/24
[root@node2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 100 0 0 ens33
10.0.0.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
- 向路由表中添加默认网关记录
route add default gw IP地址
[root@node2 ~]# route add -net default gw 10.0.0.254
[root@node2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 0 0 0 ens33
0.0.0.0 10.0.0.254 0.0.0.0 UG 100 0 0 ens33
10.0.0.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
- 删除路由表中默认的网关记录
route del default gw IP地址
[root@node2 ~]# route del -net default gw 10.0.0.254
[root@node2 ~]# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 10.0.0.254 0.0.0.0 UG 100 0 0 ens33
10.0.0.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
5.5网络接口配置文件
在/etc/sysconfig/network-scripts/目录下
ifcfg-ens33:第1块以太网卡的配置文件
5.6启用、禁用网络接口配置
重启network网络服务
systemctl restart network ##生产环境一般不这么干
禁用、启用网络接口
ifdown ens33;ifup ens33
注意:
systemctl的方式是同时对所有网卡进行管理;ifup/ifdown是对单个网卡进行管理
5.7域名解析配置文件
/etc/resolv.conf文件
保存本机需要使用的DNS服务器的IP地址
5.8本地主机映射文件
/etc/hosts文件—保存主机名与IP地址的映射记录
hosts文件和DNS服务器的比较
- 默认情况下,系统首先从hosts文件查找解析记录,没有记录再DNS服务解析
- hosts文件只对当前的主机有效
- hosts文件可减少DNS查询过程,从而加快访问速度
注意:
在hosts文件里添加某个域名的假IP地址,相当于屏蔽了这个域名。(因为系统首先是从hosts文件里查找解析记录)