30.网络管理----路由

1|0一.交换与路由

1|11.什么是交换

  • 指的是网络访问, 几台计算机连在同一个交换机上, 配置同一个网段的不同 IP 就可以直接通信了(这不不谈及三层交换机)

1|22.什么是路由

2|0二.Linux处理数据包过程

2|11.一台Linux主机能够被当成路由器用的三大前提

  • 至少有两块网卡连接两个不同的网段
  • 开启了路由转发功能
  • 在该Linux主机上添加了正确的路由规则/策略

2|22.过程图

  • 当外界数据从网卡流入后需要对他进行路由决策
  • 根据其目标决定是流入本机用户空间
  • 还是在内核空间直接就转发其他主机

2|33.如果是流入本机用户空间的数据

  • 则该数据会从内核空间进入到用户空间,接着被应用程序接收并处理
       1. 此时如果本机用户空间的应用程序不需要产生新的数据, 那便不涉及从某个网卡流出数据
       2. 如果本机用户空间的应用程序需要产生新的数据包对外发送,那便需要从某个网卡流出数据
       3. 但在流出之前,也需要做路由决策:根据目标决定从哪个网卡流出

2|44.如果仅仅是经本机转发数据包

  • 则必然涉及到从某个网卡流出,此时数据包必须从流入网卡完整地转发给流出网卡
  • 但Linux主机默认未开启 ip_ forward 功能, 这使得数据包无法转发而被丢弃

2|55.开启 Linux 主机的路由功能

  • 临时开启, 重启网络服务会失效
  🎁方式
           # echo 1 > /proc/sys/net/ipv4/ip_ forward
 
  🎁方式2
          # sysctl -W net.ipv4.ip_forward=1
 
 
 
  • 永久生效, 则写入配置文件
🎁CentOS 6中
        将"/etc/sysctl.conf"文件中的 "net.ipv4.ip_forward" 值改为1即可
 
🎁在"Centos7"中"systemd"管理了很多功能,"sysctl"的配置文件也分化为多个
         "/etc/sysctl.conf"
         "/etc/sysctl.d/*.conf"
         "/usr/lib/sysctl.d/*.conf"
    并且这些文件中默认都没有"net.ipv4.ip_forward"项
 
🎁建议直接写入"systemd"提供自定义内核修改项的目录
       # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/ip_forward.conf
 
 
 
 
  • 查看是否开启了转发功能
🎁[root@shawn ~]#sysctl
       net.ipv4.ip_forward net.ipv4.ip_forward = 0
 
🎁[root@shawn ~]#cat /proc/sys/net/ipv4/ip_forward
       0
🎁[root@shawn ~]#sysctl -a | grep ip_forward
      net.ipv4.ip_forward = 0
 
 
  • 未开启无法进行通信

      🎁只有当本机被别人当成网关并且本机开启路由转发功能时
      🎁别人发来的请求包,本机才会帮忙转发,这一点很重要,请务必记住
 
  • 未开启转发可 ping 通

     🎁IP地址是属于内核的(不仅如此,整个tcp/ip协议栈都属于内核,包括端口号)
     🎁只要能和其中一个地址通信,就能和另一个地址通信,而不需要开启数据包转发功能

3|0三.网关 / 路由

3|11.Linux 上分为三种路由

  • 主机路由 : 掩码固定32位, Destination(目的地) 精确到某一台主机
    🎁主机路由是直接指明到某台具体的主机怎么走, 主机路由也就是所谓的静态路由
  • 网络路由 : 掩码小于32位, Destination精确到某一个网段的主机
   🎁网络路由指明到哪一类网络
  • 默认路由 : 掩码通常为 0
🎁不走主机路由和网络路由的, 全部走默认路由
🎁操作系统上设置的默认路由一般也称为网关 

3|22.路由优先级挑选

  • 若 Linux 上到某主机有多条路由可以选择, 这时候会挑选优先级高的路由
  • 主机范围越小, 越精确, 优先级越高 (而决定主机范围的就是子网掩码)
  • 所以掩码越长, 越精确, 优先级越高
  1. 主机路由    #最高
  2. 网络路由    #第二
  3. 默认路由    #最低
  • 示例
  🎁如果在本机"ping 4.4.4.4"
           [root@shawn ~]#route -n
             Kernel IP routing table
           Destination   Gateway    Genmask                 Flags    Metric    Ref      Use   Iface
           0.0.0.0          1.1.1.2        0.0.0.0                     UG       0             0            0    ens32
           1.1.1.0          0.0.0.0       255.255.255.0          U          0             0            0    ens32
           2.2.2.3         1.1.1.2        255.255.255.255      UGH    0              0           0    ens32
          169.254.0.0   0.0.0.0       255.255.0.0              U         1002        0            0    ens32
 
