ubuntu设置静态IP地址后,上不了网
文章中也提到,如果是在/etc/resolv.conf添加DNS,由于Ubuntu 有一个 resolvconf 服务,如果重启它,那么 /etc/resolv.conf 的内容会被修改成默认的样子,文件里也有提示文字:“DO
NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN”,所以不能直接修改 /etc/resolv.conf。
还有一点要注意的就是,/etc/resolv.conf其实是一个Link,它真实指向的是 /etc/resolvconf/resolv.conf。
因此,当我们设置成静态IP地址,发现机器不能上网,这时候需要设置DNS,具体的以下两种方法:
第一种方法:
在网卡的配置文件里面加dns-nameservers xxx.xxx.xxx.xxx之类信息
iface eth0 inet static address 192.168.1.250 gateway 192.168.1.1 netmask 255.255.255.0 dns-nameservers 192.168.3.45 192.168.8.10
第二种方法:
/etc/resolv.conf中修改nameserver
修改Ubuntu DNS时, 查看/etc/resolv.conf 会看到他使用的dns是 nameserver 127.0.1.1,
是因为Ubuntu 会启动dnsmasq服务, 解析域名时不需要到网络运营商获取..
在解析速度上会慢于网络运营商(有cache).
自己是使用电信的网络, ping 电信的dns速度在 (1 ms , 2 ms)左右, 速度是非常快的..
但使用网络运营商的DNS会有一些不爽的地方, 比如无法解析的域名跳转到114xxxxxxxxxxxxxx….
有些解析还没到GFW就被屏蔽(GFW会再过滤解析).
使用dnsmasq是好处远远大于使用网络运营商的DNS的..
使用Ubuntu一直以来很少动到/etc/resolv.conf这个文件, 原因是本身的dnsmasq加上路由器可以劫持域名
正常的修改Linux的DNS是编辑/etc/resolv.conf文件.
格式是: nameserver ,
如修改DNS为218.85.152.99(福建电信DNS)
nameserver 218.85.152.99
一般这样就直接好了..
但系统装有NetworkManager的话, 这样的修改只是临时的, 如重启计算机, 或者插拔网线/etc/resolv.conf被重置为:”nameserver 127.0.0.1”(在base中有定义,重新加载了base中的内容)
Ubuntu默认是有装NetworkManager的..
如果需要永久生效的话, 需要将/etc/NetworkManager/NetworkManager.conf中的dns=dnsmasq注释掉. 禁止使用dnsmasq插件.
[main] plugins=ifupdown,keyfile,ofono #dns=dnsmasq [ifupdown] managed=false
然后重启NetworkManager
注意: 这里终端不能使用su 切换到root, 只能在当前用户使用sudo 去执行.
service network-manager restart
这个时候我们编辑/etc/resolv.conf 或者在Ubuntu网络连接里面指定DNS就不会清空/etc/resolv.conf了.
1 /etc/resolv.conf 其实是一个Link,它其实指向的是 /run/resolvconf/resolv.conf
2 Ubuntu 有一个 resolvconf 服务,如果重启它,那么 /etc/resolv.conf 的内容会被修改成默认的样子
所以 不能直接修改 /etc/resolv.conf
修改 resolvconf服务的配置文件: /etc/resolvconf/resolv.conf.d/head(或者base、tail这三个文件均可),加入所需的域名服务器:nameserver xxx.xxx.xxx.xxx
search mydomain.com nameserver 61.139.39.73 nameserver 61.139.2.69
修改完成需要执行2个命令如下:
$resolvconf -u (关于 resolvconf 服务更多信息,可以用man查看:man resolvconf ) $/etc/init.d/networking restart