DC's blog DC's blog
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)

DC

愿我一生欢喜,不为世俗所及.
首页
  • 计算机基础
  • linux基础
  • mysql
  • git
  • 数据结构与算法
  • axure
  • english
  • docker
  • opp
  • oop
  • 网络并发编程
  • 不基础的py基础
  • 设计模式
  • html
  • css
  • javascript
  • jquery
  • UI
  • 第一次学vue
  • 第二次学vue
  • Django
  • drf
  • drf_re
  • 温故知新
  • flask
  • 前后端不分离

    • BBS
    • 订单系统
    • CRM
  • 前后端部分分离

    • pear-admin-flask
    • pear-admin-django
  • 前后端分离

    • 供应链系统
  • 理论基础
  • py数据分析包
  • 机器学习
  • 深度学习
  • 华中科大的网课
  • cursor
  • deepseek
  • 杂文
  • 罗老师语录
  • 关于我

    • me
  • 分类
  • 归档
GitHub (opens new window)
  • 计算机基础

  • linux基础

    • 准备工作
    • 初识shell与基础常用命令
    • 文件管理之基础命令
    • 文件管理之四大模式
    • 文件管理之命令补充
    • 文件管理之文件系统
    • 权限管理之用户与组
    • 权限管理之文件权限
    • 权限管理之ACL
    • 权限管理之su与sudo
    • 软件包管理之rpm
    • 软件包管理之yum
    • 查看进程
    • 管理进程
    • 存储管理之传统磁盘管理
    • 存储管理之LVM
    • 网络管理
      • 网卡名字修改
      • 网络相关的一些命令
        • lspci
        • mii-tool
        • ping
      • ifconfig
        • 基本选项
        • 命令结果解析
      • 万兆网卡的MTU
        • 千兆万兆区别
        • 永久配置
      • 解决溢出数严重的问题
        • 储备知识
        • 解决过程
      • 网卡相关配置文件
        • 解析 ifcfg-eth0文件
        • 配置ifcfg-eth1文件
      • DNS相关配置文件
      • /etc/services
      • 交换与路由
      • Linux主机充当路由
        • 三大前提
        • 转发流程
      • 网关/路由
        • 分类、优先级
        • 查看路由表信息
        • 添加/删除路由
        • 配置永久路由
      • 路由实验
    • shell基础
    • crond计划任务
    • 系统优化
  • mysql

  • git

  • 数据结构与算法

  • axure

  • english

  • docker

  • IT_Need
  • linux基础
DC
2022-10-08
目录

网络管理

# 网卡名字修改

以太网协议规定上网的机器必须有一块网卡, 俗成以太网卡

CentOS6及以前, 第一块、第二块网卡依次命名为 eth0、eth1... CentOS7网卡的命名为ens33..
除此之外,都有一块命名为lo虚拟的本地回环网卡.. 数据包到网卡了,没有往交换机走,原路返回,自己发给自己.
127.0.0.1 相当于一台计算机即当客户端也当服务端,用于保证软件本身的开发没问题,排除网络的因素

"""-- 1.GRUB添加kernel参数 --"""
vim /etc/sysconfig/grub # -- GRUB_CMDLINE_LINUX="rhgb quiet 'net.ifnames=0 biosdevname=0'"

"""-- 2.加载到引导分区 --"""
grub2-mkconfig -o /boot/grub2/grub.cfg

"""-- 3.修改网卡配置文件名称以及配置文件里网卡的名称 --"""
cd /etc/sysconfig/network-scripts/
mv ifcfg-ens33 ifcfg-eth0
sed -i "s#ens33#eth0#g" ifcfg-eth0 # -- 将ens33改为eth0

## 注意哦,前三步没有先后顺序,怎么样都可以

"""-- 重启系统生效 --"""
reboot
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

关机为vm虚拟机添加一张NAT模式的网卡.. 添加后开机 可以发现第二块网卡的默认名字是eth1

