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