侯体宗的博客
  • 首页
  • Hyperf版
  • beego仿版
  • 人生(杂谈)
  • 技术
  • 关于我
  • 更多分类
    • 文件下载
    • 文字修仙
    • 中国象棋ai
    • 群聊
    • 九宫格抽奖
    • 拼图
    • 消消乐
    • 相册

VM虚拟机中的Ubuntu设置固定IP上网图文教程

linux  /  管理员 发布于 7年前   146

但是如果你的机子有特殊用处,比如作为服务器,需要IP地址信息,亦或者像我一样,作为一个云计算的节点,其IP都是在配置文件里配置好的,如果每次重启系统都要跑过去修改下配置文件里的IP,那简直是不可取的做法,因此为虚拟机设置固定IP上网非常的有必要!
设置固定IP的方法很多,大家都知道虚拟机上网有三种模式:bridged、host-only和NAT,其中NAT模式对应VMnet8虚拟网络,host-only模式对应VMnet1虚拟网络,bridged模式对应 VMnet0虚拟网络,都是由VMware虚拟机自动配置而生成的,不需要用户自行设置。VMnet8和VMnet1提供DHCP服务,VMnet0虚拟 网络则不提供。
由于NAT的方式最简单,因此下面是NAT设置的具体方法。
测试环境:
虚拟机版本:VMware Workstation 10
Ubuntu版本:Ubuntu 12.10/13.04
1. 设置虚拟机上网方式为NAT

2.  配置VMnet8虚拟网络(Virtual Network Editor)
因为NAT对应的是VMnet8虚拟网络,打开Vmware自带的虚拟网络编辑工具Virtual Network Editor,配置如下:

其中子网IP根据自己情况设置,比如我想设置固定IP地址为192.168.1.151,那么这里的子网IP就填192.168.1.0,另外记得取消DHCP选项服务。


3.  进入到Ubuntu系统中配置网络
主要配置下面三个方面的内容:
(1)修改文件/etc/network/interfaces,这里是IP、网关、掩码等的一些配置;
(2)修改文件/etc/resolv.conf,这个文件保存DNS的有关信息;
(3)解决resolv.conf被重写问题;
(4)重启虚拟机网络

下面是具体配置方法:
(1)修改文件/etc/network/interfaces
命令:

复制代码代码如下:
sudo vi /etc/network/interfaces
或
sudo gedit /etc/network/interfaces

我的配置如下:

复制代码代码如下:# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto eth0</p><p>iface eth0 inet static
address 192.168.1.151
netmask 255.255.255.0
gateway 192.168.1.2
其中网关gateway要与Virtual Network Editor中“NAT Settings...”中的一致,一般好像都为192.168.xx.2。

(2)修改文件/etc/resolv.conf
命令:

复制代码代码如下:sudo vi /etc/resolv.conf
或
sudo gedit /etc/resolv.conf[code]
我的配置如下:
[code]nameserver 202.38.64.1
当然这里是因人而异了,加上你自己的DNS服务器即可,我的是校内DNS。

(3)解决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即可,命令如下:

复制代码代码如下: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.</p><p>description "network connection manager"</p><p>#start on (local-filesystems
# and started dbus
# and static-network-up)
stop on stopping dbus</p><p>expect fork
respawn</p><p>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这个文件也行,我没有亲自测试,感兴趣的可用自己测试。

说了这么多,各版本的差异看来挺麻烦的,不知道最新的版本或以后的版本会不会又变样了,其实这里有个更简单的与版本无关的方式能够防止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</p><p>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
(4)重启虚拟机网络
配置完成后,重启网络即可,也有好几种方法:

复制代码代码如下: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进行配置,但个人感觉这种方式最好,因此推荐!


  • 上一条:
    ubuntu13.04设置静态ip的方法
    下一条:
    Ubuntu每日小技巧之使用Ubuntu拷贝、刻录CD和DVD光盘
  • 昵称:

    邮箱:

    0条评论 (评论内容有缓存机制,请悉知!)
    最新最热
    • 分类目录
    • 人生(杂谈)
    • 技术
    • linux
    • Java
    • php
    • 框架(架构)
    • 前端
    • ThinkPHP
    • 数据库
    • 微信(小程序)
    • Laravel
    • Redis
    • Docker
    • Go
    • swoole
    • Windows
    • Python
    • 苹果(mac/ios)
    • 相关文章
    • 在Linux系统中使用Iptables实现流量转发功能流程步骤(0个评论)
    • vim学习笔记-入门级需要了解的一些快捷键(0个评论)
    • 在centos7系统中实现分区并格式化挂载一块硬盘到/data目录流程步骤(0个评论)
    • 在Linux系统种查看某一个进程所占用的内存命令(0个评论)
    • Linux中grep命令中的10种高级用法浅析(0个评论)
    • 近期文章
    • 在go中实现一个常用的先进先出的缓存淘汰算法示例代码(0个评论)
    • 在go+gin中使用"github.com/skip2/go-qrcode"实现url转二维码功能(0个评论)
    • 在go语言中使用api.geonames.org接口实现根据国际邮政编码获取地址信息功能(1个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf分页文件功能(0个评论)
    • gmail发邮件报错:534 5.7.9 Application-specific password required...解决方案(0个评论)
    • 欧盟关于强迫劳动的规定的官方举报渠道及官方举报网站(0个评论)
    • 在go语言中使用github.com/signintech/gopdf实现生成pdf文件功能(0个评论)
    • Laravel从Accel获得5700万美元A轮融资(0个评论)
    • 在go + gin中gorm实现指定搜索/区间搜索分页列表功能接口实例(0个评论)
    • 在go语言中实现IP/CIDR的ip和netmask互转及IP段形式互转及ip是否存在IP/CIDR(0个评论)
    • 近期评论
    • 122 在

      学历:一种延缓就业设计,生活需求下的权衡之选中评论 工作几年后,报名考研了,到现在还没认真学习备考,迷茫中。作为一名北漂互联网打工人..
    • 123 在

      Clash for Windows作者删库跑路了,github已404中评论 按理说只要你在国内,所有的流量进出都在监控范围内,不管你怎么隐藏也没用,想搞你分..
    • 原梓番博客 在

      在Laravel框架中使用模型Model分表最简单的方法中评论 好久好久都没看友情链接申请了,今天刚看,已经添加。..
    • 博主 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 @1111老铁这个不行了,可以看看近期评论的其他文章..
    • 1111 在

      佛跳墙vpn软件不会用?上不了网?佛跳墙vpn常见问题以及解决办法中评论 网站不能打开,博主百忙中能否发个APP下载链接,佛跳墙或极光..
    • 2016-11
    • 2017-07
    • 2017-10
    • 2017-11
    • 2018-01
    • 2018-02
    • 2020-03
    • 2020-04
    • 2020-05
    • 2020-06
    • 2021-02
    • 2021-03
    • 2021-04
    • 2021-06
    • 2021-07
    • 2021-08
    • 2021-09
    • 2021-10
    • 2021-11
    • 2021-12
    • 2022-01
    • 2022-03
    • 2022-04
    • 2022-08
    • 2022-11
    • 2022-12
    • 2023-01
    • 2023-02
    • 2023-03
    • 2023-06
    • 2023-07
    • 2023-10
    • 2023-12
    • 2024-01
    • 2024-04
    Top

    Copyright·© 2019 侯体宗版权所有· 粤ICP备20027696号 PHP交流群

    侯体宗的博客