🎁先检索掩码长度,然后再对应"Destination"(目的地)
          1. 255.255.255.255 ---->2.2.2.3        #发现无法匹配
          2. 255.255.255.0 ------>1.1.1.0         #无法匹配
          3. 255.255.0.0 -------->169.254.0.0   #无法匹配
          4. 0.0.0.0 ------------>0.0.0.0              #能匹配
 
🎁如果检索到了两块网卡网段地址都是"4.4.4.0"(能匹配),子网掩码长度也相同"255.255.255.0"
 
🎁但是如果本机直连的是"eth0"网卡,那么"eth0"对应的那条路由条目优先级高

4|0四.路由配置命令(临时)

4|11.route 命令

  • 常用命令及选项

route [add / del] [-host / -net / default] [ip地址/及掩码] [gw] [dev]

add / del添加或删除路由条目
-host 主机路由
-net 网络路由
default 默认路由
gw 指定下一跳
dev 强制将路由条目关联到指定接口, 一般内核会自动判断
  • route -n 查看路由表

Flags 列所代表的的含义

U(route is up)开启
H (target is a host) 是一个主机路由
G (user gateway) 设置了下一跳

4|22.命令示例

  • 添加和删除主机路由
🎁添加
     # route add -host 172.16.10.55 gw 192.168.10.20
🎁删除
    # route del -host 172.16.100.55
 
 
 
  • 添加和删除网络路由
🎁添加
     # route add -net 172.16.10.0/24 gw 192.168.100.70
     # route add -net 172.16.10.0 netmask 255.255.255.0 gw 192.168.100.70
 
👉如果没有下一跳,可以直接指定接口也是可以的
     # route add -net 172.16.10.0/24 dev eth0
 
🎁删除
     # route del -net 172.16.10.0/24 gw 192.168.100. 70
     # route del -net 172.16.10.0 netmask 255.255.255.0 gw 192.168.100.70
     # route del -net 172.16. 10.0/24 dev eth0
 
👉但大多数使用简短删除方法(偷懒行为)
     # route del -net 172.16. 10.0/24
 
 
  • 添加和删除默认路由
🎁添加
      # route add default gw 192. 168.100.10
 
 
🎁删除
       # route del default
       # route del default gw 192.168. 100.10
 
👉若有多条默认路由, 后面加上"gw"地址就可以唯一删除指定条目

5|0五.永久配置路由

5|11.创建路由配置文件

/etc/sysconfig/network-script/route-ethXX :XX代表的是接口编号

5|22.文件内容格式

DEST via nexthop

[目标地址] [关键字] [下一跳地址]

🎁主机路由
    "192.168.100.52/32 via 192.168.100.33 dev eth1"
 
 
🎁默认路由
   "default via 192.168.100.1"
"0.0.0.0/0 via 192.168.100.1"
 
🎁网络路由
    "192.168.10.0/24 via 192.168.100.1"
  • 配置完毕重启生效

5|33.配置路由注意事项

  • route-ethXX 的对应网卡配置文件 ifcfg-ethXX 必须存在,否则路由无效 (注意:对于虚拟机,通常新
    添加的网卡都没有对应的 ifcfg-ethXX 文件,但 ifconfig 却能找到该网卡)
  • 如果在文件中配置永久默认路由,则必须保证所有使用了 DHCP 服务的网卡配置文件 ifcfg-ethXX 中的 DEFROUTE 指令设置为 "no" ,表示 DHCP 不设置默认路由。
  • 如果在 route-ethXX 文件中配置永久路由,且该网卡使用了 DHCP 服务分配地址,则必须保证该网卡的 ifcfg-ethXX 文件中的 PEERROUTES 指令设置为 "no" ,表示 DHCP 设置的路由允许被覆盖。

5|44.练习

使所有IP地址能相互 ping 通


__EOF__

本文作者ଲ小何才露煎煎饺
本文链接https://www.cnblogs.com/zeny/articles/14444017.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角推荐一下。您的鼓励是博主的最大动力!
posted @   ଲ小何才露煎煎饺  阅读(152)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
点击右上角即可分享
微信分享提示