第18节Linux网络管理入门
本节所讲内容:
18.1 OSI七层模型和TCP/IP四层模型
18.1.1 OSI七层模型
OSI七层模型是任何与网络相关的知识都无法跳过去的知识点,很重要
1)OSI七层模型(从下往上):
第一层:物理层;代表设备:集线器、网线等
第二层:数据链路层;代表设备:二层交换机、网卡等
第三层:网络层;代表设备:路由器、三层交换机
第四层:传输层;代表设备:硬件防火墙
第五层:会话层;
第六层:表示层;后三层代表设备:各种应用程序
第七层:应用层;
2)OSI七层模型特点
第一项:各层只关心本层解决的问题,对其他层只提供接口
第二项:把复杂的问题分解开来处理,完成解决问题的目的
第三项:最让人吐槽的是无法实现
18.1.2 TCP/IP四层模型
TCP/IP四层模型是由两个重要协议:TCP协议/IP协议共同组成
把OSI七层模型整合优化成四层结构(从下往上):
第一层:物理层接口层
第二层:网络层
第三层:数据传输层
第四层:应用层
---现代网络通信过程中都在用TCP/IP四层模型
18.1.3 常见网络相关的协议及所用端口
在介绍协议之前要先介绍个重要知识点:TCP协议和UDP协议的区别
(1)TCP协议:TCP(传输控制协议),是面向连接的协议,在收发数据前,必须和对方建立可靠的连接,通过顺序号、确认号及划动窗口等确保传输可靠性。
(2)UDP协议:UDP(用户数据报协议),是一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务
总结:TCP与UDP的区别:
1.基于连接与无连接;
2.对系统资源的要求(TCP较多,UDP少);
3.UDP程序结构较简单;网络资源额外开销很小。所以传输速度可更快
4.TCP保证数据正确性、数据顺序,UDP不保证。
应用场景:
在要求传输可靠性、准确性高的方面一般用TCP如:WEB等
在要求传输可靠性、准确性不太高的方面用UCP如:DNS,rsyslog等
ARP:地址解析协议,将IP解析成MAC地址
DNS:域名解析协议,53/TCP OR 53/UDP
SNMP:网络管理协议,161/UDP
DHCP:动态主机配置协议,67-68/TCP
FTP:文件传输协议,20-21/TCP
HTTP:超文本传输协议,80/TCP
HTTPS:安全超文本传输协议,443/TCP
ICMP:Internet控制信息协议,
ping IP 用的就是ICMP协议
SMTP:简单邮件传送协议,25/TCP
TELNET:虚拟终端协议,23/TCP
TFTP:小文件传输协议,69/UDP
POP3:邮局协议,110/TCP
看到上面的介绍是不是有些眼晕?作为忘性比记性好的我肯定也是记不住上面的内容的,可以这样处理
如记不住POP3服务用哪个端口
[root@node-1 ~]# cat /etc/services |grep pop3
pop3 110/tcp pop-3 # POP version 3
pop3 110/udp pop-3
pop3s 995/tcp # POP-3 over SSL
pop3s 995/udp # POP-3 over SSL
这样更加方便

18.2 linux网络相关的调试命令
因为通过RedHat的RHCE考试,对于NetworkManager管理网络感觉很方便,以此结合这个工具对网络相关的设置进行说明
1)启动NetworkManager服务
[root@node-1 ~]# systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; disabled; vendor preset: enabled)
Active: active (running) since Sun 2020-03-08 19:20:35 CST; 6s ago
Docs: man:NetworkManager(8)
Main PID: 890 (NetworkManager)
CGroup: /system.slice/NetworkManager.service
└─890 /usr/ *** in/NetworkManager --no-daemon
对于NetworkManager管理网络使用也是RHCE考试必考知识点,在RHEL8中更是管理方便
2)安装网络管理工具
[root@node-1 ~]# yum -y install net-tools
18.2.1查看本机开放了哪些端口
使用netstat命令:
[root@node-1 ~]# netstat -tunlp
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:22 0.0.0.0: LISTEN 832/sshd
tcp6 0 0 :::22 :::
LISTEN 832/sshd
结合应用说明参数
-t 查看tcp协议服务
-u 查看ucp协议服务
-l 以长格式显示
-n 显示端口号
-p 显示进程号
18.2.2 IP地址配置文件说明
[root@node-1 ~]# cd /etc/sysconfig/network-scripts/
方法1:修改配置文件
[root@node-1 network-scripts]# vim ifcfg-eth0 --修改内核网卡名称为ifcfg-eth0
主要参数有(在此以设置静态IP来说明):
TYPE=Ethernet
BOOTPROTO=static
NAME=eth0
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.26.71
NETMASK=255.255.255.0
GATEWAY=192.168.26.2
DNS1=114.114.114.114
DNS2=223.5.5.5

以上内容在参加RHCE考试的时候是要求默写的,请大家注意大小写。网卡配置文件也要新建的,如果连IP都配置不好,余下的题目就不用再看了
要习惯LINUX远程中Ctrl+insert为复制,Shift+insert为粘贴,忘记Ctrl+c与Ctrl+v吧,
在这里给大家讲个小段子:
带了位新同事,用putty远程连接服务器,编辑完成个脚本顺手来了个Ctrl+s,结果锁定了此服务器,然后这位同事键入不了命令了。如何从锁屏中解除请聪明的读者自查吧
18.2.3 查看网卡物理连接是否正常
[root@node-1 ~]# nmcli connection show
NAME UUID TYPE DEVICE
eth0 5fb06bd0-0bb0-7ffb-45f1-d6edd65f3e03 ethernet eth0
[root@node-1 ~]# mii-tool eth0
eth0: negotiated 1000baseT-FD flow-control, link ok
方法2:用nmcli 命令来配置IP地址
[root@node-1 ~]# nmcli connection modify eth0 ipv4.addresses 192.168.26.71/24 ipv4.gateway 192.168.26.2 ipv4.dns 114.114.114.114 autoconnect yes
方法3:
[root@node-1 ~]# nmtui-edit 字符界面配IP, 了解一下

