Windows 和 Ubuntu 的网络能互相 ping 通以后,linux没法上网缘由:①路由没设置好,②DNS 没设置好

2022年01月16日 阅读数:1
这篇文章主要向大家介绍Windows 和 Ubuntu 的网络能互相 ping 通以后,linux没法上网缘由:①路由没设置好,②DNS 没设置好,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。
  确保 Windows 和 Ubuntu 的网络能互相 ping 通以后,若是 Ubuntu 没法上网,缘由一般有 2 个:路由没设置好,DNS 没设置好。
  若是执行如下命令不成功,表示路由没设置好:
$ ping 8.8.8.8
connect: Network is unreachable
若是“ping 8.8.8.8”成功,可是“ping www.baidu.com”不成功,则是 DNS 没设置好:
$ ping www.baidu.com
ping: unknown host www.baidu.com

一、设置DNS方法

  DNS 的设置比较简单,8.8.8.8 是好记好用的 DNS 服务器,修改 Ubuntu 中的/etc/resolv.conf 文件,
内容以下:nameserver 8.8.8.8

二、查看网络信息与路由(route)

  假设某主机上的网络接口配置和路由表以下:
$ ifconfig
eth0 Link encap:Ethernet HWaddr 00:0C:29:C2:8D:7E
inet addr:192.168.10.223 Bcast:192.168.10.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:0 errors:0 dropped:0 overruns:0 frame:0
TX packets:10 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:0 (0.0 b) TX bytes:420 (420.0 b)
Interrupt:10 Base address:0x10a0
eth1 Link encap:Ethernet HWaddr 00:0C:29:C2:8D:88
inet addr:192.168.56.136 Bcast:192.168.56.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
RX packets:603 errors:0 dropped:0 overruns:0 frame:0
TX packets:110 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:100
RX bytes:55551 (54.2 Kb) TX bytes:7601 (7.4 Kb)
Interrupt:9 Base address:0x10c0
lo Link encap:Local Loopback
inet addr:127.0.0.1 Mask:255.0.0.0
UP LOOPBACK RUNNING MTU:16436 Metric:1
RX packets:37 errors:0 dropped:0 overruns:0 frame:0
TX packets:37 errors:0 dropped:0 overruns:0 carrier:0
collisions:0 txqueuelen:0
RX bytes:3020 (2.9 Kb) TX bytes:3020 (2.9 Kb)
$ route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.10.0 * 255.255.255.0 U 0 0 0 eth0
192.168.56.0 * 255.255.255.0 U 0 0 0 eth1
127.0.0.0 * 255.0.0.0 U 0 0 0 lo
default 192.168.10.1 0.0.0.0 UG 0 0 0 eth0
上述 route 命令输出信息中各项的含义请看下表:
Destination               目标网段或者主机
Gateway                   网关地址,”*” 表示目标是本主机所属的网络,不须要路由
Genmask                  网络掩码
Flags         标记。一些可能的标记以下
             U - 路由是活动的
             H - 目标是一个主机
             G - 路由指向网关
             R - 恢复动态路由产生的表项
             D - 由路由的后台程序动态地安装
          M - 由路由的后台程序修改
          ! - 拒绝路由
Metric        路由距离,到达指定网络所需的中转数
Ref          路由项引用次数
Use         此路由项被路由软件查找的次数
Iface          该路由表项对应的输出接口
  在上面的例子中,这台主机有两个网络接口:
① 一个网络接口连到 192.168.10.0/24 网络
② 另外一个网络接口连到 192.168.56.0/24 网络。
  若是要发送的数据包的目的地址是 192.168.56.3,跟第一行的子网掩码作与运算获得 192.168.56.0,与第一行的目的网络地址不符,再跟第二行的子网掩码作与运算获得 192.168.56.0,正是第二行的目的网络地址,所以从 eth1 接口发送出去,因为 192.168.56.0/24 正是与 eth1 接口直接相连的网络,所以能够直接发到目的主机,不须要经路由器转发。若是要发送的数据包的目的地址是 202.10.1.2,跟前三行路由表条目都不匹配,那么就要按缺省路由条目,从 eth0 接口发出去,首先发往 192.168.10.1 路由器,再让路由器根据它的路由表决定下一跳地址。

三、管理路由(route)命令

  可使用 route 命令管理路由。
示例:
1)添加路由:首先得肯定网关 IP,假设为 192.168.1.1
$ sudo route add default gw 192.168.1.1
$ ping 8.8.8.8 // 验证
PING 8.8.8.8 (8.8.8.8) 56(84) bytes of data.
64 bytes from 8.8.8.8: icmp_seq=1 ttl=53 time=19.8 ms
64 bytes from 8.8.8.8: icmp_seq=3 ttl=53 time=19.8 ms
2)删除路由:
$ sudo route del default gw 192.168.1.1