Linux下某内网主机无法连接,通过添加路由表解决;路由表等网络知识学习

2023-11-12

1 问题描述与解决

这里要记录一个很奇怪的问题,当然是对我这种新手来说的。问题描述如下:

当前一台Ubuntu 18.04主机在校园网环境中(同济大学,上海嘉定,上海电信),在apt安装软件的时候经常出现无法连接或者哈希值不匹配的问题,如图:

这时ping该机器也无法连通,所以我就认为是网络问题了,主要是有时候好像有的软件安装也没问题。

由于以前没有遇到过类似的问题,我过分自信认为是电信缓存服务器出了问题,经常不稳定,所以还给客服打电话投诉。后来同学使用了添加路由表的方法解决了该问题,这里放一个图(xiaoqiang是小米路由器吧):

所以这里也就是一条命令的事情:

sudo route add -net 172.21.0.0/16 gw 192.168.3.1

我判断出问题的点在于apt报错中的无法连接,然后用ping验证是否能连通也确实无法连接。当然ping使用ICMP协议,所以有时候被禁用了也无法用ping判断。http请求和ping都不可达,让我认为这是缓存服务器不稳定,经常出问题。

这个route命令添加路由表解决该问题使我认识到连接不通还有可能不是服务器或者别的网络原因,还可能使自己的路由表的原因。以前从不知道还能这样,因为各种网页访问和下载,包括实验室Windows机器使用迅雷和P2P网络等都一切正常,所以我才判断为单单这个缓存服务器不稳定。

2 路由表等有关网络知识学习

说了问题和前因后果,下面就要好好学习该问题涉及的知识点了,主要还是路由表的知识,可以说一无所知,知识盲区。

先从简单的开始,首先是网关(Gateway)这个概念。网关又称为网间连接器,从名称看可以知道其主要使作为网络互连用的,工作在不同的网络之间。就日常用的来说,网关一般就是路由器的IP。参考百度百科,比如有网络A和网络B,网络A的IP地址范围为“192.168.1.1~192. 168.1.254”,子网掩码为255.255.255.0;网络B的IP地址范围为“192.168.2.1~192.168.2.254”,子网掩码为255.255.255.0。在没有路由器的情况下,两个网络之间是不能进行TCP/IP通信的。如果网络A中的主机发现数据包的目的主机不在本地网络中,就把数据包转发给它自己的网关,再由网关转发给网络B的网关,网络B的网关再转发给网络B的某个主机。

当前我们普遍使用DHCP服务器,不自己手动设置网关等,所以也很少了解到路由表、网关等如何设置。如下面这个Windows网络属性,都是自动获得:

Linux下我一般用ifconfig命令,得到如下结果:

该命令查询到的包括本机ip,子网掩码和ipv6等信息,没有网关地址。查看网关地址可以用:

route -n

结果为:

也就是网关为192.168.206.193,这个命令添加了-n是为了将人类易读的如“_gateway”转换为数字显示。

接着的概念就是子网掩码,这个我一般见到的是255.255.255.0,一般对应192.168.0.1这种路由器设置。而上面的截图中,子网掩码为255.255.255.224,这个也不是很理解,说明了解很模糊,所以这里记录下子网掩码的知识。子网掩码用来指明一个ip地址的哪些位标识是主机所在的子网,哪些是主机的位掩码。子网掩码不能单独存在,必须结合ip地址一起使用。其作用只有一个,就是将某个ip地址划分位网络地址和主机地址两部分。

子网掩码的设定必须遵循一定的规则。与二进制IP地址相同,子网掩码由1和0组成,且1和0分别连续。子网掩码的长度也是32位,左边是网络位,用二进制数字“1”表示,1的数目等于网络位的长度;右边是主机位,用二进制数字“0”表示,0的数目等于主机位的长度。而这些0和1的个数可以自己设定,255.255.255.0这种就是C类地址默认的子网掩码。

