一、DHCP模式

安装完操作系统默认为dhcp模式,其配置文件内容如下

$cat /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
iface eth0 inet dhcp

二、静态IP地址模式

1、修改网络配置文件

$vi /etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*
auto lo
iface lo inet loopback

# The primary network interface
auto eth0
#iface eth0 inet dhcp

iface eth0 inet static
address 192.168.1.111
netmask 255.255.255.0
gateway 192.168.1.1

注意:只需要设置address(IP地址)、netmask(子网掩码)、gateway(网关)这三项就OK,network和broadcast这两项参数是可以不写的。route -n 可以查网关等信息

2、手动设置DNS服务器:

$vi /etc/resolv.conf

nameserver 192.168.1.1
nameserver 8.8.8.8

注意:重启Ubuntu后发现又不能上网了,问题出在/etc/resolv.conf。重启后,此文件配置的dns又被自动修改为默认值。永久性修改DNS。方法如下:

$ vi /etc/resolvconf/resolv.conf.d/base
nameserver 192.168.1.1
nameserver 8.8.8.8

3、重启networking服务使其生效:

# /etc/init.d/networking restart

这样网络配置就永久生效。

=====================================================

如果是在/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,它真实指向的是 /run/resolvconf/resolv.conf

因此,当我们设置成静态IP地址,发现机器不能上网,这时候需要设置DNS,具体的以下两种方法:

第一种方法:

在网卡的配置文件里面加dns-nameservers xxx.xxx.xxx.xxx之类信息

iface eth0 inet static
address 192.168.1.111
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