在《两台不同网段的PC直连能否够相互ping通》一文中,我有点像在玩旁门左道,本文中。我继续走火入魔。两台机器,M1和M2,各自有一个网卡eth0,配置例如以下:
M1的配置:
eth0上不配置不论什么IP地址。


M2的配置:
eth0上不配置不论什么IP地址。
....
爆炸。机器上都没有IP地址。通个毛线球啊!。
        我仅仅是想在7年后进一步阐述一个常识,即能否互通。路由是根本。在7年前的2010年,我写了一篇文章《关于IP网段间互訪的问题—路由是根本》,在前段时间,我写了一篇相似的《两台不同网段的PC直连能否够相互ping通》,7年了,好似没有不论什么进步,除了文章排版好看了些,唉。也是沉醉,但最好还是碍我更进一步。
        我依旧想用M1的1.1.1.1来ping M2的2.2.2.2,但却不把这两个地址配置在M1和M2上。怎么办?非常easy,配置路由就可以。配置例如以下:
M1的配置:      
ip route add local 1.1.1.1/32 dev eth0
ip route add 2.2.2.2/32 dev eth0 scope link 或者 ip route add 2.2.2.2/32 via 2.2.2.2 dev eth0 onlink

M2的配置:
ip route add local 2.2.2.2/32 dev eth0
ip route add 1.1.1.1/32 dev eth0 scope link 或者 ip route add 1.1.1.1/32 via 2.2.2.2 dev eth0 onlink

试试看。在M1上来ping 2.2.2.2,尽情互通吧。

看到了吧。没有配置不论什么IP地址。仅仅配置了路由就可以互通,以上配置中,local路由指示了本机接收哪些数据包,而onlink路由则能够直接arp目标。两条路由非常好理解。
        假设是转发设备,需不须要local路由呢?答案是须要的。或许你会问,作为转发设备。没有不论什么数据包要到本地啊,为什么还要local路由呢?这么理解是对的。然而你忽略了arp。
        只是假设你的链路层不是以太网。而是点到点的noarp链路的话,那么作为转发设备而言。local路由则不再须要。
--------------------
看了这个样例之后,或许你会问。那么IP地址的意义何在?说实话,IP地址的意义仅两点:
1.标识节点。
2.帮配置该IP的节点生成几条路由项:
2.1.标识自身的local路由;
2.2.标识子网的广播路由;
2.3.标识链路的链路层路由,即scope link路由;

看到了吗?假设说你不须要标识主机。仅仅是为了通信。那么当你能够手工配置上述三种路由之后。也就根本不须要IP地址了。
--------------------
事实上,IP路由这东西,没什么太多的知识在里面,关键看玩法。

高端的玩法。能够搞搞算法,搞搞最短路径。生成树啥的,中端点的能够玩玩协议,BGP。IS-IS,OSPF啥的精通了也够装逼了。屌丝一点的,就像我这样的。折腾下边缘点的东西,帮看到我文章的出点变态点的面试题。就非常满足了。哈哈。

说了这么多。路由是根本!

没有显示bind的TCP listener怎么知道bind哪个地址?靠路由。UDP报文怎么填充源地址?靠路由。

ARP怎么处理?靠路由...

温州皮鞋。下雨进水不会胖!

奥康,意尔康。红蜻蜓,日泰,吉尔达,惠特,蜘蛛王,康奈。报喜鸟,这些温州皮鞋牌子,你们都懂吗?你们穿过吗?会穿吗?

补充:
在M1上,假设你例如以下敲入配置:
ip route add 20.2.2.2/32 via 4.4.4.4 dev eth0
将会如何?非常显然,会提示网络不可达。如何解决?首先你要知道为何网络不可达?非常显然系统不知道4.4.4.4在哪里,而你既然想让4.4.4.4成为到达20.2.2.2的下一跳,那它一定在M1的链路上,那么好办,配一条到达4.4.4.4的link路由就可以:
ip route add 4.4.4.4/32 dev eth0 scope link
接下来。继续配置ip route add 20.2.2.2/32 via 4.4.4.4 dev eth0,你将看到自己的微笑。
        想互通。路由是根本!

--------------------
7年前的《关于IP网段间互訪的问题—路由是根本》有个评论。问了个问题:
arp不是直接调用链路层吗?对M1来说,就算不设置到M2的路由。也应该回答M2发出来的arp解析请求啊。但通过抓包看到M1的确没有回答,这是为什么呢?
直到几天前我才看到并给了回答。预计问问题的不会再看到了,所以我把我的回答贴出来:
将M1收到M2的arp请求的那个网卡的rp_filter配置成0就能够回复M2的arp请求了。

最新文章

  1. 数据分布转换:非正态 -> 正态
  2. java 大数据处理类 BigDecimal 解析
  3. ORA-06552: PL/SQL: Compilation unit analysis terminated ORA-06553: PLS-553: character set name is not recognized
  4. Ajax的封装03
  5. oracle 嵌套表
  6. CentOS 5.5 Nginx+JDK+MySQL+Tomcat(jsp)成功安装案例
  7. Python inspect
  8. Linux客户/服务器程序设计范式2——并发服务器(进程池)
  9. HibernateTools实现pojo类 数据库schma mapping映射的相互转换
  10. VirtualBox从USB设备(PE)启动
  11. php对象当参数传递 && php深复制和浅复制
  12. ActiveMQ(5.10.0) - Connection Configuration URI
  13. leetcode面试准备: Word Pattern
  14. Python 学习之urllib模块---用于发送网络请求,获取数据(4)
  15. Callback函数详解(我感觉,回掉函数的本质是函数指针,在业务做循环处理的时候,调用一下通知外部)
  16. sql函数(转)
  17. for循环语句之棋盘放粮食、百鸡百钱、纸张的折叠问题
  18. Octave Tutorial(《Machine Learning》)之第五课《控制语句和方程及向量化》
  19. Python 导入模块
  20. yii 缓存之apc

热门文章

  1. javascript学习笔记 - 变量、作用域和内存问题
  2. PTA 11-散列2 Hashing (25分)
  3. 【Luogu】P3232游走(高斯消元解概率)
  4. IDA动态调试技术及Dump内存
  5. ACM程序设计选修课——1036: Hungar的菜鸟赛季(YY)
  6. [USACO12MAR]花盆Flowerpot (单调队列,二分答案)
  7. 【bzoj1257】[CQOI2007]余数之和sum
  8. Flask获取post提交数据
  9. python:print含有中文的list
  10. d3 添加元素相关api