上面的截图中255.255.255.224实际对应的二进制形式位11111111.11111111.11111111.11100000,也就是后面5位是主机位。这样子网的主机数量也就确定了,五个0,那么就是2的5次方减去2,即为30。因为主机号全1是广播地址,全0是网络号。192.168.206.197(11000000.10101000.11001110.11000101)这个机器ip与子网掩码按位与得到192.168.206.192(11000000.10101000.11001110.11000000)就是网络地址,接着子网掩码按位取反(即主机号全1),然后与网络地址按位或运算得到192.168.206.223(11000000.10101000.11001110.11011111),这个就是广播地址了,与截图中一致。

前面这些介绍了网关、子网掩码和广播等基础知识,下面就是路由表了。

从百科上看一点简介:路由表是指路由器或者其他互联网网络设备上存储的一张路由信息表,该表中存有到达特定网络终端的路径,在某些情况下,还有一些与这些路径相关的度量。一般来说,路由表可以分为两种,一种是静态路由表,一种是动态路由表。比如前面示例中用add命令添加的录有就是静态路由表,这是由管理员设置的。动态路由表是路由器根据网络系统的运行情况而自动调整的路由表。路由器根据路由选择协议(Routing Protocol)提供的功能,自动学习和记忆网络运行情况,在需要时自动计算数据传输的最佳路径。

下面看route命令得到的都是什么东西:

第一列目的地址不用说了,就是访问什么ip使用该路由。默认路由0.0.0.0(不加-n参数时显示为default)目的地址说明所有包都从该路由走。当然这个是有优先级的,否则有了默认的其他的也就没法工作那就麻烦了。这里找了一段形象的解释:

一般多网段之间互相通信,希望建立一条优先路由,而不是通过默认网关时就可以配置网络路由。拿房子比喻,你现在不是要出门,而是卧室,卫生间,去卧室就要经过卧室的门,去卫生间也要经过卫生间的门,这里的卧室和卫生间的门就可以认为是去往某一网段的路由,而不是默认路由(即房子的门)。

第二列网关已经解释,第三列子网掩码也解释了。

第四列标志(flags)有多个值,U表示为开启状态(Up),G表示此网关(Gateway)为一路由器,其他值暂不提。

一般来说,这些路由都是动态生成的,不用去管。其中有个link-local,也就是169.254.0.0。系统使用动态地址,且找不到DHCP服务器时,则会得到一个169.254.x.x的地址。

route命令使用前面已经提到了,如-n或者add。add参数指定添加路由,后面跟的net时添加一个网段到路由中,如果是host说明是添加一个主机到路由中。接着的内容表示这个网段走哪个网口,如跟gw 192.168.3.1说明走该网关,走别的如:

route add –net 192.168.1.11 netmask 255.255.255.0 eth0

则是eth0网口,其实还是要去读取其对应网关信息,等效于gw参数。

删除路由也类似,如:

route del -net 192.168.122.0 netmask 255.255.255.0

3 原问题分析

一开始并不了解路由表,先跟踪网络:

这里发现会到172.21.0.233,说明是上层机器,可以访问到。但是通一个网段的172.21.0.162却不行,所以以为是该服务器异常。

后来了解了一点路由表,发现原来的机器也就是192.168.3.1网段里的这个Ubuntu机器,对应的同样环境的Windows机器的路由表信息如下:

该机器无对应的172.21.0.162机器的路由,也能正常ping通。另一个类似的Linux机器没添加该路由也能ping通:

后来仔细对比下这台机器,发现它多了个172.0.0.0的路由表,是oray_vnc的:

正是因为该条目存在,删除了172.21.0.0的路由则无法ping通172.21.0.162。这也就是原因了,有172.17.0.0这个路由存在,不会影响172.21.0.0,但是有了172.0.0.0的存在,则在没有172.21.0.0的情况下会走该172.0.0.0路由,因而导致不通。

所以该问题结论也就清晰了,就是不知道为什么路由表多了个172.0.0.0的oray_vnc路由,没单独配置172.21.0.0路由的情况下不通。要么就配置172.21.0.0,要么就在不配置的情况下把172.0.0.0的也删除。这也是对应了前面提到的路由表的优先级,172.21.0.162不会走172.17.0.0这个路由,但是会走172.0.0.0,如果172.0.0.0也不存在,则自然就走默认路由也就没事了。

4 其他

首先要说的就是,route add添加的是临时的,要想让该配置永久生效要写到:

/etc/sysconfig/static-router 

