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


命令使用方法:

    resolvconf:
    -a [interface]   将  name server  信息绑定一个【接口】
    -d [interface]   删除在这个接口上绑定的name server 信息
    -u 更新resolv.conf。 这个一般不用自己调用
    --enable-updates 开启更新
    --disable-updates 关闭更新
    示例:
    resolvconf -a eth0 < testFile
    resolvconf -d eth0  
    这里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中

###interfaces中#######     
auto eth0     
iface eth0 inet static     
address 192.168.3.250     
netmask 255.255.255.0                  #子网掩码     
gateway 192.168.3.1                      #网关     
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被重写问题

来源:http://www.cnblogs.com/lanxuezaipiao/p/3613497.html

第二步中你虽然配置了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即可,命令如下:

sudo service network-manager stop 
或者
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部分即可:

复制代码

# 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从哪个版本开始不是由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仍然存在,因为它(NetworkManager)是DHCP上网不可缺少的,但此时禁止NetworkManager启动 已经不管用了,因为resolv.conf已经不归它管了,我们试着看看resolv.conf与resolvconf有啥关系,查看:

hadoop@Master:~$ ll /etc/resolv.conf
lrwxrwxrwx 1 root root 29  911  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更简单。

复制代码

# 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

复制代码

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

== 重启虚拟机网络 ==

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

sudo service networking restart 
或者
sudo /etc/init.d/networking restart

也可以重启网卡:

sudo ifconfig eth0 down 
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

逐步实验完善ing…

 

文章目录

 

一、配置文件简介

在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文件的默认内容如下:

# The"order" line is only used by old versions of the C library.
order hosts,bind  # 指定主机名的解析顺序,即本地解析,DNS域名解析
 
multi on  # 允许主机拥有多个IP地址

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

2. /etc/hosts 配置文件

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

127.0.0.1 butbueatiful  localhost.localdomain  localhost
::1 localhost6.localdomain6  localhost6

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

[root@butbueatiful ~]# ping -c 3 butbueatiful
PING butbueatiful (127.0.0.1) 56(84) bytes ofdata.
64 bytes from butbueatiful (127.0.0.1):icmp_seq=1 ttl=64 time=0.061 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=2 ttl=64 time=0.052 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=3 ttl=64 time=0.051 ms
 
--- butbueatiful ping statistics ---
3 packets transmitted, 3 received, 0% packetloss, time 1999ms
rtt min/avg/max/mdev = 0.051/0.054/0.061/0.009ms
 
[root@butbueatiful ~]# ping -c 3localhost.localdomain
PING butbueatiful (127.0.0.1) 56(84) bytes ofdata.
64 bytes from butbueatiful (127.0.0.1):icmp_seq=1 ttl=64 time=0.055 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=2 ttl=64 time=0.035 ms
64 bytes from butbueatiful (127.0.0.1):icmp_seq=3 ttl=64 time=0.050 ms
 
 
--- butbueatiful ping statistics ---
 
3 packets transmitted, 3 received, 0% packet loss,time 1999ms
 
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信息,其配置参数一般有以下四个:

nameserver #指定DNS服务器的IP地址
domain #定义本地域名信息
search #定义域名的搜索列表
sortlist #对gethostbyname返回的地址进行排序

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

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

nameserver 8.8.8.8
nameserver 8.8.4.4

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

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

auto lo
iface lo inetloopback
auto eth0 # 指明当前配置的是主机上的eth0网卡
iface eth0 inetstatic  # 将eth0网卡配置为静态IP类型
address10.8.210.145 # 手动设定eth0网卡的IP地址为10.8.210.145
netmask255.255.255.0 # 手动设定子网掩码
gateway10.8.210.7 # 手动设定网关IP
#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

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

    vi/etc/network/interfaces # 手动修改interfaces配置文件
     
    /etc/init.d/networkingrestart  # 配置完成后,重启网络服务

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

    sudo service network-manager stop # 停止nm服务
     
    sudo rm /var/lib/NetworkManager/NetworkManager.state# 移除nm 的状态文件
     
    sudo gedit /etc/NetworkManager/nm-system-settings.conf# 打开nm 的配置文件

    1
    2
    3
    4
    5
  • 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配置文件设置网络接口参数,示例如下:

    #配置环回网络,系统默认就好,一般不必修改。
     
    auto lo
     
    iface lo inetloopback

    1
    2
    3
    4
    5
  • 1
  • 2
  • 3
  • 4
  • 5
    #配置静态IP配置
     
    #auto enp0s31f6             # 配置enp0s31f6网卡
     
    #iface enp0s31f6 inetstatic # 将enp0s31f6网卡设置为静态IP
     
    #address10.8.210.145        # 配置enp0s31f6网卡的IP地址
     
    #netmask255.255.255.0       # 配置enp0s31f6网卡的子网掩码
     
    #gateway10.8.210.7          # 配置enp0s31f6网卡的网关地址
       
     
    #auto eth0:1             # 创建基于eth0网卡的虚拟网卡,即让一个网卡拥有过个IP
     
    #iface eth0:1inet static # 将虚拟网卡eth0:1设置为静态IP
     
    #address192.168.1.10     # 配置虚拟网卡eth0:1网卡的IP地址
     
    #netmask255.255.255.0    # 配置虚拟网卡eth0:1网卡的子网掩码
     
    #gateway192.168.1.1      # 配置虚拟网卡eth0:1网卡的网关地址

#动态IP配置

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

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

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

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

/etc/init.d/networkingforce-reload          # 重新载入配置文件
 
/etc/init.d/networking restart              # 重启网络服务

或者

    ifconfig enp0s31f6 down              #关闭网卡    
     
    ifconfig enp0s31f6 up                #开启网卡

3. 关于 Ubuntu 配置 DNS 的说明

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

(1)interfaces方式

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

dns-nameserver xx.xx.xx.xx
dns-nameserver xxx.xxx.xx.xx
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记录时,在文件中加入下面内容:

nameserver xxx.xxx.xx.xxx
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常用的网络指令

ifconfig                        # 查看网络信息
 
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网卡的虚拟网卡(重启后失效)

 
  •  
  • 例如:
    ifconfig     eth0:0 192.168.1.125        # 创建eth0的第一张虚拟网卡,并设置IP地址
     
    ifconfig      eth0:1 192.168.3.250       # 创建eth0的第二张虚拟网卡,并设置IP地址
ifconfig ethx:y down                     # 临时删除ethx网卡的虚拟网卡(重启后失效)

 

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

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

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

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

/etc/init.d/networking start                # 启动网络服务
 
/etc/init.d/networking stop                 # 关闭网络服务
 
/etc/init.d/networking restart              # 重启网络服务
 
/etc/init.d/networking force-reload         # 强制重载网络配置

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

 

            </div><div data-report-view="{&quot;mod&quot;:&quot;1585297308_001&quot;,&quot;spm&quot;:&quot;1001.2101.3001.6548&quot;,&quot;dest&quot;:&quot;https://blog.csdn.net/weixin_41632560/article/details/89466394&quot;,&quot;extend1&quot;:&quot;pc&quot;,&quot;ab&quot;:&quot;new&quot;}"><div></div></div>
    </div>
Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