配置完成需要重启网络服务生效
[root@node-1 ~]# systemctl restart network
查看网卡IP配置信息:
[root@node-1 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:e2:83:c3 brd ff:ff:ff:ff:ff:ff
inet 192.168.26.71/24 brd 192.168.26.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fee2:83c3/64 scope link
valid_lft forever preferred_lft forever
18.3 实战-centos7服务器网卡聚合绑定
网络与网卡中断工作在实际工作中是不被接受的,所以centos7通过聚合--teamd解决此问题,代替了centos6的绑定--bond
1)添加两块网卡
[root@node-1 ~]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:e2:83:cd brd ff:ff:ff:ff:ff:ff
inet 192.168.26.71/24 brd 192.168.26.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fee2:83cd/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:0c:29:e2:83:c3 brd ff:ff:ff:ff:ff:ff
4: eth2: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether 00:0c:29:e2:83:d7 brd ff:ff:ff:ff:ff:ff
2)拷贝配置文件
[root@node-1 ~]# cd /usr/share/doc/teamd-1.27/example_ifcfgs/1
[root@node-1 1]# ll
total 12
-rw-r--r--. 1 root root 73 Mar 18 2017 ifcfg-eth1
-rw-r--r--. 1 root root 73 Mar 18 2017 ifcfg-eth2
-rw-r--r--. 1 root root 157 Mar 18 2017 ifcfg-team_test0
-rw-r--r--. 1 root root 157 Mar 18 2017 ifcfg-team_test0
[root@node-1 1]# cp ./* /etc/sysconfig/network-scripts/
[root@node-1 1]# cd /etc/sysconfig/network-scripts/
[root@node-1 network-scripts]# ll |grep ifcfg
-rw-r--r-- 1 root root 177 Feb 29 22:53 ifcfg-eth0
-rw-r--r-- 1 root root 73 Mar 8 19:58 ifcfg-eth1
-rw-r--r-- 1 root root 73 Mar 8 19:58 ifcfg-eth2
-rw-r--r-- 1 root root 254 Jan 3 2018 ifcfg-lo
-rw-r--r-- 1 root root 157 Mar 8 19:58 ifcfg-team_test0
3)修改配置文件
[root@node-1 network-scripts]# cat ifcfg-eth1
DEVICE="eth1"
NAME="eth1"
DEVICETYPE="TeamPort"
ONBOOT="yes"
TEAM_MASTER="team_test0"
[root@node-1 network-scripts]# cat ifcfg-eth2
DEVICE="eth2"
NAME="eth2"
DEVICETYPE="TeamPort"
ONBOOT="yes"
TEAM_MASTER="team_test0"
[root@node-1 network-scripts]# cat ifcfg-team_test0
DEVICE="team_test0"
NAME="team_test0"
DEVICETYPE="Team"
ONBOOT="yes"
BOOTPROTO=none
NETMASK=255.255.255.0
IPADDR=192.168.26.70
TEAM_CONFIG='{"runner": {"name": "activebackup"}}'
[root@node-1 network-scripts]# systemctl restart network
[root@node-1 network-scripts]# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host
valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether 00:0c:29:e2:83:cd brd ff:ff:ff:ff:ff:ff
inet 192.168.26.71/24 brd 192.168.26.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fee2:83cd/64 scope link
valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team_test0 state UP group default qlen 1000
link/ether 00:0c:29:e2:83:c3 brd ff:ff:ff:ff:ff:ff
inet6 fe80::20c:29ff:fee2:83c3/64 scope link
valid_lft forever preferred_lft forever
4: eth2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master team_test0 state UP group default qlen 1000
link/ether 00:0c:29:e2:83:c3 brd ff:ff:ff:ff:ff:ff
inet6 fe80::20c:29ff:fee2:83d7/64 scope link
valid_lft forever preferred_lft forever
5: team_test0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 00:0c:29:e2:83:c3 brd ff:ff:ff:ff:ff:ff
inet 192.168.26.70/24 brd 192.168.26.255 scope global team_test0
valid_lft forever preferred_lft forever
inet6 fe80::20c:29ff:fee2:83c3/64 scope link
valid_lft forever preferred_lft forever
4)操作成功
上面的显示可以看出,eth1、eth2、team_test0的MAC地址是一样的
[root@node-1 network-scripts]# teamdctl team_test0 state
setup:
runner: activebackup
ports:
eth1
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
eth2
link watches:
link summary: up
instance[link_watch_0]:
name: ethtool
link: up
down count: 0
runner:
active port: eth1
同样的道理以上配置也可以用nmcli来实现,不过操作起来麻烦些
[root@node-1 ~]#nmcli connection add type team con-name team0 ifname team0 config '{"runner": {"name": "activebackup"}}'
[root@node-1 ~]#nmcli connection modify team0 ipv4.address 192.168.26.70/24 ipv4.methed manual autoconnect yes
[root@node-1 ~]#nmcli connection add type team_slave con-name eth1 ifname eth1 master team0 connection-autoconnect yes
[root@node-1 ~]#nmcli connection add type team_slave con-name eth2 ifname eth2 master team0 connection-autoconnect yes
[root@node-1 ~]# systemctl restart network
这样也可以实现