Ubuntu 网络设置

Posted 洪流之源

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ubuntu 网络设置相关的知识,希望对你有一定的参考价值。

内容:

A). Ubuntu 14.04中设置IP地址的三种方式;
B). 使用NetworkManager管理无线网络;
C). 解决resolv.conf被重写问题.

A). 在Ubuntu 14.04中设置IP地址的方式有三种:
一.通过命令直接进行配置
步骤1.配置IP地址,例如设置网卡eth0的IP为172.31.174.142 ,子网掩码为255.255.255.0
#ifconfig eth0 172.31.174.124 netmask 255.255.255.0 

步骤2.添加默认路由(设置网关),例如设置网关为172.31.174.1        
#route add default gw 172.31.174.1     
                                                         
步骤3.配置DNS
配置DNS需要打开文件 /etc/resolv.conf进行DNS服务器地址的添加
使用v编辑器i打开 /etc/resolv.conf文件,命令如下:
#vi  /etc/resolv.conf
打开文件/etc/resolv.conf后会看到如下内容
技术分享
在nameserver 后面可以修改DNS服务器的地址,若是增加多个可以如下这样依次排列
nameserver 140.207.198.6
nameserver 202.102.154.3

步骤4.重启网卡配置,使网络配置生效。
#/etc/init.d/networking restart

步骤5.使用ifconfig查看配置结果
#ifconfig
技术分享
上面步骤1、步骤2进行的网络配置只能临时修改,当linux重启之后,配置信息会丢失,使用ifconfig命令查看配置将会看不到之前的网络配置信息。

二、直接修改配置文件

 ubuntu的网络配置文件是:/etc/network/interfaces ,可以在里面可设置DHCP或手动设置静态ip。

1. 以DHCP方式配置网卡,

使用vi编辑器打开配置文件/etc/network/interfaces,命令如下: 

#vi /etc/network/interfaces 

内容如下:

# The primary network interface - use DHCP to find our address 

auto eth0 iface 

eth0 inet dhcp 

文件中

auto eth0 iface 表示让网卡开机自动挂载;

eth0 inet dhcp 表示动态设置ip。

重启网卡配置,使网络配置生效:

#/etc/init.d/networking restart 


也可以在命令行下直接输入下面的命令来获取动态的IP地址 sudo dhclient eth0 


2. 为网卡配置静态IP地址

编辑文件/etc/network/interfaces:

#vi /etc/network/interfaces 

并用下面的行来替换有关eth0的行: 

# The primary network interface 

auto eth0 

iface eth0 inet static 

address 172.31.174.142 

gateway 172.31.174.1

netmask 255.255.255.224 

#network 203.171.239.128 

#broadcast 192.168.3.159 


文件中

iface eth0 inet static 表示IP地址设置为静态IP地址

address 172.31.174.142 表示IP地址设置为   172.31.174.142 

gateway 172.31.174.1    表示设置网关为       172.31.174.1

netmask 255.255.255.0 表示设置子网掩码为 255.255.255.0

注:注释部分可以先不关心

如果还需要配置DNS服务器,在进行DNS配置:

配置DNS需要打开文件 /etc/resolv.conf进行DNS服务器地址的添加
使用v编辑器i打开 /etc/resolv.conf文件,命令如下:
#vi  /etc/resolv.conf
打开文件/etc/resolv.conf后会看到如下内容
技术分享
在nameserver 后面可以修改DNS服务器的地址,若是增加多个可以如下这样依次排列
nameserver 140.207.198.6
nameserver 202.102.154.3

重启网卡配置,使网络配置生效:

#/etc/init.d/networking restart 


三、使用NetworkManager进行网络配置

在ubunbtu中,除了可以修改/etc/network/interfaces来进行配置以外,还可以直接在network-manager中配置。

network-manager的配置和直观,按照提示一步一步操作即可,有兴趣的朋友,可以自行Google或者Baidu。

但如果修改了interfaces,又配置了network-manager,你就会发现出现了一些莫名其妙的问题:

1、interfaces和 network-manager中的网络设置不一样,系统实际的IP是哪个?

2、有时候莫名其妙的,界面右上角的网络连接图标就丢失了。

3、明明在network-manager中配置了正确的网络设置,为什么就上不了网呢?

其实,我们要知道 interfaces和 network-manager之间的关系,这些问题就不难解释了。

首先,当系统内没有第三方网络管理工具(比如network-manager)时,系统默认使用interfaces文件内的参数进行网络配置。

当系统内安装了 network-manager之后,network-manager默认接管了系统的网络配置,使用network-manager 自己的网络配置参数来进行配置。

但是,如果用户在安装network-manager之后(Desktop版本默认安装了network-manager),自己手动修改了interfaces 文件,那network-manager 就自动停止对系统网络的管理,系统改使用interfaces 文件内的参数进行网络配置。

此时,再去修改network-manager内的参数,不影响系统实际的网络配置。若要让network-manager内的配置生效,必须重新启用network-manager接管系统的网络配置(如何重新启用下文会有介绍)。

现在知道了两者之间的工作关系,再看上面的三个问题:

1、要看network-manager是否接管,如果没有接管,系统实际的IP设置以interfaces 中的为准。反之,以network-manager中的为准。

2、当network-manager停止接管的时候,网络连接图标就丢失了。

3、同样是接管的问题。

如果用户希望在Desktop版本中,直接使用interfaces 进行网络配置,那最好删除network-manager 。

