Ubuntu 网络设置

10 篇文章 1 订阅


本文根据个人ubuntu使用经验与网络上的资料,对ubuntu的网络设置进行总结,主要包含以下三个内容:
1. Ubuntu 14.04中设置IP地址的三种方式;
2.使用NetworkManager管理无线网络;
3.解决resolv.conf被重写问题.

 

首先介绍ubuntu14.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服务器地址的添加,使用vim编辑器打开 /etc/resolv.conf文件,命令如下:
#vi  /etc/resolv.conf
打开文件/etc/resolv.conf后会看到如下内容:
nameserver 140.207.198.6
search localdomain
在nameserver 后面可以修改DNS服务器的地址,若是增加多个DNS服务器地址,可以如下这样依次排列

nameserver140.207.198.6

nameserver202.102.154.3
search localdomain

步骤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
注:netmask表示子网掩码,分割网段用。broadcast 表示广播,运行网络协议时用的可以先不关心。
如果还需要配置DNS服务器,在进行DNS配置:
配置DNS需要打开文件 /etc/resolv.conf进行DNS服务器地址的添加
使用v编辑器i打开 /etc/resolv.conf文件,命令如下:
#vi  /etc/resolv.conf
在nameserver 后面可以修改DNS服务器的地址。
重启网卡配置,使网络配置生效:
#/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
sudo servicenetwork-manager start
接下来介绍使用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 inetdhcp # 如果你不想用固定ip的话,推荐用固定ip,这样可以省去请求路由分配的时间,以下是静态IP配置:

iface eth0 inetstatic

netmask255.255.255.0

gateway192.168.0.1      #gateway 0.0.0.0 # 拨号上网请把 gateway全部设置为0

address192.168.0.112

 

无线配置部分:

auto wlan0

iface wlan0 inetstatic

netmask255.255.255.0

gateway192.168.0.1

address192.168.0.113

pre-up ip linkset wlan0 up

pre-up iwconfigwlan0 essid ssid

wpa-ssid TP-Link# 这里的ssid为路由里设置的无线名称

wpa-psk 12345678# 无线密码
 

adsl拨号上网:

autodsl-provider

ifacedsl-provider inet ppp # dsl-provider 为之前配置好的拨号名称

providerdsl-provider

 

最后介绍解决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 thesystem's network connections,

# automatically switching between the bestavailable.

description     "network connection manager"

#start on (local-filesystems

#         and starteddbus

#         andstatic-network-up)

stop on stopping dbus

expect fork

respawn

script
        

# set $LANG sothat messages appearing on the GUI will be translated. See LP: 875017
        

if [ -r/etc/default/locale ]; then
               

 ./etc/default/locale
               

 exportLANG LANGUAGE LC_MESSAGES LC_ALL
        

fi

b)Ubuntu 13.04以及ubuntu14.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

gateway192.168.1.2
dns-nameservers 202.38.64.1


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

洪流之源

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值