在这一篇文章中http://blog.csdn.net/zhangdaisylove/article/details/46892917的案例,明确的说明两个不同网段的PC不能Ping的通,其实他给出的答案是片面的,忽略了有路由的功能。

如题,两台PC相连,假设PC1的IP为1.1.1.1,PC2的IP为2.2.2.2。

当PC1 Ping PC2时,会首先查看自己的APR缓存,看是否有2.2.2.2对应MAC地址。第一次显然没有,那么就需要发送ARP包来询问谁的IP地址为2.2.2.2

PC2收到来自PC1的ARP包之后,会回答说我就是2.2.2.2,将MAC地址发送个PC1.

如果按照这个思路,显然是可以Ping的通的。

但是,问题的根源就在这里了,ARP包是在什么情况的时候发送。

ARP协议是解决同一个局域网上的主机或路由器的IP地址和硬件地址的映射问题的。

也就是说当PC1想Ping PC2之前,要先看PC2是否与自己在同一个网段上,如果在一个网段上,可以直接广播ARP,如果不在,那么需要向网关发送ARP包,

网关查询自己的ARP缓存。也就说如果两台直连,不通网段是无法Ping通的。

好,那么下面再来看看这篇文章https://www.linuxidc.com/Linux/2017-08/146368.htm的这个图,下面解释了如何实现不同网段之间的电脑进行互Ping:

配置:

1、如图所示先配置所有的IP地址

2、针对不同的机器配置路由

  • Aubin-CentOS1

    route add default gw 10.0.1.1
  • CentOS-R1

    route add -net 10.0.3.0/24 gw 10.0.2.2
    route add -net 10.0.4.0/24 gw 10.0.2.2
    echo 1 > /proc/sys/net/ipv4/ip_forward #启用转发功能(可以理解为启用路由功能)
    iptables -F #关闭防火墙
  • CentOS-R2

    route add -net 10.0.1.0/24 gw 10.0.2.1
    route add -net 10.0.4.0/21 gw 10.0.3.1
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -F
  • CentOS-R3

    route add -net 10.0.2.0/24 gw 10.0.3.2
    route add -net 10.0.1.0/24 gw 10.0.3.2
    echo 1 > /proc/sys/net/ipv4/ip_forward
    iptables -F
  • Aubin-CentOS1

    route add default gw 10.0.4.1

以上就是全部配置,然后用CentOS1去测试,ping CentOS2的IP地址10.0.4.100。如果ping通则所有配置均没问题。如果没有通请参展以下几点做检查。

1、使用route -n查看路由是否生效。

2、cat /proc/sys/net/ipv4/ip_forward查看输出是否为1,如果为0说明没有开启转发功能。

检查echo 1 > /proc/sys/net/ipv4/ip_forward是否执行成功。

3、检查IP 与 掩码是否配置正确,因为有多个IP地址容易搞混,所以好好检查。

4、检查是是否关闭防火墙,执行iptables -F

5、如果在虚拟机环境下做实验,检查MAC地址是否冲突

最新文章

  1. ES6笔记(7)-- Promise异步编程
  2. SQL Server2008 MERGE指令用法
  3. 处理滚动条置底的JS代码
  4. Storm累计求和中使用各种分组Grouping
  5. chinaunix:腾讯面试题
  6. C++重载赋值运算符
  7. Ext z自写checkbox
  8. RANSAC
  9. http无状态协议,cookie和session详解(一)
  10. gaia 开源多语言的pipeline 平台
  11. arcgis_SDE安装步骤
  12. 析构函数 (C++)
  13. 转: FFmpeg功能命令汇总
  14. 构建你自己的论坛,基于windows服务器的xampp+discuz论坛
  15. Android之属性动画(二)
  16. T-SQL with as 的用法(转) SQL 下的递归查询 SQL2005(CTE) ,SQL2000(Function 递归)
  17. git 上传项目
  18. Windows2003终端服务器超出了最大连接数的问题解决方案
  19. redis 面试
  20. Activity组件(传递数据)

热门文章

  1. oracle造成系统CPU过高的检查sql
  2. Django 1.10文档中文版Part1
  3. [ python ] 练习作业 - 3
  4. POJ 2513 Colored Sticks(Tire+欧拉回(通)路判断)
  5. hive学习(八)hive优化
  6. jmeter------reponse报错”Unknown column 'XXXXX' in 'where clause'“
  7. lr获取响应结果中的乱码并转成中文
  8. NoSql数据库 设计上面的一些心得
  9. POJ 1597 Function Run Fun
  10. JAVAEE学习——hibernate04:查询种类、HQL、Criteria、查询优化和练习为客户列表增加查询条件