1.配置静态的网络
时间宝贵的,直接看总结,想了解原由的可以一步步看下去
// 进入配置文件
vim /etc/network/interfaces
// 修改网卡eth0 这里的eth0 是
auto eth0
iface eth0 inet static
address x.x.x.x
netmask x.x.x.x
gateway x.x.x.x
// 配置完成,重启网络服务
/etc/init.d/networking restart
// 启动后,发现只有lo,查看日志,发现没有找到eth0设备。
// 原来Ubuntu 16.04网卡不再采用eth0命名,这和RHEL系列一样,此时需要查看真正的网卡名称是神马:
cd /proc/sys/net/ipv4/conf

可以看到这里的不是eth0而是ens33,所以这样改
// 进入配置文件
vim /etc/network/interfaces
// 修改网卡ens33
auto ens33
iface ens33 inet static // 设置为静态的ip地址
address x.x.x.x
netmask x.x.x.x
gateway x.x.x.x
// 配置完成,重启网络服务(好几种方式)
/etc/init.d/networking restart
最后,配置DNS:
vim /etc/resolve.conf
//修改如下
nameserver 223.5.5.5
你虽然配置了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仍然存在,因为它是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
说明/etc/resolv.conf 其实只是一个link,它实际上指向的是 /run/resolvconf/resolv.conf,这也就解释了为什么每次重启都会被重写的原因,你改的只是个link,对原文件没有影响,而每次重启这个link还得加载原文件的内容,所以对link的修改无效。
解决方法就是:修改真实的原文件,如下:
sudo 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高,也就是网络会从这里读取DNS配置,如果没配置才去看resolv.conf里面的设置,因此在这里面配置DNS更简单。
auto ens33
iface ens33 inet static // 设置为静态的ip地址
address x.x.x.x
netmask x.x.x.x
gateway x.x.x.x
dns-nameservers 8.8.8.8
重启网络
配置完成后,重启网络即可,也有好几种方法:
sudo service networking restart
或者
sudo /etc/init.d/networking restart
也可以重启网卡:
sudo ifconfig eth0 down
sudo ifconfig eth0 up
重启网卡对别的网卡无影响,更推荐一些。
总结
很简单的问题:配置静态网络就这3步
1. 查询自己真正的网卡名字
cd /proc/sys/net/ipv4/conf
2. 打开inerfaces进行配置
vim /etc/network/interfaces
//
auto ens33
iface ens33 inet static // 设置为静态的ip地址
address x.x.x.x // 配置ip
netmask x.x.x.x // 配置子网掩码
gateway x.x.x.x // 配置网关
dns-nameservers 202.97.224.68 202.97.224.69 // 配置dns 多个dns之间用空格分隔
3.重启网络
sudo service networking restart
网友评论