0
点赞
收藏
分享

微信扫一扫

Ubuntu通过修改配置文件进行网络配置及ubuntu解决resolv.conf被重写问题和NetworkManager的关系

全栈顾问 2022-04-07 阅读 140

Ubuntu通过修改配置文件进行网络配置

2017年07月25日 17:42:36 致远OS 阅读数:52298

ubuntu系统进行网络配置有的时候用图形界面(NetworkManager)不起作用(另一种配置方式文本界面:/etc/network/interfaces),这种情况下可以文本界面直接修改某些启动脚本或配置文件

Ubuntu系统进行网络配置涉及到几个配置文件1./etc/network/interfaces 2./etc/resolv.conf

操纵步骤:

1.打开ubuntu的/etc/network/interfaces文件(不知道还有没有其它的设置虚拟机网卡的配置文件?????通过网上查找还有其它的配置文件:/etc/sysconfig/network-scripts/(这种方式是只是centos操作系统下使用),但是这个文件找不到????不知道咋回事?)默认的内容如下:

auto lo

iface lo inet loopback

动态获取的配置方法:

auto eth0

iface eth0 inet dhcp

静态分配的配置方法:

auto eth0

iface eth0 inet static

address 192.168.0.1

netmask  255.255.255.0

gateway  192.168.0.1

根据配置要求(是动态分配还是自动获取)修改该配置文件后,保存(即网卡重启)。

 

2.添加域名服务器:打开/etc/resolv.conf文件   (域名配置能否在/etc/network/interfaces文件设置,网上有的说可以,但不是nameserver 202.99.166.4这样的关键字,而是nm-****  202.99.166.4 ,地址前面的关键字 记不清了,反正不是nameserver.下来查找后补上(后来查到了:dns-nameservers 8.8.8.8 8.8.4.4 )),这里的域名是4个8位地址或是主机的dns,或自己定义一个合法的域名地址(这是自己猜想的系统可能会做到域名解析功能????)

 添加这行:nameserver 202.99.166.4

 

在这里多说一点:/etc/resolv.conf文件是一个具有重写功能的文件,也就是当把此文件修改完后,使用重启网卡命令:ifdown ens33  ifup ens33后,先前写入的代码:nameserver 202.99.166.4不见了,这就造成了,代码写入后不进行网卡重启,直接去ping www.baidu.com 是可以ping通的,当网卡重启后再去ping www.baidu.com 是就ping不通了,这就是resolv.conf的设置是临时的,这就叫做重写功能。这个临时的功能的原因是啥?原因是此文件是一个符号链接link文件,它实际指向的是...........................

............. /etc/resolv.conf ,其实是一个Link 。它其实指向的是 /run/resolvconf/resolv.conf。

 

    Ubuntu 有一个 resolvconf 服务,如果重启它,那么 /etc/resolv.conf 的内容会被一个文件:/etc /sysconfig/network-scripts/ifcfg-eth0重新加载,将/etc /sysconfig/network-scripts/ifcfg-eth0中的相关dns的信息加载到/etc/resolv.conf中。如果不去重启网卡,直接去上网是可以的。所以 ,要想永久使自己的域名设置生效,不能直接修改 /etc/resolv.conf,而是设置/etc /sysconfig/network-scripts/ifcfg-eth0(仅限centos操作系统)或。

    其实 /etc/resolv.conf 里面一直都有提示,只是我们很多人没注意看: 
    "DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN" 

resolvconf是debian操作系统一个管理dns的命令,dhclient,ifup等命令都是支持用它来管理dns的

目录:

/run/resolvconf/resolv.conf 这个就是dns的文件

/run/resolvconf/enable-updates 这空个文件只是为了说明resolvconf开启更新resolv.conf 功能