"""-- 临时激活网卡 --"""
[root@localhost ~]# ifconfig eth1 up
[root@localhost ~]# ifconfig | grep eth[01]
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
1
2
3
4
5

# 网络相关的一些命令

# lspci

查看当前系统所连接的所有网卡

[root@localhost ~]#  lspci | grep -i eth
# 可以看到,现目前有两块以太网协议的网卡
02:01.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
02:04.0 Ethernet controller: Intel Corporation 82545EM Gigabit Ethernet Controller (Copper) (rev 01)
1
2
3
4

# mii-tool

检测网卡是否已经连接好网线

[root@localhost ~]# mii-tool eth1
eth1: negotiated 1000baseT-FD flow-control, link ok # -- link ok代表该网卡是接了网线的
1
2

# ping

用于测试两台主机网络是否连通

ping 目标IP地址
ping -c 次数 目标IP地址

原理: ping命令会基于ICMP协议(TCP/IP协议簇的一个子协议)给对方发送数据包,若对方回应,就代表连通了.

echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_all
设置此命令后,其他任何主机都ping不同本机.. 通常会在整个集群架构的网络环境部署完成后进行该设置..
1
2

# ifconfig

# 基本选项

ifconfig                         -- 查看已经激活的网卡信息
ifconfig -a                 -- 查看所有网卡信息(包括未激活的网卡)
ifconfig eth0                 -- 查看单个网卡信息

ifconfig eth1 up         -- 临时 开启网卡
ifconfig eth1 down         -- 关闭网卡 实验时,别关闭eth0网卡,xshll远程连接是通过该网卡连接的..

ifconfig eth1 192.168.1.122 netmask 255.255.255.0 or ifconfig eth1 192.168.1.122/24
                                                -- 临时 为网卡设定IP和掩码 (重启服务器失效)

ifconfig eth0:1 192.168.0.2 netmask 255.255.255.0
                                                -- 临时 为网卡配置子接口
ifconfig eth0:1 down or ifconfig eth0:1 del 192.168.0.2
                                               -- 删除该子接口 不必指定子网掩码

注意哦! 通过ifconfig命令的配置都是 临时 配的!! 重启机器后就恢复如初了..
若想永久配置,需要修改 /etc/sysconfig/network-scripts 路径下面的配置文件

## -- 若要使用ifconfig命令,需要安装 yum install net-tools -y
[root@localhost ~]# rpm -qf `which ifconfig`
net-tools-2.0-0.25.20131004git.el7.x86_64

