zoukankan      html  css  js  c++  java
  • (九)ubuntu解决resolv.conf被重写问题

    解决resolv.conf被重写问题

    来源:http://www.cnblogs.com/lanxuezaipiao/p/3613497.html

    第二步中你虽然配置了DNS,但是每次重启虚拟机或重启网络后/etc/resolv.conf文件就会被重写,也就是又恢复原样了,你以前的配置就不存在了,每次都要手动配置是极不可取的,所以这步是必须的,首先我们要搞清楚resolv.conf被重写的原因和机制,这在不同Ubuntu版本下有所差异。那怎么知道呢?一般resolv.conf文件一开头就告诉你了。

    解决该问题其实有两种办法,不怕麻烦的想理解原理的请参照方法一(与版本有关),怕麻烦的不想折腾的自觉转到方法二(与版本无关)。

     

    方法一:与版本有关

    a)Ubuntu 12.10

    打开/etc/resolv.conf后可看到开头的一句话:

    # Generated by NetworkManager

    说明resolv.conf这个文件是由NetworkManager这个程序生成的(对应的是network-manager服务),那么解决办法也就来了:我们关掉network-manager即可,命令如下:

    sudo service network-manager stop 
    或者
    sudo /etc/init.d/network-manager stop

    但是这种方法不是一劳永逸的,因为每次重启系统后还是会自动启动这个服务,因此我们需要完全禁止network-manager启动即可。

    编辑network manager的配置文件/etc/init/network-manager.conf:

    sudo vi /etc/init/network-manager.conf

    注释掉其中的start on部分即可:

    复制代码
    # network-manager - network connection manager
    #
    # The Network Manager daemon manages the system's network connections,
    # automatically switching between the best available.
    
    description     "network connection manager"
    
    #start on (local-filesystems
    #         and started dbus
    #         and static-network-up)
    stop on stopping dbus
    
    expect fork
    respawn
    
    script
            # set $LANG so that messages appearing on the GUI will be translated. See LP: 875017
            if [ -r /etc/default/locale ]; then
                    . /etc/default/locale
                    export LANG LANGUAGE LC_MESSAGES LC_ALL
            fi
    复制代码

     

     

    b)Ubuntu 13.04

    不知道Ubuntu从哪个版本开始不是由NetworkManager生成resolv.conf的了,至少在13.04下是这样的,因为resolv.conf开头写着这样一句话:

    # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
    #     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

    说是由resolvconf生成,NetworkManager仍然存在,因为它是DHCP上网不可缺少的,但此时禁止NetworkManager启动 已经不管用了,因为resolv.conf已经不归它管了,我们试着看看resolv.conf与resolvconf有啥关系,查看:

    hadoop@Master:~$ ll /etc/resolv.conf
    lrwxrwxrwx 1 root root 29  9月 11  2013 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

    说明/etc/resolv.conf 其实只是一个link,它实际上指向的是 /run/resolvconf/resolv.conf,这也就解释了为什么每次重启都会被重写的原因,你改的只是个link,对原文件没有影响,而每次重启这个link还得加载原文件的内容,所以对link的修改无效。

    解决方法就是:修改真实的原文件,如下:

    sudo vi /etc/resolvconf/resolv.conf.d/head

    发现这个文件与/etc/resolv.conf文件一模一样,这就对了,在里面加入你自己的nameserver即可,这样每次重启就不会被重写了。

    PS:网上也有人说修改/etc/resolvconf/resolv.conf.d/base这个文件也行,我没有亲自测试,感兴趣的可用自己测试。

     

    说了这么多,各版本的差异看来挺麻烦的,不知道最新的版本或以后的版本会不会又变样了,其实这里有个更简单的与版本无关的方式能够防止resolv.conf文件被重写,那就是方法二。

     

    方法二:与版本无关

    前面提到固定IP的上网方式主要是修改/etc/network/interfaces这个文件,配置IP、网关什么的,其实这里面还有个参数可以配置,那就是DNS了,对应的参数名为dns-nameservers,这里设置的优先级比resolv.conf高,也就是网络会从这里读取DNS配置,如果没配置才去看resolv.conf里面的设置,因此在这里面配置DNS更简单。

    复制代码
    # interfaces(5) file used by ifup(8) and ifdown(8)
    auto lo
    iface lo inet loopback
    auto eth0
    
    iface eth0 inet static
    address 192.168.1.151
    netmask 255.255.255.0
    gateway 192.168.1.2
    
    dns-nameservers 202.38.64.1
    复制代码
     

    == 重启虚拟机网络 ==

    配置完成后,重启网络即可,也有好几种方法:

    sudo service networking restart 
    或者
    sudo /etc/init.d/networking restart

    也可以重启网卡:

    sudo ifconfig eth0 down 
    sudo ifconfig eth0 up

    重启网卡对别的网卡无影响,更推荐一些。

    赶紧ping下www.baidu.com吧,应该可以上网了。

     

    PS:当然也可以通过图形界面network manager进行配置,但个人感觉这种方式最好,因此推荐!

  • 相关阅读:
    java基础(三)-----java的三大特性之多态
    java基础(二)-----java的三大特性之继承
    java基础(一)-----java的三大特性之封装
    消息中间件(十一)-----RabbitMq管理、集群
    消息中间件(十)-----RabbitMq集成springboot
    消息中间件(六)-----rabbitMQ消息发布、消息消费机制
    消息中间件(九)-----RabbitMq消息可靠传递
    从数据库更新模型报错:无法将运行时连接字符串转换为设计时等效项,没有为提供程序“mysql.data.mysqlclient”安装为设计目的启用visual studio以便与数据库进行通信所需要的库
    错误 175: 具有固定名称“MySql.Data.MySqlClient”的 ADO.NET 提供程序未在计算
    C# 创建DataTable并添加行和列
  • 原文地址:https://www.cnblogs.com/zhangshenghui/p/6512507.html
Copyright © 2011-2022 走看看