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方式即可。
说明
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
版权声明:本文为博主原创文章,转载请附上博文链接!
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
---------------------
2016年10月19日 18:04:58 Sonictl 阅读数:8315更多
个人分类: linux嵌入式 linux
来源: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 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更简单。
# 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
版权声明:本文为博主原创文章,转载请附上博文链接!
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
设定主机上各个网络服务进程所使用的端口号
/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服务器解析。
/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的主机别名。
如果你仔细一想,会发现,其实这个文件是很危险的,如果有人恶意修改了你这个文件,比如把淘宝的网站域名解析到了他的钓鱼网站,那你就要中招了。
该文件用来指定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劫持。
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地址,如非特殊需求,一般情况下不必人为修改。故而此处将该配置信息注释掉,只做示例。
该文件属于主机的一个记录文件,其主要作用就是记录主机识别到的网卡信息。每当识别到一个新的网络接口配置信息,就会自动追加到该文件,用户也可以自己添加网络接口信息。主机识别网卡信息主要依据就是通过MAC地址。
该文件就是简单的用include命令指定了xinetd守护进程可以读取的配置文件,所有xinetd可读取的配置文件其实都放在/etc/xinted.d目录下面。xinetd守护进程通过读取不同的服务进程的配置文件,启动并配置相应的服务进程。
/etc/networks
# 实现域名与网络地址的映射
/etc/protocols
# 设定主机使用的协议及各个协议的协议号(协议ID)
/etc/services
# 设定主机上各个网络服务进程所使用的端口号
上述三个配置文件的作用如注释所说,一般保持默认,不必修改。
Ubuntu在Desktop版本中,提供了两种方法来进行网络参数配置。即图形界面和文本命令行配置。文本命令行方式是通过修改/etc/network/interfaces
来进行配置的。而图形界面配置是通过network-manager
进行配置,通过启动Ubuntu桌面的SystemàPreferencesàNetwork Connections即可进行图形化配置。network-manager
的配置和直观,按照提示一步一步操作即可,读者可以自行查阅相关的配置方法。
但如果修改了interfaces
配置文件,又配置了network-manager
(以下简称nm
),就会出现一些莫名其妙的问题:
interfaces
和 nm
中的网络设置不一样,系统实际的IP是哪个?
有时候莫名其妙的,界面右上角的网络连接图标就丢失了。
明明在nm
中配置了正确的网络设置,为什么就上不了网呢?
其实,只要弄清楚interfaces
和 nm
之间的关系,这些问题就不难解释了。
首先,当系统内没有第三方网络管理工具(比如nm
)时,系统默认使用nterfaces
文件内的参数进行网络配置。
接着,当系统内安装了nm
之后,nm
默认接管了系统的网络配置,使用nm
自己的网络配置参数来进行配置。
但是,如果用户在安装nm
之后(Desktop版本默认安装了nm),自己手动修改了interfaces
文件,那nm
就自动停止对系统网络的管理,系统改使用interfaces
文件内的参数进行网络配置。
此时,再去修改nm
内的参数,不影响系统实际的网络配置。若要让nm 内的配置生效,必须重新启用nm
接管系统的网络配置。
现在知道了两者之间的工作关系,再看上面的三个问题:
要看nm
是否接管,如果没有接管,系统实际的IP设置以interfaces 中的为准。反之,以nm
中的为准。
当nm
停止接管的时候,网络连接图标就丢失了。
同样是接管的问题。
如果用户希望在Desktop版本中,直接使用interfaces 进行网络配置,那么可以通过以下指令来关闭network-manager
:
/etc/init.d/network-managerstop # 手动关闭network-manager
之后通过查看/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
修改文件里面这一行:managed=false
,将false
修改成true
,然后重启nm
程序,指令如下:
sudo servicenetwork-manager start # 由nm程序重新接管网络配置工作
【注意】如果手工改过/etc/network/interfaces
,`nm会自己把这行改成:managed=false(这里应该默认就是false)
首先通过ifconfig查看网卡信息,显示网卡enp0s31f6和网卡lo
一般通过修改/etc/network/interfaces配置文件设置网络接口参数,示例如下:
#配置环回网络,系统默认就好,一般不必修改。
auto lo
iface lo inetloopback
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
系统按主机中网卡的个数进行编号,例如主机存在三张网卡,则分别为eth0
,eth1
和eth2
。每张网卡均可配置多个虚拟网络IP。上述配置中,屏蔽了静态IP配置,启用的是动态IP配置。
之后需要在/etc/resolv.conf
配置文件中指定DNS域名服务器的IP地址信息,参见第一小节说明。
配置完成后,执行如下指令,使配置生效:
/etc/init.d/networkingforce-reload # 重新载入配置文件
/etc/init.d/networking restart # 重启网络服务
或者
ifconfig enp0s31f6 down #关闭网卡
ifconfig enp0s31f6 up #开启网卡
目前我所掌握的 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后需要重启电脑方可生效(我没有找到其它使其生效的方式,重启网络并不能更新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
修改成功后,运行sudo resolvconf -u更新/etc/resolv.conf文件即可。这种方式不需要重启电脑。
备注: 看到网上说可以修改/etc/resolvconf/resolv.conf.d/base文件同样能配置DNS,但经我测试,不能正确配置,不知道是什么原因。
Ubuntu是在虚拟机里安装的,刚开始正常,网卡设备名为eth0。后来添加一块网卡(虚拟的),然后eth0就消失了,只有eth1和eth2了。原来问题出在文件/etc/udev/rules.d/70-persistent-net.rules中。由于以前可以更改过MAC地址,所以70-persistent-net.rules中仍然保留了老网卡的内容,新网卡则被识别为eth1,eth2。
将表示老网卡的行注释掉,然后将表示新网卡的行中eth1改成eth0,eth2改为eth1重启即可
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