等文件中。

另外,遇到类似问题给结论不要太武断,我这里就存在这样的问题,从不了解路由表也没觉得有人或者软件会修改路由表。路由表是一方面,还可以用iptables -L查看所有防火墙规则帮忙诊断。

最后,前面提到的“电信缓存服务器”要说下,从跟踪来看,经过了192.168.3.1网关后,就是100.64.255.254了,这个其实也是内网ip,就是运营商级别的保留地址。后面172.21和10.255也是本地局域网ip,直到202.112.27.1才是中国教育网。这个“电信缓存服务器”就不确定了,电信一般也不做这种缓存,所以应该说是教育网的缓存服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Linux下某内网主机无法连接,通过添加路由表解决;路由表等网络知识学习 的相关文章

  • spring 事务不生效问题 bmw-jade-route事务配置

    在spring中配置了事务 xff0c 但是没有生效 64 Transactional rollbackFor 61 Exception class public Long insertTicket Ticket ticket List l
  • sharding报错no table route info

    目录 一 问题描述二 解决方法 一 问题描述 集成 sharding 执行数据库操作报错 xff1a no table route info 二 解决方法 一般为分库分表策略配置错误 xff0c 请检查 application yml 文件
  • diy 企业级路由器(route os )

    Mikrotik Router Os 来自拉托维亚 xff0c 一个不起眼的欧洲小国家 xff0c 但是它的功能却是很强大 今天我就用口碑比较好的 ROS2 9 6 版进行讲解了 主要功能 xff1a IP 路由 支持无线热区 PPPoE
  • Linux 路由配置 route命令 /etc/sysconfig/static-routes

    一 临时添加路由 重启network服务失效 方法一 route命令 frags为路由标志 xff0c 标记当前网络节点的状态 add 增加路由 U Up表示此路由当前为启动状态 del 删除路由 H Host xff0c 表示此网关为一主
  • iptables icmp-host-prohibited引起的No route to host

    如果数据包匹配到下边这条iptables规则 xff0c 访问端则会报No route to host xff0c 抓包中可能会看到 unreachable admin prohibited j REJECT reject with icm
  • 解决Linux:No route to host

    在VPS上面配置了某分布式服务 xff0c 死活跑不起来 xff0c 该配置的都配置了 xff0c 真是见鬼了 日志里面很多 xff1a No route to host 但是 xff0c 我能ping通 xff0c 为了排除是程序自身原因
  • linux route 命令

    显示现在所有路由 route n root 64 Ubuntu route Kernel IP routing table Destination Gateway Genmask Flags Metric Ref Use Iface 10
  • web前端-vue-router传递多个参数3种方法

    一 GET方法 1 传递值
  • XSS Payload绕过云锁学习

    前言 对于我这个菜鸟来说 我通过谷歌百度学习到很多前辈的资料 甚至每句话都是他的指导 我也很感激前辈的为我们铺设的道路 让我们更快的成长起来 我也乐于分享 可能有些知识点过于单调或者久远 请见谅 WAF 前几天花了10买了一个月的服务器 换
  • 【TCP/IP】 以太网流量控制------pause流控

    关键字 以太网 数据链路层 PAUSE帧 流量控制 文章目录 关键字 一 以太网的流量控制 二 pause流控的原理和实现 1 pause流控原理 2 pause消息格式 3 pause流控处理逻辑 4 pause流控芯片上的实现 三 pa
  • linux 中增加路由(route)命令详解

    linux route 命令 route n显示现在所有路由 root Ubuntu route 结果是自上而下 就是说 哪条在前面 哪条就有优先 前面都没有 就用最后一条default 添加一条路由 发往192 168 62这个网段的全部
  • Flutter系列之Navigator组件使用

    PS 想做一件事很容易 真正去做一件事很困难 同系列文章如下 Flutter系列之Navigator使用详解 Flutter系列之Flex布局详解 Flutter系列之图片加载详解 Flutter系列之Widget生命周期 Flutter系
  • 路由(route) 交换机(switch)简介

    路由 route 1 数据包从源地址到目的地址所经过的路径 由一系列路由节点组成 2 某个路由节点为数据包选择投递方向的选路过程 它是连接因特网中各局域网 广域网的设备 一 工作原理 工作于OSI七层协议中的第三层 接收来自一个网络接口的数
  • Dos启动远程桌面命令

    打开 Remote Registry Service这个服务 用mstsc命令运行 远程管理软件集合介绍 http bbs kafan cn thread 218201 1 1 html
  • Linux下某内网主机无法连接,通过添加路由表解决;路由表等网络知识学习

    1 问题描述与解决 这里要记录一个很奇怪的问题 当然是对我这种新手来说的 问题描述如下 当前一台Ubuntu 18 04主机在校园网环境中 同济大学 上海嘉定 上海电信 在apt安装软件的时候经常出现无法连接或者哈希值不匹配的问题 如图 这
  • TCP应用层协议

    TCP IP是个协议组 可分为三个层次 网络层 传输层和应用层 在网络层有IP协议 ICMP协议 ARP协议 RARP协议和BOOTP协议 在传输层中有TCP协议与UDP协议 在应用层有FTP HTTP TELNET SMTP DNS等协议
  • Flutter 基础(五)Route 路由以及页面间传值

    Route 路由以及页面间传值 一种页面跳转机制 路由 Route 对应到 Android 就是 Intent Flutter 路由分两种 新建路由 注册路由 需要Route表示 Navigator进行管理 跳转页面 Navigator p
  • ARP协议

    一 ARP协议的简介 1 在网络通讯时 源主机的应用程序只知道目的主机的IP地址和端口号 却不知道目的主机的硬件地址 而数据包首先是被网卡接收到再去处理上层协议的 如果接收到的数据包的硬件地址与本机不符 则直接丢弃 因此在通讯前必须获得目的
  • vue学习笔记3——外部引入css和路由的一部分

    vue学习笔记3 外部引入css和路由的一部分 从外部引入css文件 在 vue文件中 后面加的scoped是H5新特性 可以锁定style的范围 此处这样写就是说引入的css只在当前的vue的主页生效 不加scoped的话 可能会影响其他
  • route命令的详细使用介绍

    1 命令格式 route f p Command Destination mask Netmask Gateway metric Metric if Interface 2 命令功能 Route命令是用于操作基于内核ip路由表 它的主要作用

