第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/sbin/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 这样也可以实现