ip address add 192.168.1.102/24 dev enp0s3
现在可以ping通局域网内的任何主机了,例如ping路由器的IP地址:
[attach]61196[/attach]可以ping通路由器 为何设置了ip地址就能ping通本网段下的其他主机?ping通即是指两个主机之间可以收发ICMP包,要发送ICMP包需要经过数据链路层,也就是需要目标主机的MAC地址。一开始我的主机并不知道要ping的主机的MAC地址,但是我们有ARP协议,它向局域网内广播ARP包(使用以太网的广播地址),期望得到目标主机的MAC地址。
无线路由器虽然叫做路由器,但它对于LAN口之间和无线连接之间表现得像个交换机。
它收到一个广播的以太网帧后向其他所有主机转发该ARP包,如果这个局域网内确实有一个主机具有该IP地址的话,该主机回返回一个ARP包告诉我的主机它的MAC地址是什么。这样我的主机就能ping通该主机了。
下面的命令可以查看MAC地址表: ip neighbor
MAC地址表 192.168.1.101那一条是我测试时留下的MAC地址记录。
但是这还没完,如果现在去ping 8.8.8.8(谷歌的DNS服务器)会显示Network is unreachable。这是因为8.8.8.8与该设备上的以太网卡的IP地址不在同一个网段之下,而我的系统又没有设置对应的路由。于是ping命令直接告诉我网络不可达。因此我们需要一个默认路由,或者称为网关。目标不在本网段内的IP包,会经由默认路由转发。
接下来设置默认路由为192.168.1.1,命令如下
ip route add default via 192.168.1.1 dev enp0s3
接下来查看路由表 ip route
路由表 可以看到路由表里有两条项目,第一条是我刚添加的。第二条是为以太网接口添加IP地时自动添加的,这也是能ping通局域网内其他主机的原因。 现在来ping 8.8.8.8试试:
[attach]61197[/attach]可以ping通8.8.8.8 但是如果ping bilibili.com的话还是不能ping通,因为我们还没有设置DNS服务器,我们的操作系统不知道一个域名对应的IP地址是多少,因此它会显示Temporary failure in name resolution。