通过网线连接的三台电脑之间互ping,互相访问
三台设备现状
设备描述:
1)三台电脑通过网线两两直连
2)网口IP静态分配,三台电脑都是无网络环境
3)网线相连的两个网口在同一个网段上,比如都是192.168.10.xx或者192.168.166.xx
4)直线相连的两个网口是可以相互ping
5)不同网段无法ping,比如192.168.10.177无法访问192.168.166.1
解决方法
windows PC1电脑配置
1)管理员模式打开cmd
2)ipconfig查看当前网口IP,可以看到192.168.10.177
3)route print查看路由表,无法找到通向166网段的路由
4)添加166网段的路由,用下面的命令。命令描述:添加通向192.168.166.xx网段的出口,掩码是255.255.255.0,出口是192.168.10.177.网关可以不用设置,自动默认为在链路上。(出口必须设置)
route add 192.168.166.0 mask 255.255.255.0 192.168.10.177
配置完成后的路由表信息:
网络目标: 192.168.166.0 网络掩码: 255.255.255.0 网关: 在链路上 接口: 192.168.10.177 跃点数: 61
Ubuntu PC2电脑配置
1)ifconfig查看当前网口状态
2)route -n查看路由表
3)配置路由转发
配置路由转发命令。命令描述:添加通向166网段的路由,掩码是255.255.255.0,下一跳网关是192.168.166.1 路由的优先级是100,出口是enp9s(就是ip为192.168.166.1的网口)。
sudo route add -net 192.168.166.0 netmask 255.255.255.0 gw 192.168.166.1 metric 100 dev enp9s0
似乎不配置gw 192.168.166.1也可以(就是不配置下一跳网关也可以,我理解的下一跳网关是这个设备从出口(enp9s0)出去的下一跳,在这种简单的三台电脑无网络的环境下应该不用配置,应该默认在链路上,要配置应该也是192.168.166.2,但我配置的是192.168.166.1,但也行的通,就不太清楚了)
另一个方向
到这一步可以实现从PC1到PC3的ping了,从PC3到PC1同样的道理,把命令的网口改一下就可以了。
windows和linux的命令略有不同。
总结
1)路由的转发和路由通向是很简单无脑的进行的,在配置pc1的时候不要想着要通向166网段肯定从10.177的网口出,但其实电脑是不知道的,需要手动去配置,就是你告诉电脑通向哪里(目标网络destination),从哪个网口出(dev/interface),出的时候走哪里(网关gw)他才知道怎么走。
2)对于中间电脑,也是需要你告诉它通向哪里(目标网络destination),从哪个网口出(dev/interface),出的时候走哪里(网关gw)。
3)有时候我们人类在想路由怎么走的时候会想当然,觉得没问题,觉得三台电脑直连应该就能通,但其实路由是简单低级的,要清楚的告诉电脑
4)在学习任何东西的时候都不要忽略细节,不然就会浪费很久的事件。而且要搞清楚原理,不要按照教程自己觉得会了,搞清楚(路由表)设计原理,不要光按照教程来,要有自己的思考(个人心得)
二编
1)如果目的是某一台主机,则掩码为255.255.255.255