随机推荐

  • js 判断是不是浮点

    true 非浮点 false 浮点 isNotFloat theFloat gt if theFloat theFloat theFloat trim else return true 判断是否为浮点数 let len theFloat l
  • 测试数据设计方案

    一 测试覆盖率 测试方法及技巧的应用 真正业务场景的满足 测试数据的设计覆盖 1 测试数据设计方法一 构造测试数据时 需要看数据的开源 数据的来源一般来讲有3个 一个是根据被测系统需求的分析 针对正常业务 异常情况 边界情况等来构建完整的数
  • 思科交换机65系列配置

    65系列 enable 进入配置模式 enable set ip http server enable 开启http服务 enable enable enable set system name sike swtest 配置交换机名称 en
  • Mac 上安装并启动 MySQL 服务

    目录 背景 步骤 步骤 1 官网下载 dmg 文件并安装 步骤 2 在系统设置里启动 MySQL 服务 步骤 3 更改 root 密码 步骤 3 1 停止 MySQL 服务 步骤 3 2 在安全模式下启动 MySQL 服务 步骤 3 3 更
  • 三款免费杀毒软件+clamAV

    第一款 antivir PE 完全免费 http www free av com 软件厂商 H BEDV Datentechnik GmbH 软件主页 http www free av com 厂商邮件 virus free av com
  • 【java养成】:案例:学生管理系统、斗地主洗牌

    案例学习 学生管理系统 学生管理系统 参考书籍 系统首页 用于显示系统的所有操作 并根据用户在控制台的输入选择需要使用的功能 查询功能 用户选择该功能后 在控制台打印所有学生的信息 添加功能 用户选择该功能后 要求用户在控制台输入学生学号
  • Python打印九九乘法表(Python)

    算法 打印九九乘法表 方法一 1 运用range 函数 参数值含左不含右 2 Python的print函数默认换行 这里通过把九九乘法表中在一行的转化成字符串类型再打印的方法解决 3 在每个乘式的后面加一个空格来分隔乘式 for i in
  • NYOJ278 排队 (约瑟夫问题)

    原题链接 参考 百科 约瑟夫问题 经典题 附ac代码 include
  • Pytorch 的损失函数Loss function使用详解

    参考 Pytorch 的损失函数Loss function使用详解 云 社区 腾讯云 目录 1 损失函数 1 nn L1Loss 2 nn SmoothL1Loss 3 nn MSELoss 4 nn CrossEntropyLoss 5
  • 虚拟文件系统VFS框架

    复杂度3 5 机密度3 5 最后更新2021 05 01 AIX虽然仅内置支持五种类型的文件系统 jfs jfs2 nfs CDROM ramfs 远少于Linux 但其设计并不局限于某一种特定的文件系统 而是采用虚拟文件系统的概念 以一种
  • 蓝桥杯C/C++省赛:高斯日记

    目录 题目描述 思路分析 AC代码 题目描述 大数学家高斯有个好习惯 无论如何都要记日记 他的日记有个与众不同的地方 他从不注明年月日 而是用一个整数代替 比如 4210 后来人们知道 那个整数就是日期 它表示那一天是高斯出生后的第几天 这
  • 数据库、表数据的三种删除方式

    第一种 drop table 第二种 delete table t第三种 runcate table 三种方式的区别 Drop table删表 常用于正对表 表结构都会被删除 而delete table和truncate table 只删除
  • 进 4 球得 1 分,阿根廷败北背后的科技与狠活

    内容一览 11 月 22 日 世界杯 C 组首场比赛 沙特阿拉伯 2 1 反超阿根廷 今天我们将逐一盘点阿根廷进 4 球得 1 分背后的科技与狠活 关键词 世界杯 VAR 半自动越位技术 沙特爆冷逆袭 2 1 反超阿根廷 2022 年世界杯
  • 图像增强的两个评价指标:峰值信噪比PSNR和结构相似度SSIM

    两种图像增强评价指标 PSNR和SSIM 峰值信噪比PSNR 结构相似度SSIM python实现 SSIM的代码 PSNR的代码 图像增强的评价指标在像素层面上通常包含平均绝对误差 MAE 均方误差法 MSE 峰值信噪比 PSNR 以及结
  • 第6天:分割处理与中断处理

    6 1 分割处理 6 1 1 bootpack c拆分 6 1 2 MakeFile整理 使用了一般规则 gas c Makefile CC1 o gas c nas gas Makefile GAS2NASK gas nas obj na
  • NumPy使用

    NumPy数组的创建 1 创建数组 array 2 制定数组类型 dtype 3 创建特殊数组 1 元素全为0 zeros 2 元素全为1 ones 3 指定元素范围 arange 4 线段性元素 linspace NumPy数组属性 1
  • 分词工具使用系列——sentencepiece使用

    分词工具使用系列 第一章 sentencepiece使用 第二章 jieba工具使用 文章目录 分词工具使用系列 前言 细说分词 一 sentencepiece是什么 二 sentencepiece使用步骤 准备文本 训练模型 使用模型 前
  • JavaScript简单实现拼图小游戏(附源码和资源)

    JavaScript简单实现拼图小游戏 附源码及资源 JavaScript代码68行 是3年前刚学JavaScript的时候写的 思想很简单 分享一下 拼图是4 4的 共三张图 按照命名规则添加其他图片也可以 资源已上传 下载地址 http
  • Hystrix实现断路器、服务降级、线程隔离

    了解Hystrix之前首先需要明白几个概念 雪崩效应 断路器 熔断机制 服务降级 线程隔离 雪崩效应 默认情况下 tomacat只有一个线程池去处理请求 这样在高并发的情况下大量的请求访问同一个服务器接口 线程池中所有的线程都用来处理访问这
  • Linux下某内网主机无法连接,通过添加路由表解决;路由表等网络知识学习

    1 问题描述与解决 这里要记录一个很奇怪的问题 当然是对我这种新手来说的 问题描述如下 当前一台Ubuntu 18 04主机在校园网环境中 同济大学 上海嘉定 上海电信 在apt安装软件的时候经常出现无法连接或者哈希值不匹配的问题 如图 这