虚拟机ubuntu固定IP上外网

本文阐述内容如有涉及侵权,请联系我,马上删除,文中部分截图来自网络,文后附有连接。

之前装了ubuntu17.04的虚拟机,后面用了一段时间,刚开始还可以正常xshell连接,并且可以连接外网。但是,之后xshell就连接不上了,进入虚拟机,打开终端,ifconfig命令查看IP,发现IP变掉了。于是想固定IP使用,毕竟反复改IP太麻烦了。借鉴网上的各种教程,折腾良久,搞定。现记录下整个过程,备忘。

虚拟机版本:VMware Workstation 10.0.2 build-1744117 ubuntu版本:Ubuntu 17.04 宿主机系统:win10

虚拟机上网有三种模式:bridged、host-only和NAT, 其中NAT模式对应VMnet8虚拟网络,host-only模式对应VMnet1虚拟网络,bridged模式对应 VMnet0虚拟网络,都是由VMware虚拟机自动配置而生成的,不需要用户自行设置。VMnet8和VMnet1提供DHCP服务,VMnet0虚拟 网络则不提供。

  1. 设置虚拟机上网方式为NAT
    在虚拟机设置中的网络适配器里,选择NAT模式
  2. 配置VMnet8虚拟网络

    在VMware的编辑选项中打开虚拟网络编辑器
    按照下图中对虚拟网络进行设置,虚拟网络的列表里默认是有VMnet0,VMnet1和VMnet8三种,我只有一种是因为我把另外两种给移除了,在这里我们选择VMnet8网络,其中子网IP根据自己的情况进行设置,只要不把原来已有的给占用即可.

    我自己设置为192.168.150.0
  3. 进入到Ubuntu系统中配置网络
    主要配置下面几个方面的内容:
    1.修改文件/etc/network/interfaces,这里是IP、网关、掩码等的一些配置;
    修改文件/etc/network/interfaces
    输入命令:sudo vi /etc/network/interfaces
    或者:sudo gedit /etc/network/interfaces
    配置如下:

    其中较新版本的比如我的Ubuntu16.04 就是ens33,有的版本是eth0, 具体可以在终端输入ifconfig命令查看,如图:

    另外其中的网关要和虚拟网络编辑器中设置的一致,一般好像为192.168.XXX.2。
    上面最后一行设置的DNS不是必要的,可在下一步设置,这一步的优先级比resolv.conf中高,会优先在这一步读取DNS,如果没有配置才会去resolve.conf里面查找。
    2.修改文件/etc/resolv.conf,这个文件保存DNS的有关信息;
    修改文件/etc/resolv.conf
    输入命令:sudo vi /etc/resolv.conf 或 sudo gedit /etc/resolv.conf
    配置如下:
    nameserver 8.8.8.8
    这里具体DNS因人而异
    3.解决resolv.conf被重写问题;
    第二步中你虽然配置了DNS,但是每次重启虚拟机或重启网络后/etc/resolv.conf文件就会被重写,也就是又恢复原样了,你以前的配置就不存在了,每次都要手动配置是极不可取的,所以这步是必须的,首先我们要搞清楚resolv.conf被重写的原因和机制,这在不同 Ubuntu版本下有所差异。
    在这一步,教程原文上有两种办法,第一种是根据不同系统版本来采取不同的办法,第二种是于版本无关,通用的做法.我选了第二种,如果想看第一种方法,可以在文末的原文链接里去看。
    第二种办法就是在前面第(1)步中在最后面直接加上你的DNS地址,因为interfaces优先级比resolv.conf高,会优先看interfaces里面的DNS.
    4.重启虚拟机网络
    配置完成后需要重启一下网络:
    sudo service networking restart
    或者:
    sudo /etc/init.d/networking restart
    在这一步我重启网络失败了,只能选择了下面的重启网卡:
    sudo ifconfig eth0 down
    sudo ifconfig eth0 up

以上内容的原文链接:http://blog.csdn.net/seiulaomi/article/details/64920287

设置完以后,以为可以用了,但是还是不可以,进入虚拟机终端后,ping 8.8.8.8 不成功:

这个时候,用到了接下来的教程:

如果ping域名的时候出现ping:unknown host xxx.xxx

但是ping IP地址的时候可以通的话

可知是dns服务器没有配置好,
查看一下配置文件/etc/resolv.conf,里面是否有nameserver xxx.xxx.xxx.xxx,比如使用dns服务器 nameserver 8.8.8.8,如果有,修改一个可用的dns服务器,如8.8.8.8或者4.4.4.4,保存退出即可!

当然,如果连ip都ping 8.8.8.8都ping不通的话,那么就说明网络配置有问题:可以这样解决:
1,首先查看ifconfig是否有内网ip地址,如果没有,那么配置一下
ifconfig eth0 192.168.1.100 up,

可以同时配置好掩码:

另外使用route命令查看一下当前的默认网关,如果没有,也配置一个,
route add default gw 192.168.1.1,

配置好这两个以后,就可以正常的ping通网络了,如果还不能ping www.baidu.com,那么就要去查看dns服务器啦。

我自己的设置:sudo route add default gw 192.168.150.2

这个时候,ping 8.8.8.8 ping www.baidu.com 都可以ping通了。

但是这种添加网关的方法只是一次性的。
重启虚拟机后又没有默认网关了。

第二种方法:
设置网关
vi /etc/sysconfig/network-scripts/ifcfg-eth0
添加
GATEWAY=192.168.150.2
然后重新启动网络服务:
service network restart

确保可用DNS解析
[root@localhost Desktop]# grep hosts /etc/nsswitch.conf
输出
hosts: files dns
该文件/etc/nsswith.conf是SUN公司开发的一种扩展name server switch。用于设置文件读取的顺序,如是先读取/etc/hosts文件,还是先查找DNS服务器。
hosts: files dns 指定先查找/etc/hosts文件,如果失败,则到DNS服务器查找与域名相对应的主机信息。
4)测试DNS
ping www.baidu.com

上面这种方法我不知道是否可以,因为我执行service network restart
会报错network: unrecognized service
且ping www.baidu.com还是不通

所以,以上两种方法我觉得都不行。
第三种方法:
编辑/etc/network/interfaces 的文件,

gedit /etc/network/interfaces

在 auto lo
iface lo inet loopback
的后面加上:
auto eth0
iface eth0 inet static
address 192.168.1.252
netmask 255.255.255.0
gateway 192.168.150.2
broadcast 192.168.150.255
然后保存退出,重启 networking:

/etc/init.d/networking restart

broadcast广播的意思嘛
在IP地址中,如果最后一个数字是255,则一定是一个广播地址。
可以测试将虚拟机重启,再ping www.baidu.com,依然可以ping通
建议使用第三种方法。

以上教程来自链接:http://blog.csdn.net/menlinshuangxi/article/details/7968955

以上解决了固定IP,以及虚拟机连接外网的问题,但是xshell连接不上虚拟机。

以下步骤解决这个问题:

1.点击这里:

2.找到这里:

3.这里设置成刚才配置的固定IP,不能一样,但是要在同一个网段:

这样,以上问题全部解决。
如果没有ifconfig,可以执行sudo apt-get install net-tools。

posted @ 2017-10-12 15:24  skymvp  阅读(1727)  评论(0编辑  收藏  举报