删除network-manager非常简单,只需要输入如下命令即可:

#apt-get remove network-manager

如果在出现上述问题(以上3个问题)之后,希望能继续使用network-manager来进行网络配置,则需要进行如下操作:

sudo servicenetwork-manager stop # 停止 network-manager服务

sudo rm/var/lib/NetworkManager/NetworkManager.state # 移除network-manager的状态文件

sudo gedit/etc/NetworkManager/nm-system-settings.conf # 打开network-manager的配置文件

##里面有一行:managed=true

## 如果你手工改过/etc/network/interfaces,network-manager会自己把这行改成:managed=false

## 将false 修改成true

servicenetwork-manager start


B). 使用NetworkManager管理无线网络

NetworkManager最方便的地方是个人电脑用无线连网的时候,因为文字界面的 iwlist wlan0 scan 并不是非常好用,而NetworkManger可以像windows那样列出所有可用的wifi热点,如果有中文乱码的,也一样可以连接。但如果你的机子是用来做服务器的,或者是在办公室里使用,有固定的路由环境,一般来说,也会有固定的ip,因为这样可以方便内网共享资源。总之不是个人用的,而且不用移来移去的话,最好是关掉这个NetworkManager,当然如果你经常带着本子跑,想去咖啡馆蹭网的话,就一定要打开这个NetworkManager,自动搜索无线非常方便了。
下面来说说这两种情况:
1,使用NetworkManger来联网,这个时候,如果使用了无线连接路由,而在/etc/network/interfaces里配置了有线连接的eth0的话,就会发生一个超级诡异的问题:可以访问外网,但不能访问内网,比如无线路由ip 192.168.0.1,ping该地址,会显示有线网卡的ip地址无法ping通,而不是无线!证明在设置了有线eth0的时候,会优先采用,但奇怪的是,外网连接正常,所有我怀疑这可能是Ubuntu的一个bug。所以当使用 NetworkManager的时候,可以注释掉所有/etc/network/interfaces 里的内容,仅仅保留本地回环网络:

auto lo
iface lo inet loopback

这两句。设置固定ip,可以在NetworkManager图形界面里配置。
2,关闭NetworkManager,

关闭命令:sudo /etc/init.d/network-manager stop

取消开机启动:chkconfig network-manager off 

重启网络:/etc/init.d/networking restart

修改 /etc/network/interfaces 文件,
    系统配置部分:本地回环网络。
        auto lo
        iface lo inet loopback
    有线配置部分:
        auto eth0
        #iface eth0 inet dhcp # 如果你不想用固定ip的话,推荐用固定ip,这样可以省去请求路由分配的时间
        iface eth0 inet static
        netmask 255.255.255.0
        gateway 192.168.0.1      #gateway 0.0.0.0 # 拨号上网请把 gateway全部设置为0
        address 192.168.0.112
    无线配置部分:
        auto wlan0
        iface wlan0 inet static
        netmask 255.255.255.0
        gateway 192.168.0.1
        address 192.168.0.113
        pre-up ip link set wlan0 up
        pre-up iwconfig wlan0 essid ssid
        wpa-ssid TP-Link # 这里的ssid为路由里设置的无线名称
        wpa-psk 12345678 # 无线密码
    adsl拨号上网:
        auto dsl-provider
        iface dsl-provider inet ppp # dsl-provider 为之前配置好的拨号名称
        provider dsl-provider


C). 解决resolv.conf被重写问题
虽然配置了DNS,但是每次重启机器或重启网络后/etc/resolv.conf文件就会被重写,也就是又恢复原 样了,你以前的配置就不存在了,每次都要手动配置是极不可取的,所以这步是必须的,首先我们要搞清楚resolv.conf被重写的原因和机制,这在不同 Ubuntu版本下有所差异。那怎么知道呢?一般resolv.conf文件一开头就告诉你了。
方法一:与版本有关
a) ubuntu 12.04
打开/etc/resolv.conf后可看到开头的一句话:
技术分享
说明resolv.conf这个文件是由NetworkManager这个程序生成的(对应的是network-manager服务),那么解决办法也就来了:我们关掉network-manager即可,命令如下:
#service network-manager stop 
或者
#/etc/init.d/network-manager stop
但是这种方法不是一劳永逸的,因为每次重启系统后还是会自动启动这个服务,因此我们需要完全禁止network-manager启动即可。
编辑network manager的配置文件/etc/init/network-manager.conf
#/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 14.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有啥关系,查看:

技术分享

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

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

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

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


方法二: 与版本无关

前面提到固定IP的上网方式主要是修改/etc/network/interfaces这个文件,配置IP、网关什么的,其实这里面还有个参数可以配置,那就是DNS了,对应的参数名为dns-nameservers,这里设置的优先级比resolv.conf与NetworkManager高,也就是网络会从这里读取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
























































































































以上是关于Ubuntu 网络设置的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段14——Vue的axios网络请求封装

VSCode自定义代码片段14——Vue的axios网络请求封装

ubuntu16 网络设置

python 一个终端代码片段,在mac上生成可启动的usb live CD,以运行类似ubuntu或debian的内容。

CPNtools协议建模安全分析---实例变迁标记

续:纠正:ubuntu7.04可以安装,而且完美的安装 ! for《Oracle-10.2.0.1,打补丁10.2.0.5:在 debian 版本4不含4以上,及 ubuntu 7.04不含(代码片段