[Linux] Linux网络管理
目录
网络基础回顾
OSI 模型
TCP/IP 模型
IPV4 地址
IPV4 路由
查看网络配置
网卡信息
查看 link
查看 IP
查看路由
查看 dns
网络连通性测试
ping测试
路由跟踪
ss工具
配置网络
环境准备
自动配置
手动配置
nmcli命令
网络启停
设备控制
自动获取和手动配置
网络配置文件
配置主机名和名称解析
配置主机名
配置名称解析
配置 /etc/hosts
配置 DNS 服务器
小知识:
网络基础回顾
OSI 模型
-
物理层:提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。
-
数据链路层:在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。
-
网络层:控制分组传送系统的操作、路由选择、拥护控制、网络互连等功能,它的作用是将具体的物理传送对高层透明。
-
传输层:提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。
-
会话层:提供两进程之间建立、维护和结束会话连接的功能;提供交互会话的管理功能,如三种数据流方向的控制,即一路交互、两路交替和两路同时会话模式 。
-
表示层:代表应用进程协商数据表示;完成数据转换、格式化和文本压缩。
-
应用层:提供OSI用户服务,例如事务处理程序、文件传送协议和网络管理等。
TCP/IP 模型
IPV4 地址
IPV4 路由
查看网络配置
网卡信息
网卡名称:
-
旧名称,eth0 eth1。(Ethernet)
-
新名称,根据网卡的拓扑类型命名。例如ens192,eno4。
linux网络接口传统的名称为eth0 eth1 eth2 ….ethN。然而这种机制会引起一些问题,例如网络接口的增加和删除。
在rhel7或者更高版本中,接口命名规则如下:
-
前2个字符:Ethernet 接口以en开头,WLAN接口以wl开头,WWAN接口以ww开头。
-
下一个字符:o(onboard)代表板载设备,s(slot)代表PCI热插拔,p代表pci接口网卡。
-
最后N表示index ID或者port。
例如
-
eno1,代表Ethernet 类型、板载设备、端口号是1的网卡。
-
wlp4s0,代表位于PCI总线4上插槽0中的WLAN卡。如果该卡是一个多功能设备(具有多个端口或者具有一些其他功能)。示例,enp0s1f0代表位于PCI总线0上插槽1中的以太网卡的功能0。
-
如果无法分配固定接口名,将使用传统方式ethN命名。
查看 link
关注mac地址:00:0c:29:6e:7c:e9
。
# 查看网络设备清单
[root@rocky8 ~]# ip link
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:6e:7c:e9 brd ff:ff:ff:ff:ff:ff
... ...
# 查看单个网络设备信息
[root@rocky8 ~]# ip link show ens192
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP mode DEFAULT group default qlen 1000
link/ether 00:0c:29:6e:7c:e9 brd ff:ff:ff:ff:ff:ff
查看 IP
关注IP地址和掩码位数:10.1.8.10/24。
[root@rocky8 ~]# ip addr show ens192
2: ens192: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:6e:7c:e9 brd ff:ff:ff:ff:ff:ff
inet 10.1.8.10/24 brd 10.1.8.255 scope global noprefixroute ens192
valid_lft forever preferred_lft forever
inet6 fe80::1ef8:97bd:4b70:c805/64 scope link noprefixroute
valid_lft forever preferred_lft forever
查看路由
default
代表主机的网关,也就是10.1.8.2
。
[root@rocky8 ~]# ip route
default via 10.1.8.2 dev ens192 proto static metric 100
10.1.8.0/24 dev ens192 proto kernel scope link src 10.1.8.10 metric 100
192.168.122.0/24 dev virbr0 proto kernel scope link src 192.168.122.1
说明:
-
直连网络10.1.8.0/24和192.168.122.0/24,可以 直接通信。
-
其他网络中主机,通过默认路由发送到目标,这里是default对应的条目,也就是10.1.8.2。
查看 dns
/etc/resolv.conf 文件中nameserver指明服务想哪个DNS服务器查询域名对应IP。
[root@rocky8 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search demisse.cloud
nameserver 218.2.135.1
网络连通性测试
ping测试
ping www.baidu.com -c 4
路由跟踪
#若ping不通,可以跟踪路由,查看数据最远到达位置
mtr -n 1.1.1.1
ss工具
ss命令用于查看系统中网络状态信息
ss -ltnu4
-
-l
(listening):仅显示 监听状态 的套接字(服务端端口)。 -
-t
(TCP):显示 TCP 协议 的套接字。 -
-n
(numeric):以 数字形式 显示 IP 和端口(不解析域名和服务名,如22
而不是ssh
)。 -
-u
(UDP):显示 UDP 协议 的套接字。 -
-4
(IPv4):仅显示 IPv4 的套接字(不包括 IPv6)。 -
-a
:查看所有
配置网络
环境准备
在虚拟机中新添加一个网卡,设置为
启动虚拟机
#验证网卡是否添加成功
ip -br link
自动配置
#服务器配置
[17:10:59 root@client-znf ~]# nmtui
使用上下键、tab键进行移动,回车选中条目
进入编辑连接,找到有线连接,进入替换为ens224
配置完后点击确定,返回到主界面,移动到启用连接
启用ens224
退出该界面。
手动配置
其余步骤相同
自动配置用在无静态IP地址需求的其他情况,手动配置用在需要静态IP的情况。
nmcli命令
网络启停
如果网络停用了,右上角网络连接会消失。
#停用网络
nmcli networking off
#启用网络
nmcli networking off
设备控制
device是设备(网卡),connection是连接(网卡的配置)
#显示设备列表状态信息
nmcli device
#断开设备链接
[10:57:59 root@server-znf ~]# nmcli device disconnect ens224
#连接设备
[11:03:07 root@server-znf ~]# nmcli device connect ens224
自动获取和手动配置
#添加连接
nmcli connection add type ethernet
#查看
nmcli connection show
#删除连接
nmcli connection delete ethernet
#添加动态连接
nmcli connection add type ethernet ifname ens224 con-name ens224-dynamic
#查看
ip -br a
#添加静态连接
nmcli connection add type ethernet ifname ens224 con-name ens224-static
#配置静态连接
nmcli connection modify ens224-static \
ipv4.method manual \
ipv4.addresses 10.1.1.10/24 \
ipv4.gateway 10.1.1.2 \
ipv4.dns 8.8.8.8
#启用静态连接
nmcli connection up ens224-static
#禁用ipv6
nmcli connection modify ens224-static ipv6.method disabled
#启用
nmcli connection up ens224-static
#查看
ip -br a
网络配置文件
提示:尽量不要通过手动修改配置,来配置网络。
# 动态配置
[root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192-dynamic
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=dhcp
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=default
NAME=ens192-dynamic
UUID=27d7dd0a-a5d1-4ed8-81ad-1051f89f89d1
DEVICE=ens192
ONBOOT=yes# 静态配置
[root@server ~]# cat /etc/sysconfig/network-scripts/ifcfg-ens192-static
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
IPADDR=10.1.8.20
PREFIX=24
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=default
NAME=ens192-static
UUID=652c8436-ac91-4697-b4ad-43d8dac83f8f
DEVICE=ens192
ONBOOT=yes
GATEWAY=10.1.8.2
DNS1=10.1.8.2# 某个网卡的路由配置
[root@server ~]# cat /etc/sysconfig/network-scripts/route-ens192-static
ADDRESS0=192.168.50.0
NETMASK0=255.255.255.0
GATEWAY0=10.1.8.2
配置主机名和名称解析
配置主机名
主机名规范:短名称+域名,例如rocky8.demisse.cloud。主机名是rocky8,域名是demisse.cloud。
# 查看主机名
[root@rocky8 ~]# hostname
rocky.demisse.cloud# hostnamectl命令修改主机名同时会同修改配置文件/etc/hostname
[root@rocky8 ~]# hostnamectl set-hostname rocky8.demisse.cloud
# 或者直接修改配置文件
[root@rocky8 ~]# vim /etc/hostname
rocky8.demisse.cloud# 重启依然有效
[root@rocky8 ~]# reboot# hostname命令设置的主机名,重启将失效。
配置名称解析
当访问其他主机的时候,名称也会映射为IP地址,与目标主机通信。
linux服务器解析名称顺序如下:
-
/etc/hosts 文件
-
DNS 服务器
配置 /etc/hosts
[root@rocky8 ~]# vim /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain610.1.8.10 rocky8.demisse.cloud rocky8 abc haha[root@rocky8 ~]# ping -c2 rocky8
PING rocky8.demisse.cloud (10.1.8.10) 56(84) bytes of data.
64 bytes from rocky8.demisse.cloud (10.1.8.10): icmp_seq=1 ttl=64 time=0.024 ms
64 bytes from rocky8.demisse.cloud (10.1.8.10): icmp_seq=2 ttl=64 time=0.054 ms--- rocky8.demisse.cloud ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1023ms
rtt min/avg/max/mdev = 0.024/0.039/0.054/0.015 ms[root@rocky8 ~]# ping -c2 abc
PING rocky8.demisse.cloud (10.1.8.10) 56(84) bytes of data.
64 bytes from rocky8.demisse.cloud (10.1.8.10): icmp_seq=1 ttl=64 time=0.026 ms
64 bytes from rocky8.demisse.cloud (10.1.8.10): icmp_seq=2 ttl=64 time=0.043 ms--- rocky8.demisse.cloud ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1034ms
rtt min/avg/max/mdev = 0.026/0.034/0.043/0.010 ms[root@rocky8 ~]# ping rocky9
ping: rocky9: 未知的名称或服务
配置 DNS 服务器
使用 nmtui 配置DNS服务器。
# 删除 DNS 服务器配置
[root@rocky8 ~]# nmcli connection modify ens160 -ipv4.dns 218.2.135.1
[root@rocky8 ~]# nmcli connection up ens160# 断开另外一个网卡
[root@rocky8 ~]# nmcli device disconnect ens192# 确保以下文件中没有 nameserver 记录
[root@rocky8 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search demisse.cloud[root@rocky8 ~]# ping baidu.com
ping: baidu.com: 未知的名称或服务# 配置DNS服务器,再验证
[root@rocky8 ~]# nmcli connection modify ens160 ipv4.dns 218.2.135.1
[root@rocky8 ~]# nmcli connection up ens160
连接已成功激活(D-Bus 活动路径:/org/freedesktop/NetworkManager/ActiveConnection/24)
[root@rocky8 ~]# cat /etc/resolv.conf
# Generated by NetworkManager
search demisse.cloud
nameserver 218.2.135.1# ping公网服务器,通过 dns 服务器获取地址
[root@rocky8 ~]# ping -c2 baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=128 time=35.5 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=128 time=34.6 ms--- baidu.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 34.667/35.115/35.563/0.448 ms[root@rocky8 ~]# ping -c2 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=3.15 ms
64 bytes from 180.101.50.242 (180.101.50.242): icmp_seq=2 ttl=128 time=3.19 ms--- www.a.shifen.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1002ms
rtt min/avg/max/mdev = 3.149/3.167/3.185/0.018 ms# baidu.com 域中没有 hello 该主机,所以 ping
[root@rocky8 ~]# ping hello.baidu.com
ping: hello.baidu.com: 未知的名称或服务
小知识:
如果在client上执行命令ssh zhangsan@server,访问失败,可能的原因有:
-
网络问题
-
物理链路:是否连接网线、网卡是否有问题
-
逻辑配置:客户端和服务端网络配置,ip手动配置错误,网关配置错误,dns或者/etc/hosts有问题,networking是否打开
-
防火墙设置
-
ssh服务问题
-
ssh服务是否启动、ssh服务配置是否禁止用户登录、客户端版本和服务端版本不匹配