/run/resolvconf/interface/* 这下面存的是各个工具各自行设置的name server,比如NetworkManager,比如dhclient


命令使用方法:


   
  1. resolvconf:

  2. -a [interface] 将 name server 信息绑定一个【接口】

  3. -d [interface] 删除在这个接口上绑定的name server 信息

  4. -u 更新resolv.conf。 这个一般不用自己调用

  5. --enable-updates 开启更新

  6. --disable-updates 关闭更新

  7. 示例:

  8. resolvconf -a eth0 < testFile

  9. resolvconf -d eth0

  10. 这里testFile就是相当于 /run/resolvconf/interface/ 下的那些文件



 

 

 

 

 

后来到网上查找,发现有人与我同样的问题。原来在CentOS5.4下面直接修改/etc/resolv.conf不行(这里要搞清楚的也是最重要的一点是:/etc/resolv.conf文件的内容来源是文件/etc /sysconfig/network-scripts/ifcfg-eth0载入的,什么时候载入的呢?就是在每一次重启网卡时都会重新载入到文件/etc/resolv.conf中的,你就是自己写入了一些代码,重启网卡时,也会冲洗掉的,只会将文件/etc /sysconfig/network-scripts/ifcfg-eth0中相关的dns的信息载入,如果此文件没有dns信息,重启卡时文件/etc/resolv.conf中的值是空的。是什么文件完成的这个载入功能的呢?通过命令:cat /etc/resolv.conf可以看到第一句注释:# Generated by NetworkManager看出是通过文件NetworkManager完成的载入功能,NetworkManager又是一个什么玩意?把它去掉或者关掉不就不载入了呢,不就完成了只要在文件/etc/resolv.conf人工修改后即便重启网卡文件/etc/resolv.conf中的内容也就不会冲洗掉了吗?要详细了解NetworkManager的话,详见下面说明.....)。必须要在/etc /sysconfig/network-scripts/ifcfg-eth0里面最后加上dns的设置。要不然,重启后,肯定使用/etc /sysconfig/network-scripts/ifcfg-eth0里面的内容(此文件中还没有写入dns的信息)dns的信息,因为没有dns的信息,使/etc/resolv.conf恢复到原来的状态。

[上面这段文字是针对CentOS5.4操作系统,才有这个文件/etc /sysconfig/network-scripts/ifcfg-eth0来配置虚拟机的虚拟网卡信息的,而在ubuntu14.04中没有发现这个文件,这就带来了一个问题:ubuntu14.04中是哪个文件来代替文件/etc/sysconfig/network-scripts/ifcfg-eth0功能的呢??????网上找了好多资料也没有找到,(答案:ubuntu中使用:/etc/resolvconf/resolv.conf.d/head文件对应上面的/etc /sysconfig/network-scripts/ifcfg-eth0功能)。。。。。。。。。

 

 

 

]

打开/etc/sysconfig/network-scripts/ifcfg-eth0,为了保险起见,可以同样修改eth1的设置

DEVICE=eth0 
  BOOTPROTO=none 
  HWADDR=00:xx:19:xx:xx:xx 
  ONBOOT=yes 
  TYPE=Ethernet 
  USERCTL=no 
  IPV6INIT=no 
  PEERDNS=yes 
  NETMASK=255.255.255.0 
  IPADDR=xxx.xxx.xxx.xxx 
  GATEWAY=xxx.xxx.xxx.xxx 
  DNS1=202.96.209.5 #上海dns,根据实际情况更换 (一定要带上数字)
  DNS2=202.96.209.133 #上海dns,根据实际情况更换

这样设置后,/etc/resolv.conf里面根本就不需要设置。service network restart 后,可以发现/etc/resolv.conf里面就有两个dns的解析ip了。配置好以后重启网络,cat /etc/resolv.conf,可以看到如下参数:

# Generated by NetworkManager 
  nameserver 202.96.209.5 
  nameserver 202.96.209.133 
  search localdomain

DNS解析设置成功。 
  在此要强调一点的是,直接修改/etc/resolv.conf这个文件是没用的,网络服务重启以后会根据/etc/sysconfig /network-scripts/ifcfg-eth0来重载配置,如果ifcfg-eth0没有配置DNS,那么resolv.conf会被冲掉,重 新变成空值。

 

3.重启下网络

$/etc/init.d/networking restart(这条命令是重启网卡)

或者

$ifdown eth0

$ifup   eth0(这两条命令是有针对性的重启某个网络接口,因为一个系统可能有多个网络接口)

 

4.查看网络配置的参数是不是正确(每进行一次操作都可以查看一下是不是修改了网络配置)

$ifconfig

 

5.看看是不是能够ping通

ping不通网关说明网络配置有问题 ping不通域名说明dns有问题

 

有些时候需要修改网卡的硬件地址:

方法一:

$ifconfig eth0 hw ether XX:XX:XX:XX:XX:XX

$/etc/init.d/networking restart(重启网卡)

方法二:

以上只是暂时的修改硬件地址要永久修改,直接编辑 /etc/network/interfaces 文件,在 iface eth0 inet static 后面添加一行: pre-up ifconfig eth0 hw ether xx:xx:xx:xx:xx:xx(要改成的MAC)

$ sudo /etc/init.d/networking restart(重启网卡)

 

还有一种配置虚拟机的虚拟网卡(不是主机的虚拟网卡:VMware Network Adepter VMnet8,这个VMware Network Adepter VMnet8和VMnet8不是一回事,VMnet8是)的方法(即图形界面:使用NetworkManager):不是使用文本界面方式(/etc/network/interfaces:配置ip,)配置文件而是使用虚拟机右上角的按钮打开图形界面:

 

 

上面图形界面的打开方式:虚拟机开机状态下,点击虚拟机屏幕右上方网络连接按钮,在下拉列表中选择“Edit Connections…”,打开网络设置编辑界面,选中网络点击右侧Edit,选择IPv4 Settings,Method选择“自动(DHCP)”,如下图。只不过将配置方法Method修改为人工:Manual方式即可。

 

在vi vim /etc/network/interfaces配置:

1、自动(auto)到什么名字的网卡(即网卡名:或eth0或ens33等等)、  【auto eth0】

2、是动态dhcp方式还是静态static方式、【iface eth0 inet static或者iface eth0 inet dhcp】

3、配置虚拟机的虚拟网卡的静态(static下的地址,如果上面第2步设置的是动态dhcp方式,这里设置的ip是不起作用的。)ip地址(address 192.168.1.100(注意网段和主机保持一致,例如主机是:192.168.1.3,则可以设置成:192.168.1.*)(*表示合法范围内的任何数字) )、【address 192.168.1.100】

4、子网掩码、【netmask 255.255.255.0】

5、网关           【gateway 192.168.1.1(注意网关和主机保持一致)】

 

 

Ubuntu 无法解析域名

说明
Ubuntu下出现无法解析域名的情况,导致wget或其他针对域名的操作无法完成,但是 ping 对应的IP却能ping通,属于DNS配置问题。

解决办法
修改 /etc/resolv.conf 添加内容 nameserver 8.8.8.8 增加 DNS。

但是,上述方法会在重启后被清除,导致再次开机时需要重新配置,经过查阅网上资料,方法很多种,比较有效的就是,直接卸载掉开机重写该文件的 resolvconf。 
执行命令:sudo apt-get autoremove resolvconf   //卸载所有自动安装且不再使用的软件包

如果仍需要使用 resolvconf ,则可在卸载后,对 /etc/resolv.conf 加锁后再重新安装该软件,这样 resolvconf 就不会在开机时重写该文件。

# 文件加锁 不可写
sudo chattr +i /etc/resolv.conf  

# 文件解锁 可写
sudo chattr -i /etc/resolv.conf
--------------------- 
作者:BinaryCSharp 
来源:CSDN 
原文:https://blog.csdn.net/danielpei1222/article/details/65452451 
版权声明:本文为博主原创文章,转载请附上博文链接!

ubuntu手动设置dns解析

2017年05月04日 11:27:59 cjd007 阅读数:78

/etc/resolv.conf中设置dns之后每次重启Ubuntu Server时该文件会被覆盖,针对这种情况找了一些个解决方法
防止/etc/resolv.conf被覆盖的方法
【方法一】
1.需要创建一个文件/etc/resolvconf/resolv.conf.d/tail

sudo vi /etc/resolvconf/resolv.conf.d/tail

   


2.在该文件中写入自己需要的dns服务器,格式与/etc/resolv.conf相同

nameserver 8.8.8.8 

   



3.重启下resolvconf程序

sudo /etc/init.d/resolvconf restart 

   



再去看看/etc/resolv.conf文件,可以看到自己添加的dns服务器已经加到该文件中
【方法二】
在/etc/network/interfaces中


   
  1. ###interfaces中#######

  2. auto eth0

  3. iface eth0 inet static

  4. address 192.168 .3 .250

  5. netmask 255.255 .255 .0 #子网掩码

  6. gateway 192.168 .3 .1 #网关

  7. dns-nameservers 8.8 .8 .8 8.8 .4 .4 #设置dns服务器

这种方法小问号没有试验:一会去实验一下。.........测试结果:失败,查看被加载的文件vi /etc/resolv.conf..后发现没有将/etc/network/interface中的域名设置信息加载到文件/etc/resolv.conf中,所以失败。这说明在文件/etc/network/interface中设置域名是不起作用的。........................

 

解决 /etc/resolv.conf 清空问题和dns域名解析问题:

普及知识:

     /etc/resolv.conf ,其实是一个Link 。它其实指向的是 /run/resolvconf/resolv.conf。

    Ubuntu 有一个 resolvconf 服务,如果重启它,那么 /etc/resolv.conf 的内容会被修改成默认的样子。所以 ,不能直接修改 /etc/resolv.conf。

    其实 /etc/resolv.conf 里面一直都有提示,只是我们很多人没注意看: 
    "DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN" 

为此,我们解决方法如下:

   1、sudo vim /etc/network/interfaces

           或者sudo gedit /etc/network/interfaces

    自己哪个方便用

  

 

  添加

  dns-nameservers  8.8.8.8  114.114.114.114   223.5.5.5
  dns-search foo.org bar.com

保存,退出。()

  这样,就彻底地解决了此问题

注:小问号按常规步骤:重启网卡ifdown ens33  ifup ens33后查看文件/etc/fesolv.conf没有发现dns信息加载进来,所以ping www.baidu.com也ping不通。

后来我紧接着使用刷新命令: /sbin/resolvconf -u,(一定记着此时的iface ens33 inet static要 改为iface ens33 inet dhcp)但是一定不能再去重启网卡(我试了一下这种方法是一种临时设置,不能重启网卡,如重启网卡后文件/etc/fesolv.conf中的dns信息就没有了),去查看/etc/fesolv.conf文件中已经载入了dns的信息。成功ping www.baidu.com成功了。

 

 

 

 

   2、

DNS域名解析问题

 这个文件有注释,不要修改这个文件。如下就好

 

 

 

 

 

关键是如下的这个文件

 sudo vim /etc/resolvconf/resolv.conf.d/base 

 

 

 修改好后保存,然后执行
sudo /sbin/resolvconf -u

注:这种方法小问号测试了:执行在ubuntu中使用/etc/resolvconf/resolv.conf.d/base添加上dns的信息,接着执行刷新命令:/sbin/resolvconf -u,成功了。(使用文件/etc/resolvconf/resolv.conf.d/head文件也行,不使用刷新命令/sbin/resolvconf -u,但是一定要重启网卡就能成功上网了。)

或者
sudo etc/init.d/resolvconf restart

或者重启系统
再查看/etc/resolv.conf文件,已经将我们添加的内容加上了

cat /etc/resolv.conf

 

 

补充上面一个命令nslookup的作用:

nslookup命令用于查询DNS的记录,查看域名解析是否正常,在网络故障的时候用来诊断网络问题。 nslookup的用法相对来说还是蛮简单的,主要是下面的几个用法。

1 直接查询
这个可能大家用到最多,查询一个域名的A记录。

nslookup domain [dns-server]
1
如果没指定dns-server,用系统默认的dns服务器。下面是一个例子:

[root@localhost ~]# nslookup baidu.com
Server:     10.30.7.177
Address:    10.30.7.177#53

Non-authoritative answer:
Name:   baidu.com
Address: 123.125.114.144
Name:   baidu.com
Address: 111.13.101.208
Name:   baidu.com
Address: 180.149.132.47
Name:   baidu.com
Address: 220.181.57.217
--------------------- 
 

!!!下面这篇文章非常有用:

ubuntu解决resolv.conf被重写问题

2016年10月19日 18:04:58 Sonictl 阅读数:8315更多

个人分类: linux嵌入式 linux

解决resolv.conf被重写问题

第二步中你虽然配置了DNS,但是每次重启虚拟机或重启网络后/etc/resolv.conf文件就会被重写,也就是又恢复原样了,你以前的配置就不存在了,每次都要手动配置是极不可取的,所以这步是必须的,首先我们要搞清楚resolv.conf被重写的原因和机制,这在不同Ubuntu版本下有所差异。那怎么知道呢?一般resolv.conf文件一开头就告诉你了。

解决该问题其实有两种办法,不怕麻烦的想理解原理的请参照方法一(与版本有关),怕麻烦的不想折腾的自觉转到方法二(与版本无关)。

 

方法一:与版本有关

a)Ubuntu 12.10

打开/etc/resolv.conf后可看到开头的一句话:

# Generated by NetworkManager
   

说明resolv.conf这个文件是由NetworkManager这个程序生成的(对应的是network-manager服务),那么解决办法也就来了:我们关掉network-manager即可,命令如下:


   
  1. sudo service network-manager stop

  2. 或者

  3. sudo /etc/init.d/network-manager stop

但是这种方法不是一劳永逸的,因为每次重启系统后还是会自动启动这个服务,因此我们需要完全禁止network-manager启动即可。

编辑network manager的配置文件/etc/init/network-manager.conf:

sudo vi /etc/init/network-manager.conf
   

注释掉其中的start on部分即可:


   
  1. # network-manager - network connection manager

  2. #

  3. # The Network Manager daemon manages the system's network connections,

  4. # automatically switching between the best available.

  5. description "network connection manager"

  6. #start on (local-filesystems

  7. # and started dbus

  8. # and static-network-up)

  9. stop on stopping dbus

  10. expect fork

  11. respawn

  12. script

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

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

  15. . /etc/default/locale

  16. export LANG LANGUAGE LC_MESSAGES LC_ALL

  17. fi

 

 

b)Ubuntu 13.04

不知道Ubuntu从哪个版本开始不是由NetworkManager生成resolv.conf的了,至少在13.04下是这样的,因为resolv.conf开头写着这样一句话:


   
  1. # Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)

  2. # DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN

说是由resolvconf生成,NetworkManager仍然存在,因为它(NetworkManager)是DHCP上网不可缺少的,但此时禁止NetworkManager启动 已经不管用了,因为resolv.conf已经不归它管了,我们试着看看resolv.conf与resolvconf有啥关系,查看:


   
  1. hadoop@Master:~$ ll /etc/resolv.conf

  2. lrwxrwxrwx 1 root root 29 9月 11 2013 /etc/resolv.conf -> ../run/resolvconf/resolv.conf

我(小问号)的虚拟机(ubuntu64位14.04)情况(2019年4月23日周二17:40):

root@ubuntu:/etc# ll /etc/resolv.conf
lrwxrwxrwx 1 root root 29 Apr 12  2018 /etc/resolv.conf -> ../run/resolvconf/resolv.conf
root@ubuntu:/etc# 
 

 

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

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

sudo vi /etc/resolvconf/resolv.conf.d/head
   

我(小问号)发现该文件只有说明没有实际的运行代码,然后添加下面的域名dns的代码:

# 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
nameserver 8.8.8.8
nameserver 114.114.114.114

重启网卡:ifdown ens33

                ifup ens33

然后ping www.baidu.com通了,成功。

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

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

注:小问号测试了在/etc/resolvconf/resolv.conf.d/base中添加nameserver 8.8.8.8
nameserver 114.114.114.114,重启网卡,ping www.baidu.com不通。失败。

 

说了这么多,各版本的差异看来挺麻烦的,不知道最新的版本或以后的版本会不会又变样了,其实这里有个更简单的与版本无关的方式能够防止resolv.conf文件被重写,那就是方法二。

 

方法二:与版本无关

前面提到固定IP的上网方式主要是修改/etc/network/interfaces这个文件,配置IP、网关什么的,其实这里面还有个参数可以配置,那就是DNS了,对应的参数名为dns-nameservers,这里设置的优先级比resolv.conf高,也就是网络会从这里读取DNS配置,如果没配置才去看resolv.conf里面的设置,因此在这里面配置DNS更简单。


   
  1. # interfaces(5) file used by ifup(8) and ifdown(8)

  2. auto lo

  3. iface lo inet loopback

  4. auto eth0

  5. iface eth0 inet static

  6. address 192.168.1.151

  7. netmask 255.255.255.0

  8. gateway 192.168.1.2

  9. dns-nameservers 202.38.64.1

这种方法小问号还没有测试....................测试结果:失败,查看被加载的文件vi /etc/resolv.conf..后发现没有将/etc/network/interface中的域名设置信息加载到文件/etc/resolv.conf中,所以失败。这说明在文件/etc/network/interface中设置域名是不起作用的。.....................

== 重启虚拟机网络 ==

配置完成后,重启网络即可,也有好几种方法:


   
  1. sudo service networking restart

  2. 或者

  3. sudo /etc/init.d/networking restart

也可以重启网卡:


   
  1. sudo ifconfig eth0 down

  2. sudo ifconfig eth0 up

重启网卡对别的网卡无影响,更推荐一些。

赶紧ping下www.baidu.com吧,应该可以上网了。

 

PS:当然也可以通过图形界面network manager进行配置,但个人感觉这种方式最好,因此推荐!

 

我(小问号)的虚拟机ubuntu14.04使用命令vi /etc/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
nameserver 127.0.1.1
search localdomain

我的这种情况正是和上面   b)Ubuntu 13.04的情况相同,所以下面我采用对应的方法试试设置dns后,使用网卡重启命令ifdown ens33    ifup ens33 后在ping www.baidu.com能不能ping通。。。。。。。。实验结果待续。后来测试成功了。!!

 

还有网友说配置dns是这样:

设置DNS文件:vi /etc/resolv.conf 输入192.168.5.XXX,网关一定要一样

3)修改启动脚本: vi /etc/rc.local 输入 echo  "nameserver 192.168.5.1"  >> /etc/resolv.conf,网关要一致

4)重启配置文件:/etc/init.d/networking restart  //重启命令也可以是这两个命令:ifdown ens33   ifup ens33
--------------------- 
作者:tiramisu_L 
来源:CSDN 
原文:https://blog.csdn.net/tiramisu_L/article/details/80557772 
版权声明:本文为博主原创文章,转载请附上博文链接!

 

下面的这段文字找到了虚拟机ubuntu虚拟机网卡的配置文件只是/etc/network/interfaces,而不是/etc /sysconfig/network-scripts/ifcfg-eth0(此文件仅是centos操作系统系统使用的配置文件)。

Ubuntu16.04 网络配置-简明指南(未完待续)

2019年01月11日 13:40:00 RadiantJeral 阅读数:302

 

文章目录

    • 一、配置文件简介
      • 1. /etc/host.conf 配置文件
      • 2. /etc/hosts 配置文件
      • 3. /etc/resolv.conf 配置文件
      • 4. /etc/network/interfaces 配置文件
      • 5. /etc/udev/rules.d/70-persistent-net.rules 配置文件
      • 6. /etc/xinetd.conf 配置文件
      • 7.其他配置文件
    • 二、Ubuntu网络配置常见问题
      • 1.Ubuntu网络配置中,图形界面配置和文本命令行配置的区别
      • 2. Ubuntu网络配置示例(以文本命令行为例,包含静态IP配置和动态IP配置)
      • 3. 关于 Ubuntu 配置 DNS 的说明
      • 4. 关于 Ubuntu 网络配置中没有eth0,只有eth1,eth2,eth3……的说明
    • 三、Ubuntu常用的网络指令

 

一、配置文件简介

在Ubuntu系的Linux系统里,与网络相关的主要设置文件如下:

/etc/host.conf 配置域名服务客户端的控制文件

/etc/hosts 配置主机名和IP地址的映射

/etc/resolv.conf 域名服务客户端的配置文件,指定域名服务器的IP地址

/etc/network/interfaces 用于设置网络配置信息(IP地址,子网掩码,网关IP等)

/etc/udev/rules.d/70-persistent-net.rules 记录主机中所有网卡的MAC地址

/etc/xinetd.conf 定义了由进程守护程序xinetd所守护的网络服务

/etc/networks 实现域名与网络地址的映射

/etc/protocols 设定主机使用的协议及各个协议的协议号(协议ID)

/etc/services 设定主机上各个网络服务进程所使用的端口号

1. /etc/host.conf 配置文件

/etc/host.conf文件的默认内容如下:


   
  1. # The"order" line is only used by old versions of the C library.

  2. order hosts,bind # 指定主机名的解析顺序,即本地解析,DNS域名解析

  3. multi on # 允许主机拥有多个IP地址

这个文件一般不需要我们修改,默认的解析顺序是本地解析,DNS服务器解析。也就是说在本系统里对于一个主机名首先进行本地解析,如果本地解析没有,然后进行DNS服务器解析。

2. /etc/hosts 配置文件

/etc/hosts文件的默认内容如下(不同主机,IP映射的主机名不同):


   
  1. 127.0.0.1 butbueatiful localhost.localdomain localhost

  2. ::1 localhost6.localdomain6 localhost6

可见,默认的情况是本机ip和本机一些主机名的对应关系,第一行是ipv4信息,第二行是ipv6信息,如果用不上ipv6本机解析,一般把该行注释掉。
第一行的解析效果是,butbueatiful localhost.localdomain localhost三者都会被解析成127.0.0.1,我们可以用ping试试。


   
  1. [root@butbueatiful ~] # ping -c 3 butbueatiful

  2. PING butbueatiful ( 127.0 .0 .1) 56( 84) bytes ofdata.

  3. 64 bytes from butbueatiful ( 127.0 .0 .1):icmp_seq= 1 ttl= 64 time= 0.061 ms

  4. 64 bytes from butbueatiful ( 127.0 .0 .1):icmp_seq= 2 ttl= 64 time= 0.052 ms

  5. 64 bytes from butbueatiful ( 127.0 .0 .1):icmp_seq= 3 ttl= 64 time= 0.051 ms

  6. --- butbueatiful ping statistics ---

  7. 3 packets transmitted, 3 received, 0% packetloss, time 1999ms

  8. rtt min/avg/ max/mdev = 0.051/ 0.054/ 0.061/ 0.009ms

  9. [root@butbueatiful ~] # ping -c 3localhost.localdomain

  10. PING butbueatiful ( 127.0 .0 .1) 56( 84) bytes ofdata.

  11. 64 bytes from butbueatiful ( 127.0 .0 .1):icmp_seq= 1 ttl= 64 time= 0.055 ms

  12. 64 bytes from butbueatiful ( 127.0 .0 .1):icmp_seq= 2 ttl= 64 time= 0.035 ms

  13. 64 bytes from butbueatiful ( 127.0 .0 .1):icmp_seq= 3 ttl= 64 time= 0.050 ms

  14. --- butbueatiful ping statistics ---

  15. 3 packets transmitted, 3 received, 0% packet loss,time 1999ms

  16. rtt min/avg/ max/mdev = 0.035/ 0.046/ 0.055/ 0.011 ms

看到上面的结果,你可能会问为什么ping localhost.localdomain的时候,下面显示的是却是butbueatiful,这是因为第一个主机名butbueatiful后面的那些主机名其实都是butbueatiful的主机别名。

如果我们要追加新的本地解析,比如我们希望在我们的机器里把yyyy.com和www.yyyy.com都解析成192.168.0.100,那么就追加如下一句即可:

192.168.0.100  yyyy.com  www.yyyy.com

   

同样,在这里,www.yyyy.com是yyyy.com的主机别名。

如果你仔细一想,会发现,其实这个文件是很危险的,如果有人恶意修改了你这个文件,比如把淘宝的网站域名解析到了他的钓鱼网站,那你就要中招了。

3. /etc/resolv.conf 配置文件

该文件用来指定DNS域名解析服务器的IP信息,其配置参数一般有以下四个:


   
  1. nameserver #指定DNS服务器的IP地址

  2. domain #定义本地域名信息

  3. search #定义域名的搜索列表

  4. sortlist #对gethostbyname返回的地址进行排序

但是最常用的配置参数是nameserver,其他的可以不设置,这个参数指定了DNS服务器的IP地址,如果设置不正确,就无法进行正常的域名解析。

一般来说,推荐设置2个DNS服务器,比如我们用google的免费DNS服务器,那么该文件的设置内容如下:


   
  1. nameserver 8.8.8.8

  2. nameserver 8.8.4.4

同样,这个文件也是危险的,如果被人恶意改成了他自己的DNS服务器,他就可以为所欲为的控制你通过域名访问的每个目的地了,这就是常说的DNS劫持。

4. /etc/network/interfaces 配置文件

interfaces网络接口配置文件,是Ubuntu网络配置中最为重要的一个文件。本文件用来设定主机的IP类型,IP地址,子网掩码,网关IP,广播地址,MAC物理地址等信息,详细的配置方法参见本文第二章节,以下以静态IP配置给出该文件的内容示例。


   
  1. auto lo

  2. iface lo inetloopback

  3. auto eth0 # 指明当前配置的是主机上的eth0网卡

  4. iface eth0 inetstatic # 将eth0网卡配置为静态IP类型

  5. address10.8.210.145 # 手动设定eth0网卡的IP地址为10.8.210.145

  6. netmask255.255.255.0 # 手动设定子网掩码

  7. gateway10.8.210.7 # 手动设定网关IP

  8. #pre-up ifconfigeth0 hw ether 11:22:33:44:55:66 # 手动设定MAC地址

【说明】一般网卡的MAC地址是由厂家设定好的,系统启动的时候可以侦测到MAC地址,如非特殊需求,一般情况下不必人为修改。故而此处将该配置信息注释掉,只做示例。

5. /etc/udev/rules.d/70-persistent-net.rules 配置文件

该文件属于主机的一个记录文件,其主要作用就是记录主机识别到的网卡信息。每当识别到一个新的网络接口配置信息,就会自动追加到该文件,用户也可以自己添加网络接口信息。主机识别网卡信息主要依据就是通过MAC地址。

6. /etc/xinetd.conf 配置文件

该文件就是简单的用include命令指定了xinetd守护进程可以读取的配置文件,所有xinetd可读取的配置文件其实都放在/etc/xinted.d目录下面。xinetd守护进程通过读取不同的服务进程的配置文件,启动并配置相应的服务进程。

7.其他配置文件

/etc/networks # 实现域名与网络地址的映射

/etc/protocols # 设定主机使用的协议及各个协议的协议号(协议ID)

/etc/services # 设定主机上各个网络服务进程所使用的端口号

上述三个配置文件的作用如注释所说,一般保持默认,不必修改。

二、Ubuntu网络配置常见问题

1.Ubuntu网络配置中,图形界面配置和文本命令行配置的区别

Ubuntu在Desktop版本中,提供了两种方法来进行网络参数配置。即图形界面和文本命令行配置。文本命令行方式是通过修改/etc/network/interfaces来进行配置的。而图形界面配置是通过network-manager进行配置,通过启动Ubuntu桌面的SystemàPreferencesàNetwork Connections即可进行图形化配置。network-manager的配置和直观,按照提示一步一步操作即可,读者可以自行查阅相关的配置方法。

但如果修改了interfaces配置文件,又配置了network-manager(以下简称nm),就会出现一些莫名其妙的问题:

  1. interfaces和 nm中的网络设置不一样,系统实际的IP是哪个?

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

  3. 明明在nm中配置了正确的网络设置,为什么就上不了网呢?

其实,只要弄清楚interfaces和 nm之间的关系,这些问题就不难解释了。

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

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

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

此时,再去修改nm 内的参数,不影响系统实际的网络配置。若要让nm 内的配置生效,必须重新启用nm 接管系统的网络配置。

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

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

  2. nm 停止接管的时候,网络连接图标就丢失了。

  3. 同样是接管的问题。

如果用户希望在Desktop版本中,直接使用interfaces 进行网络配置,那么可以通过以下指令来关闭network-manager

/etc/init.d/network-managerstop # 手动关闭network-manager

   

  • 1

之后通过查看/etc/NetworkManager/nm-system-settings.conf文件来确定nm是否停止网络配置工作。即只需要确保/etc/NetworkManager/nm-system-settings.conf内的managed=false

之后就可以通过文件命令行方式进行网络参数配置。


   
  1. vi/etc/network/interfaces # 手动修改interfaces配置文件

  2. /etc/init.d/networkingrestart # 配置完成后,重启网络服务

  • 1
  • 2
  • 3

如果希望能继续使用nm 来进行网络配置,则需要进行如下操作:


   
  1. sudo service network-manager stop # 停止nm服务

  2. sudo rm /var/lib/NetworkManager/NetworkManager.state # 移除nm 的状态文件

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

  • 1
  • 2
  • 3
  • 4
  • 5

修改文件里面这一行:managed=false,将false修改成true,然后重启nm程序,指令如下:

sudo servicenetwork-manager start # 由nm程序重新接管网络配置工作

   

  • 1

注意】如果手工改过/etc/network/interfaces,`nm会自己把这行改成:managed=false(这里应该默认就是false)

2. Ubuntu网络配置示例(以文本命令行为例,包含静态IP配置和动态IP配置)

首先通过ifconfig查看网卡信息,显示网卡enp0s31f6和网卡lo

一般通过修改/etc/network/interfaces配置文件设置网络接口参数,示例如下:


   
  1. #配置环回网络,系统默认就好,一般不必修改。

  2. auto lo

  3. iface lo inetloopback

  • 1
  • 2
  • 3
  • 4
  • 5

   
  1. #配置静态IP配置

  2. #auto enp0s31f6 # 配置enp0s31f6网卡

  3. #iface enp0s31f6 inetstatic # 将enp0s31f6网卡设置为静态IP

  4. #address10.8.210.145 # 配置enp0s31f6网卡的IP地址

  5. #netmask255.255.255.0 # 配置enp0s31f6网卡的子网掩码

  6. #gateway10.8.210.7 # 配置enp0s31f6网卡的网关地址

  7. #auto eth0:1 # 创建基于eth0网卡的虚拟网卡,即让一个网卡拥有过个IP

  8. #iface eth0:1inet static # 将虚拟网卡eth0:1设置为静态IP

  9. #address192.168.1.10 # 配置虚拟网卡eth0:1网卡的IP地址

  10. #netmask255.255.255.0 # 配置虚拟网卡eth0:1网卡的子网掩码

  11. #gateway192.168.1.1 # 配置虚拟网卡eth0:1网卡的网关地址

#动态IP配置


   
  1. auto eth0

  2. iface eth0 inetdhcp # 将eth0网卡设置为动态IP

系统按主机中网卡的个数进行编号,例如主机存在三张网卡,则分别为eth0eth1eth2。每张网卡均可配置多个虚拟网络IP。上述配置中,屏蔽了静态IP配置,启用的是动态IP配置。

之后需要在/etc/resolv.conf 配置文件中指定DNS域名服务器的IP地址信息,参见第一小节说明。

配置完成后,执行如下指令,使配置生效:


   
  1. /etc/ init.d/networkingforce-reload # 重新载入配置文件

  2. /etc/ init.d/networking restart # 重启网络服务

或者


   
  1. ifconfig enp0s31f6 down #关闭网卡

  2. ifconfig enp0s31f6 up #开启网卡

3. 关于 Ubuntu 配置 DNS 的说明

目前我所掌握的 Ubuntu 下通过配置文件设置DNS的方式有两种:interfaces 和 resolvconf.

(1)interfaces方式

修改/etc/network/interfaces配置DNS需要在该文件中加入


   
  1. dns-nameserver xx.xx.xx.xx

  2. dns-nameserver xxx.xxx.xx.xx

  3. dns-nameservers xxx.xxx.xxx.xxx xxx.xxx.xx.xxx

  • dns-nameserver: 指定一条DNS地址,如果需要指定多个DNS则需要使用添加多行。
  • dns-nameservers: 指定多个DNS地址,用空格隔开。

备注: 这种方式修改DNS后需要重启电脑方可生效(我没有找到其它使其生效的方式,重启网络并不能更新cat /etc/resolv.conf。

(2)resolvconf方式
resolvconf方式修改DNS则是通过修改/etc/resolvconf/resolv.conf.d/head文件实现,当需要添加DNS记录时,在文件中加入下面内容:


   
  1. nameserver xxx.xxx.xx.xxx

  2. nameserver xx.xx.xx.xx

  • nameserver: 指定DNS地址,当有多个DNS记录时每个DNS记录占一行。

修改成功后,运行sudo resolvconf -u更新/etc/resolv.conf文件即可。这种方式不需要重启电脑。

备注: 看到网上说可以修改/etc/resolvconf/resolv.conf.d/base文件同样能配置DNS,但经我测试,不能正确配置,不知道是什么原因。

4. 关于 Ubuntu 网络配置中没有eth0,只有eth1,eth2,eth3……的说明

Ubuntu是在虚拟机里安装的,刚开始正常,网卡设备名为eth0。后来添加一块网卡(虚拟的),然后eth0就消失了,只有eth1和eth2了。原来问题出在文件/etc/udev/rules.d/70-persistent-net.rules中。由于以前可以更改过MAC地址,所以70-persistent-net.rules中仍然保留了老网卡的内容,新网卡则被识别为eth1,eth2。

将表示老网卡的行注释掉,然后将表示新网卡的行中eth1改成eth0,eth2改为eth1重启即可

三、Ubuntu常用的网络指令


   
  1. ifconfig # 查看网络信息

  2. ifconfig ethx 10.8.210.150 # 临时设置ethx网卡的IP地址为10.8.210.150 (重启后失效)

例如:

ifconfig eth0 10.8.210.150

   

ifconfig ethx:y 192.168.1.125            # 临时创建ethx网卡的虚拟网卡(重启后失效)

   

  •  
  • 例如:

   
  1. ifconfig eth0 : 0 192.168.1.125 # 创建eth0的第一张虚拟网卡,并设置IP地址

  2. ifconfig eth0 : 1 192.168.3.250 # 创建eth0的第二张虚拟网卡,并设置IP地址

ifconfig ethx:y down                     # 临时删除ethx网卡的虚拟网卡(重启后失效)

   

虚拟网卡的永久配置方式需要修改配置文件,参见本文第二章节第二点。


   
  1. ifup ethx # 启用网卡ethx (x=0,1,2,3……),需要root权限

  2. ifdown ethx # 禁用网卡ethx,需要root权限

  3. ifconfig ethx up # 启用网卡ethx(x=0,1,2,3……),需要root权限

  4. ifconfig ethx down # 禁用网卡ethx,需要root权限

两种启动/禁止网卡设备方法的区别参见一下文章:

http://blog.csdn.net/gdutlyp/article/details/50498202


   
  1. /etc/ init.d/networking start # 启动网络服务

  2. /etc/ init.d/networking stop # 关闭网络服务

  3. /etc/ init.d/networking restart # 重启网络服务

  4. /etc/ init.d/networking force-reload # 强制重载网络配置

reference:
https://blog.csdn.net/GDUTLYP/article/details/73087476
https://blog.csdn.net/japinli/article/details/54897264

 

 

 

举报

相关推荐

0 条评论