"""
eth0:1 此网卡是不存在的,是没有mac地址的,可叫做虚拟网卡
       相当于给eth0配了两个IP地址.. 但流量走的都是同一张网卡
真实环境下,若要给服务器配置两个IP地址,会使用两个网卡,两个网卡处于不同的网段并连接不同的交换机..这样靠谱些.
"""
[root@localhost ~]# ifconfig eth0:1 192.168.0.2/24
[root@localhost ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 172.16.150.131  netmask 255.255.255.0  broadcast 172.16.150.255
				... ... ...
eth0:1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.0.2  netmask 255.255.255.0  broadcast 192.168.0.255
        ether 00:0c:29:90:30:3e  txqueuelen 1000  (Ethernet)
... ... ... 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18

# 命令结果解析

ifconfig eth0

""" 第一行
从flags标记可知该接口已启用,支持广播、组播. MTU最大传输单元:1500字节
flags参数:
    UP:表示“接口已启用”/网卡已经激活
    BROADCAST:表示该网卡支持广播,能收到广播包
    RUNNING:表示网卡已连接网线,该网线能正常工作
    MULTICAST:表示该网卡支持多播.. 
            多播/组播简单来说就是将多台机器放到一个组里,发包的时候,只有这个组里的机器能收到
		promisc:繁杂模式,简单来说,这台机器所有数据包都可以收到
		        我们知道局域网里广播的数据包,计算机收到后发现目标主机不是自己,会将这个包丢掉
		        若该计算机开启了繁杂模式,就不会将此广播包丢掉.抓包.
		        繁杂模式通常用于kali等渗透测试,安全方面的配置..
		        感兴趣可以参考:https://www.cnblogs.com/linhaifeng/articles/13949611.html
						
`ifconfig eth0 promisc`   # -- 开启繁杂模式
`ifconfig eth0 -promisc`  # -- 关闭繁杂模式
"""
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        # -- 网卡的IPv4地址、子网掩码、本网段的广播地址
        inet 172.16.150.131  netmask 255.255.255.0  broadcast 172.16.150.255
        # -- IPv6地址、掩码长度、作用域,link表示仅该接口有效    
        inet6 fe80::20c:29ff:fe90:303e  prefixlen 64  scopeid 0x20<link>
        # -- 以太网卡的MAC地址、以太网卡最大传输队列长度,接口类型为Ethernet
        ether 00:0c:29:90:30:3e  txqueuelen 1000  (Ethernet)
        """ R接收 T发送"""
        # -- 从该主机开机那一刻到现在,此接口/网卡累积接收的报文个数,这些包总共有多大
        RX packets 3942  bytes 764610 (746.6 KiB)
        # -- 累积接收报文错误数、丢弃数、溢出数(很重要!!!)、冲突的帧数
        RX errors 0  dropped 0  overruns 0  frame 0
        # -- 从该主机开机那一刻到现在,此接口/网卡累积发送的报文个数,总字节数
        TX packets 842  bytes 130860 (127.7 KiB)
        # -- 累积发送报文错误数、丢弃数、溢出数、载荷数(发生carrier错误而丢失的数据包数)、冲突数 
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33

# 万兆网卡的MTU

千兆 1000Mb/s 管理网络-- MTU: 1500 万兆 10000Mb/s 集群化作业 -- MTU: 9000

# 千兆万兆区别

现目前我们用的网卡是双绞线接个水晶头连接的千兆网卡, 主要用于管理网络; 保持MTU默认值1500kb就行..

若涉及到集群化作业, 比如用集群做存储.. 通常就需要用到万兆网卡.. MTU值应该设置为9000kb..
万兆(10G)网卡需要搭配光纤模块、光纤、万兆交换机(几十万RMB,很贵)使用 Hhhh
像阿里云提供给中小型公司的虚机就是构建在一套集群之上, vm之间的通信本来就比物理主机慢, 为了尽可能减少网络IO, 提高网络传输效率, 阿里云在硬件方面用的就是万兆网卡.... 
小声bibi,若是用真机做集群化架构,需要进行网卡绑定, 涉及到team技术、lacp协议等.. (集群相关的都是高阶知识,我暂且只会学基础,等我以后开发转运维,再捣腾捣腾, 哈哈哈哈哈)

# 永久配置

ifconfig eth0 mtu 9000 临时配置MTU值,重启服务器就失效了.. 那如何永久配置呢?

解决方案: 在 /etc/rc.local文件里添加 修改MTU值的命令...
原理: /etc/rc.local文件在计算机开机的时候,它会自动运行, 所以一开机就需要运行的命令都可写到此文件里

注意: 记得执行命令 chmod +x /etc/rc.d/rc.local

## -- 可以看到/etc/rc.local的文件类型是l 代表软链接
## -- 源文件是 /etc/rc.d/rc.local
[root@localhost ~]# ll /etc/rc.local
lrwxrwxrwx. 1 root root 13 6月  30 23:42 /etc/rc.local -> rc.d/rc.local

## -- /etc/rc.d/rc.local文件是没有可执行权限的 意味着除了root用户的其他用户都不能执行它
## -- 所以需要赋予其他用户对此文件的可执行权限 chmod +x /etc/rc.d/rc.local
[root@localhost ~]# ll /etc/rc.d/rc.local
-rw-r--r--. 1 root root 473 1月  14 2022 /etc/rc.d/rc.local
[root@localhost ~]# chmod +x /etc/rc.d/rc.local

## 在里面添加内容,ifconfig eth0 mtu 9000
[root@localhost ~]# vim /etc/rc.local
1
2
3
4
5
6
7
8
9
10
11
12
13

# 解决溢出数严重的问题

ifconfig结果中第6行的 overruns 溢出数是非常重要的指标!!!

ethtool -g eth0
ethtool -G eth0 rx 2048
ethtool -G eth0 tx 2048

# 储备知识

1> 全|半双工通信
   全双工是指交换机在发送数据的同时也能够接收数据,两者同步进行,
   这好比我们平时打电话一样,说话的同时也能够听到对方的声音... 半双工好比是对讲机...
   目前网卡一般都应该采用全双工模式,全双工的好处在于迟延小、冲突少、速度快.
2> 数据链路层三大功能之一差错监测: 循环冗余检验码CRC
   步骤关键字: 多项式 异或操作(异为1 同为0)
   假设有数据1101011011需要传输, 采用CRC的生成多项式为P(X)=X^4+X+1, 请计算添加了CRC校验码之后的数据.
   解: 多项式位串为 --> 10011, 模二除法得到余数1110, 所以得到结果11010110111110
3> 网卡工作原理:
   先从OSI七层协议视角,回顾下发包:
      应用层产生一个数据,依次往下发,包装TCP/UDP的头 -- 数据段;包装网络IP的头 -- 数据报; 
      包装以太网的头 -- 数据帧frame; 接着转成二进制位通过网线传输给对方.
   网卡发包:
      1. ip数据报+14个字节的mac头/以太网头变成数据帧frame
      2. frame被拷贝到网卡芯片内部的缓冲区,由网卡处理
      3. 网卡芯片为frame添加头部同步信息和CRC校验(此时才是真正可以发送的包),然后发送该包
   网卡收包:
      1. 网络包到达网卡,网卡先检查数据包的CRC校验,保证其完整性和正确性,
         若不完整会丢弃(丢弃不可怕,TCP协议会重新发包的);若完整会去掉它的头得到frame
      2. 网卡将frame拷贝到网卡内部的FIFO(frist in frist out先进先出)缓冲区
      3. 网卡驱动程序会产生硬件中断,提醒OS干活,OS产生软件中断,将frame从网卡拷贝到内存中
				 然后一层层的拆包
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22

# 解决过程

正常情况, 网卡一边接收数据包放到网卡缓冲区中,OS一边从中取出数据包到内存中, 网卡缓冲区不会有溢出.
若遇到高并发的情况,流量激增,网卡缓冲区满了,往网卡缓冲区里挤的网络包速度远大于OS取的速度...
新的网络包进不了缓冲区,就会出现溢出.. overruns值升高..
这会导致客户端就访问不进来了,用户等待时间较长,体验很差!!

排除网络的干扰

""" step1:查看是否连接网线 """
[root@localhost ~]# mii-tool eth0
eth0: negotiated 1000baseT-FD flow-control, link ok
""" step2:查看工作模式是否正常 """
[root@localhost ~]# ethtool eth0 | egrep 'Speed|Duplex'
	Speed: 1000Mb/s		## -- 千兆网卡
	Duplex: Full			## -- Full 代表全双工 half的话代表半双工
""" step3:查看网卡与MTU是否匹配 """
[root@localhost ~]# ifconfig eth0 | grep mtu
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
""" step4:查看CRC校验是否正常 """
[root@localhost ~]# ethtool -S eth0 | grep crc 
     rx_crc_errors: 0  ## -- crc错误值大通常是因为服务器外部的网络环境有问题导致的
     
Speed、Duplex、CRC之类的都没问题,基本可以排除物理层面的干扰
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15

网络没问题, 那么问题就出现在服务器上了

【监测overruns值】
    while true;do ifconfig eth0 | grep RX | grep overruns;sleep 0.5;clear;done
    监测的时候,某一时刻,overruns达到了上百,又降了下来(TCP重新发包了),不用过于担心
    若值一直一直在增长,意味着在一直累积溢出的包,用户一直访问不进来,体验极差..

解决方案:
    低配版 -- 单台服务器,调大缓冲区..
             缓冲区最高4096,不够了咋整?一个网卡的性能有极限的,用多个网卡 -- 垂直扩展
    高配版 --加机子,集群化作业,多台机器抗压力,流量就被分散了. -- 水平扩展!!!
    So!开发不能鄙视运维,开发的软件再好,最多支持几千并发,但运维集群化作业能把软件的并发性能放大几十上百倍..

[root@localhost ~]# ethtool -g eth0   # -- 查看
Ring parameters for eth0:
Pre-set maximums:
RX:		4096		# -- 接收的缓冲区大小
RX Mini:	0
RX Jumbo:	0
TX:		4096		# -- 传输的缓冲区大小
Current hardware settings: # -- 当前硬件的设置
RX:		256
RX Mini:	0
RX Jumbo:	0
TX:		256

ethtool -G eth0 rx 2048  # 设置调大
ethtool -G eth0 tx 2048  # 设置调大
Ps:还可以想着将网卡降速..这想法挺奇怪的Hhhh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

# 网卡相关配置文件

# 解析 ifcfg-eth0文件

vim /etc/sysconfig/network-scripts/ifcfg-eth0

systemctl restart network 重启网络服务会去加载这些配置文件

▲ 必要字段
"""
BOOTPROTO若设置为dchp,表明动态获取IP地址,在租约时间内IP地址不会变..到期了后重新分配IP..
IPADDR、NETMASK、GATEWAY、DNS1、DNS2这几个字段只有在BOOTPROTO的值为static或none时才会生效..
IPADDR、NETMASK保证了局域网里的通信,GATEWAY、DNS1、DNS2保证了与外网的通信.
    IPADDR的配置要注意,vm网卡若用的桥接模式要防止占用其他设备的IP,若用的NAT模式没关系.
    DNS的地址最多配置3个,配置后会写入/etc/resolv.conf文件中
    GATEWAY的值可以通过`route -n`命令查看路由器上配置的网关地址;
企业里通常是集群化作业,so,BOOTPROTO的值都会是static!!!!!!
Ps:可以先DHCP动态获取IP,然后在静态配置时,去查看/etc/resolv.conf文件里面已设置的DNS(nameserver字段的值)	 通常是8.8.8.8 和 网关的地址

NM_CONTROLLED可以不添加,前提是执行命令
   systemctl stop NetworkManger	systemctl disable NetworkManger
"""
TYPE="Ethernet"             ## -- Ethernet类型表明是以太网卡!
BOOTPROTO="static"          ## -- none 或者 static 都可以手动指定静态IP
IPADDR = 192.168.0.100      ## -- IP地址
NETMASK = 255.255.255.0     ## -- IP掩码地址
GATEWAY = 192.168.0.254     ## -- 网关地址
DNS1 = 192.168.0.254        ## -- 第一个DNS地址
DNS2 = 8.8.8.8              ## -- 第二个DNS地址
NAME="eth0"                 ## -- 名字
DEVICE="eth0"               ## -- 设备名
ONBOOT="yes"                ## -- 代表网卡是否跟着NETWORK网络服务的启动而激活
NM_CONTROLLED="no"          ## -- 表明网卡不受NetworkManager服务的影响



▲ 其他不必要字段
## -- 配置网卡路由文件的时候需要进行此字段的设置 表示DHCP的路由配置不生效!!
DEFROUTE = "no"
## -- 配置网卡路由文件的时候需要进行此字段的设置 值为no表示DHCP设置的路由允许被覆盖!!
PEERROUTES = "no"
## -- 网卡的MAC地址信息,centos7里没有,centos6里有
HWADDR=14:da:e9:eb:a9:61  
## -- 是否允许普通用户启动或者停止该网卡
USERCTL=no
## -- 是否在该网卡上启动IPV6的功能
IPV6INIT=no        
## --是否允许网卡在启动时向DHCP服务器查询DNS信息,该字段了解即可
    # 设置为yes时,此文件设置的DNS将覆盖/etc/resolv.conf
    # BOOTPROTO若设置为dchp(配置文件中的DNS1是不生效的),则默认为yes,dhcp的dns会覆盖/etc/resolv.conf
PEERDNS=yes          		
## -- 若冲突,可以直接删除
UUID="3919d7da-ef03-40a0-814e-d78c047e1f87" 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45

# 配置ifcfg-eth1文件

# -- 可以发现只有网卡eth0的配置文件,虽然新增了eth1网卡,但系统并没有自动为它生成配置文件,所以eth1是临时的
[root@localhost ~]# ls /etc/sysconfig/network-scripts | grep ifcfg-eth
ifcfg-eth0

cd /etc/sysconfig/network-scripts/
cp ifcfg-eth0 ifcfg-eth1
vim ifcfg-eth1

"""
若不想通过172.16.150.100这个IP地址访问外网就没必要指定GATEWAY网关等字段信息
真正的生产环境里,也不会给每块网卡配置网关,一块网卡配置了就行了
So,我们可以将eth0网卡用于外网通信,eth1网卡用于内网通信...
"""
TYPE="Ethernet"
BOOTPROTO="static"
IPADDR = 172.16.150.100
NETMASK = 255.255.255.0
#GATEWAY = 172.16.150.2
#DNS1 = 172.16.150.2 
#DNS2 = 8.8.8.8
NAME="eth1"	
DEVICE="eth1"	
ONBOOT="yes"
NM_CONTROLLED="no" 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24

# DNS相关配置文件

/etc/resolv.conf      DNS解析文件, 可设置DNS指向,最多3个
/etc/hosts                     本地名称解析文件, 优先于DNS解析文件

DNS查询顺序 
     浏览器DNS缓存 --> 本地系统DNS缓存 --> 本地计算机HOSTS文件 --> ISP DNS缓存 --> 递归or迭代搜索

▲ 一个小实验,修改配置文件/etc/hosts 在末尾添加1.1.1.1 www.baidu.com
[root@localhost ~]# ping www.baidu.com
PING www.a.shifen.com (14.215.177.39) 56(84) bytes of data.
... ...
[root@localhost ~]# ping www.baidu.com
PING www.baidu.com (1.1.1.1) 56(84) bytes of data.  # -- 百度域名被解析成了1.1.1.1
... ...

某公司用A B C D E..HI..等20台机器搭建了一个集群!! A要跟其它机器通信,需要知道目标主机的IP地址..
并且在相应的配置文件中配置目标主机的IP..
这样做不好,一方面IP地址难记;另一方面主机的IP地址日后可能会变..一变,20台主机重新修改配置文件很麻烦..


最规范的做法:
    在公司内部自己搭建个DNS服务;会先给这20台机器每台机器起个名字,也就是域名,每个域名对应一个IP地址记录在DNS服务器中..`hostnamectl set-hostname egon.xxx.com`永久设置主机名.
    这样一来,配置文件中只需要使用域名即可,当A主机与集群中其他机器通信时,会去自己搭建的DNS服务器上查一查对应的域名解析.. 当某个主机的IP地址变了,集群中20级台机器的配置文件都不需要动,改DNS服务器上的某条解析记录即可..
因为是内部搭建的DNS服务器,域名还不用注册.. 也便于集群中增加主机时的操作..
    搭建个DNS服务不仅可以增加可扩展性,DNS服务器还可以做负载均衡等..

偷懒的做法:
    不搭建DNS服务,在一台机器上将20台机器的解析记录写入/etc/hosts文件,再给每台机器都发送一份,但意味着每次改动,每台机器都要同步一下..(有一些自动化管理工具,改动以后可自动批量的每台机器都传一份)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

# /etc/services

记录了每一个软件跟它对应的端口号以及协议

常见的服务端对应的端口号

服务端 端口号
dhcp 67
dns 53
mysql 3306
ssh 22
grep '^ftp\|^ssh' /etc/services 
1

# 交换与路由

交换: 指同网络访问.
        多台主机处于同一个LAN/交换机/局域网中,配置同网段的不同ip就可以直接通信,二层网络本质是基于mac地址的通信,不需要进行转发,这里默认交换机未划分过vlan(即不讨论三层交换)..

路由: 指跨网络访问的路径选择.
        若要与外网通信,就需要转发/路由.. 路由器上配置的有网关.. 网关有个特点, 至少得有两个地址, 对内得有一个局域网地址, 对外得有一个外网地址..


# Linux主机充当路由

# 三大前提

将一台linux主机A当作路由的三大前提:
1> 主机A至少得有两块网卡分别连接不同的网段;
     (A主机连接的不同网段里的主机都必须将网关指向主机A)
2> 主机A开启路由转发功能(默认是关闭的); echo 1 > /proc/sys/net/ipv4/ip_forward 临时打开.
3> 在该linux主机上添加正确的路由规则/策略..

# 转发流程

A主机的linux OS左手网卡1,右手网卡2,连接两个不同的网段..(B主机处于网段1,C主机处于网段2)
B、C处于不同网段,是不能直接通信的, A可以作为BC之间互通的桥梁.. B <==> A <==> C

主机B发送了个数据包,会从网卡1进来的, A主机的linux内核会先判断此包是不是给本机的, 不是的话就正常的丢掉..

若是给本机的:
     情况1: 该数据包就是明确的给本机上层的应用程序的;
数据包流向: 网卡1 - 操作系统(A主机的 内核空间 ) - 应用程序(A主机的 用户空间) 
                情况1> 应用程序处理完数据包就结束了,不需要返回数据包;
                情况2> 应用程序处理完数据包产生了新的结果,新的数据包从A的用户空间丢到了A的内核空间..
                                内核再判断新的数据包从哪个网卡发出去...
                                新数据包的目标主机是C就从网卡2出去;是B就从网卡1原路返回...
     情况2: 将本机的OS Linux当作路由器使用,数据包不会进入A主机的用户空间,数据包会从网卡2出去,转发给C;

# -- 可以看到 linux主机的路由转发功能默认是关闭的 0关闭 1开启
[root@localhost ~]# cat /proc/sys/net/ipv4/ip_forward
0
1
2
3

# 网关/路由

route命令

# 分类、优先级

Linux上的路由分为3种:
     1> 主机路由: 明确指定了到达某台主机应该怎么走.. 主机路由也叫做静态路由 掩码位32位 
     2> 网络路由: 指明到某类网络怎么走, 精确到了某个网段.. 掩码位小于32位
     3> 默认路由: 不走主机路由的和网络路由的, 全部都走默认路由. 掩码全为0 
                        操作系统上设置的默认路由一般称为网关..

回顾下, 子网掩码与IP地址做与运算可以算出网络地址(同1为1,否则为0).. 一个B类的IP地址,子网掩码至少是8位,IP地址的网络位向主机位借位(借的叫做子网位)来划分子网..
子网掩码越短意味着划分的子网数越少, 每个子网的范围(每个子网中的主机个数)就越大; 反之则相反!!!

优先级:(根据精确度判断的) 主机路由 > 网络路由 > 默认路由 
若路由条目的掩码长度相同, 则比较节点之间的管理距离(比如metric), 管理距离短的生效

举个栗子, 1.1.1.10/32 32位的掩码意味着IP地址的前32位都是网络号,没有剩下主机位,不能借位,该IP也就不能划分任何的子网.. 1.1.1.10网段没有任何其他机器... 只有它自己.. 精确到了一台机器!!!


# 查看路由表信息

route -n -n选项表示不解析主机名

Destination: 去往目标,目的地
        0.0.0.0/0 代表所有的IP地址都是目的地
Gateway: 下一跳(下一步交给谁做转发)
        0.0.0.0表明没有下一跳,通过Iface指定的网卡往局域网里一丢.
谁收到算谁的,收到的那台主机不会将该数据包做下一跳的转发.
        172.16.150.2 指定了网关IP 表明网关会安排下一跳
        169.254.0.0 是保留网关
Genmask: 子网掩码
Flags: 标志位
        U 此路由规则正在生效
        G 网关
        H 主机路由
Metric: 总共经历多少跳
Iface: 从哪个网卡出去

## -- 这些信息是从DHCP里获取到的,若不想要DHCP的,想自己配置的生效,则需要修改配置文件!
[root@localhost ~]# route -n
Kernel IP routing table # -- 内核IP路由表
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.150.2    0.0.0.0         UG    0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0 # --保留网关,了解
172.16.150.0    0.0.0.0         255.255.255.0   U     0      0        0 eth0
192.168.122.0   0.0.0.0         255.255.255.0   U     0      0        0 virbr0
1
2
3
4
5
6
7
8

# 添加/删除路由

eth0网卡 -- inet 172.16.150.131  netmask 255.255.255.0
系统会默认添加一条网络路由!!! `route add -net 192.168.0.0/24 dev eth0`

为何只要添加一个ip地址,就会默认增加一个该ip地址的网段路由?
1
2
3
4

1> 添加/删除主机路由,精确到一个IP地址

route add -host 1.1.1.10/32 dev eth0                      -- 不需要转发则指定dev
route add -host 1.1.1.11/32 gw 172.16.150.2           -- 若需要转发,指定gw route del -host 1.1.1.10/32

2> 添加/删除网络路由

route add -net 2.2.2.0/24 dev eth0
route del -net 2.2.2.0/24

3> 删除/添加默认路由

route del default
route add -net 0.0.0.0/0 gw 172.16.150.2 或者 route add default gw 172.16.150.2

systemctl restart network 重启网络配置后, 上述的设置失效


# 配置永久路由

vim /etc/syconfig/network-scripts/route-eth0

注意:
    1> 新增一个路由配置文件,前提需要一个相对应的名为ifcfg-eth0的网卡配置文件 
       名字要对应上哦! route-ethX, 要从哪个接口出去X就是几
    2> 在文件中配置永久默认路由, 则必须保证所有使用了DHCP服务的网卡配置文件ifcfg-ethX中的
		   DEFROUTE指令设置为"no",表明DHCP的路由配置不生效;
		   PEERROUTES指令设置为"no",表示DHCP设置的路由允许被覆盖.

配置规则:每一行一个路由条目, 先是要到达的目标, 然后是via关键字,最后是下一跳地址.
       要求下一跳必须能到达,且一般都和ethX同网段..
1
2
3
4
5
6
7
8
9
10
11

例如eth0网卡的IP地址是192.168.10.123,,要通过网卡eth0出去到达10.0.0.10,,那么下一跳的地址要和eth0的地址在同网段..如192.168.10.222 ...
看计算机网络之网络层.md 中 网络层整个流程 这部分的内容, 注意图中的路由器1的IP 192.168.100.4 和路由器2的IP 192.168.100.5 !!

# -- 默认路由
default     via 192.168.100.1 dev eth0
0.0.0.0/0   via 192.168.100.1 dev eth0

# -- 网段路由
192.168.10.0/24   via 192.168.100.1 dev eth0

# -- 主机路由,在centos7中 dev得指定
192.168.100.52/32 via 192.168.100.33 dev eth0
1
2
3
4
5
6
7
8
9

配置完后, 重启network服务即可立即生效...


# 路由实验

略.. 实验详见https://zhuanlan.zhihu.com/p/337256553

让我偷偷懒,主要是开发真就用不到... 路由的配置又很繁琐.. 有点累, 理论方面是整理规整了的!!! 


存储管理之LVM
shell基础

← 存储管理之LVM shell基础→

最近更新
01
deepseek本地部署+知识库
02-17
02
实操-微信小程序
02-14
03
教学-cursor深度探讨
02-13
更多文章>
Theme by Vdoing | Copyright © 2023-2025 DC | One Piece
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式