windows10(本机)与VirtualBox中CentOS7(虚拟机)互相访问总结

来源:互联网 发布:天津淘宝模特 编辑:程序博客网 时间:2024/05/16 06:43

先把我这里的环境说下:

本机(windows10),发布了一个tomcat服务:http://192.168.0.106:8080/axis/services/VPMService?wsdl

如下图:服务能正常访问

在VirtualBox中的CentOS7中有两个账户,其中分别是roo和burns,root即系统管理员账户,而burns即普通账户,在root的/usr/VPM-Tomcat6.0.29/目录有tomcat,如下图。

启动centos的tomcat,并在centos中访问。

通过ifconfig 查看centos的网络地址有两个:

发现有两个ip:192.168.122.1和10.0.2.4,两个ip,都能访问到centos的tomcat的服务,

imageimage

而且centos还能访问本机的tomcat的服务和外网,如:百度:http://www.baidu.com

imageimage

VirtualBox设置的网络是NAT

image

在本机能访问到本机的tomcat服务及外网:

image

但是本机却访问不了virtualBox中centos的comcat发布的服务,

怎么解??



针对上面的问题,今天中午把问题解决了:


VirtualBox 中 centos7 下 ping 命令出现 Network is unreachable 问题的解决方法




1 问题描述
在 VirtualBox 中安装好 centos7 后,发现使用 ping 命令测试连接外网 IP 地址,会报错。具体如下:
2 分析
2.1 查看 VirtualBox 设置
打开 VirtualBox 中这台虚拟机的设置,发现默认的连接方式是“网络地址转换(NAT)”。这种方式下,虚拟机可以访问本机,也可以访问外网。这里的设置没问题。
2.2 查看 centos7 网络设置
使用 nmcli 命令,查看当前虚拟机的所有网络基本信息:
nmcli connection show
具体参数说明如下:
参数名称说明NAME连网代号,通常与 DEVICE 一样UUID识别码TYPE网卡的类型;802-3-ethernet 就是以太网DEVICE网卡名称
因为我本机开了无线网络,所以虚拟机也跟着有了无线和有线的以太网。我们继续使用 nmcli 命令,看看 enp0s3 的有线网络配置:
nmcli connection show enp0s3
  • 这里的 enp0s3 是 centos7 自动生成的带随机数的网卡名称,每台机都不一样。
很明显,这里的 IP 地址和网关配置的都不正确,原因找到啦。O(∩_∩)O~
3 解决问题
  1. 设置 centos7 虚拟机的网络获取方式为自动获取 IP(这种方法最方便啦 O(∩_∩)O~)
nmcli connection modify enp0s3\connection.autoconnect yes\ipv4.method auto
  • 1
  • 2
  • 3
  • 1
  • 2
  • 3
  1. 上面的命令只是修改了设定档,还要使用 nmcli 的 up 参数让它实际生效:
nmcli connection up enp0s3
  • 1
  • 1
  1. 实际测试
报错啦,ping 外网 IP,出现 Destination Host Unreachable 的错误!
一查,发现 virtualBox 的 NAT 方式下,centos7 并不能使用自动获取 IP 的连网方式,看来必须换成桥接模式!
到 virtualBox 中换成桥接模式后,立即就生效,马上再测试下:
成功啦,我们的 centos7 虚拟机终于连上外网啦 O(∩_∩)O~
0



CentOS 7系统配置上的变化解析
nmcli和其他网络设置

三、nmcli和其他网络设置
nmcli的功能要强大、复杂的多
[root@CentOS7 ~]# nmcli help
Usage: nmcli [OPTIONS] OBJECT { COMMAND | help }
OPTIONS
  -t[erse]                                  terse output
  -p[retty]                                  pretty output
  -m[ode] tabular|multiline                  output mode
  -f[ields] <field1,field2,...>|all|common  specify fields to output
  -e[scape] yes|no                          escape columns separators in values
  -n[ocheck]                                don't check nmcli and NetworkManager versions
  -a[sk]                                    ask for missing parameters
  -w[ait] <seconds>                          set timeout waiting for finishing operations
  -v[ersion]                                show program version
  -h[elp]                                    print this help
OBJECT
  g[eneral]      NetworkManager's general status and operations
  n[etworking]    overall networking control
  r[adio]        NetworkManager radio switches
  c[onnection]    NetworkManager's connections
  d[evice]        devices managed by NetworkManager
 
OBJECT和COMMAND可以用全称也可以用简称,最少可以只用一个字母,建议用头三个字母。OBJECT里面我们平时用的最多的就是connection和device,这里需要简单区分一下connection和device。
device叫网络接口,是物理设备
connection是连接,偏重于逻辑设置
多个connection可以应用到同一个device,但同一时间只能启用其中一个connection。
这样的好处是针对一个网络接口,我们可以设置多个网络连接,比如静态IP和动态IP,再根据需要up相应的connection。
上篇说了,/etc/udev/rules.d/70-persistent-net.rules 文件没有了,新添加的网卡NetworkManager自动识别。我们现在试试,给Virtualbox虚拟机增加第二块网卡,虚拟机启动后直接可以看到并且生效了。

[root@centos7 ~]# nmcli con show
NAME                UUID                                  TYPE            DEVICE
Wired connection 1  0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  enp0s8
enp0s3              295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3
“Wired connection 1”是新增的网络连接,对应的网络接口叫enp0s8;
“enp0s3”是最初的网络连接,默认与网络接口同名。
我们可以用nmtui把两个连接改成我们熟悉的名字(nmcli也能,但比较麻烦哦)。改完了看看连接:
[root@centos7 ~]# nmcli con show
NAME  UUID                                  TYPE            DEVICE
eth1  0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  enp0s8
eth0  295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3
这样就舒服多了!
看看设备:
[root@centos7 ~]# nmcli dev show enp0s3
GENERAL.DEVICE:                        enp0s3
GENERAL.TYPE:                          ethernet
GENERAL.HWADDR:                        08:00:27:15:35:D2
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                    eth0
GENERAL.CON-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/4
WIRED-PROPERTIES.CARRIER:              on
IP4.ADDRESS[1]:                        ip = 192.168.150.110/24, gw = 192.168.150.254
IP4.DNS[1]:                            192.168.150.254
IP6.ADDRESS[1]:                        ip = fe80::a00:27ff:fe15:35d2/64, gw = ::
[root@centos7 ~]#
[root@centos7 ~]# nmcli dev show enp0s8
GENERAL.DEVICE:                        enp0s8
GENERAL.TYPE:                          ethernet
GENERAL.HWADDR:                        08:00:27:98:D1:B7
GENERAL.MTU:                            1500
GENERAL.STATE:                          100 (connected)
GENERAL.CONNECTION:                    eth1
GENERAL.CON-PATH:                      /org/freedesktop/NetworkManager/ActiveConnection/3
WIRED-PROPERTIES.CARRIER:              on
IP4.ADDRESS[1]:                        ip = 10.0.3.15/24, gw = 10.0.3.2
IP4.DNS[1]:                            10.0.3.2
IP6.ADDRESS[1]:                        ip = fe80::a00:27ff:fe98:d1b7/64, gw = ::
[root@centos7 ~]#
但是试试用连接名查设备呢?
[root@centos7 ~]# nmcli dev show eth0
Error: Device 'eth0' not found.
用设备名查连接也是一样出错:
[root@centos7 ~]# nmcli con show enp0s3
Error: enp0s3 - no such connection profile.
这回能看清楚了吧?懂得了连接和设备的区别,在一些指令帮助里面有的参数需要connection,有的需要device,就不会糊涂了。
需要注意的是,enp0s3设备对应的连接名改为eth0,但对应的ifcfg文件并没有改名,我们改改试试,改之前先备份原配置文件到其他目录(注意,不能备份到network-scripts目录!)。
[root@centos7 network-scripts]# cat ifcfg-enp0s3
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth0
UUID=295e1841-0ff3-4db9-8800-4e25fc2944da
ONBOOT=yes
IPADDR0=192.168.150.110
PREFIX0=24
GATEWAY0=192.168.150.254
DNS1=192.168.150.254
HWADDR=08:00:27:15:35:D2
[root@centos7 network-scripts]#
[root@centos7 network-scripts]# cp ifcfg-enp0s3 /root/
[root@centos7 network-scripts]# mv ifcfg-enp0s3 ifcfg-eth0
[root@centos7 network-scripts]#
[root@centos7 network-scripts]# systemctl restart network
[root@centos7 network-scripts]#
没有问题,配置文件改名成功,强迫症又一次胜利了,耶!
我们还可以看到,ifcfg-eth0里面没有参数指明设备enp0s3,唯一与设备enp0s3相对应的是MAC地址(HWADDR 08:00:27:15:35:D2)。
现在试试增加一个针对新网络接口enp0s8的连接,现有连接是 eth1:
[root@centos7 network-scripts]# cat ifcfg-eth1
HWADDR=08:00:27:98:D1:B7
TYPE=Ethernet
BOOTPROTO=dhcp
DEFROUTE=yes
PEERDNS=yes
PEERROUTES=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1
UUID=0c451785-b098-4c5c-994d-9107171b439d
ONBOOT=yes
嗯,是自动获得IP的。
我们新建一个连接eth1-1,分配固定IP,用nmtui可以很容易的建立

[root@centos7 ~]# nmcli con show
NAME    UUID                                  TYPE            DEVICE
eth1-1  ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9  802-3-ethernet  --    
eth1    0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  enp0s8
eth0    295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3
只是增加了一个连接,其他的没有变化。
我们启动新连接 eth1-1
[root@centos7 ~]# nmcli con up eth1-1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
[root@centos7 ~]#
[root@centos7 ~]# nmcli con show
NAME    UUID                                  TYPE            DEVICE
eth1-1  ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9  802-3-ethernet  enp0s8
eth1    0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  --    
eth0    295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3
[root@centos7 ~]#
[root@centos7 ~]# nmcli -t -f IP4.ADDRESS dev show enp0s8
IP4.ADDRESS[1]:ip = 10.0.3.110/24, gw = 10.0.3.2
“nmcli -t -f IP4.ADDRESS dev show enp0s8” 是以脚本友好的方式显示网络接口信息。
现在可以很明显的看到,将连接eth1-1 up了之后,eth1-1占据了原来由eth1占据的DEVICE enp0s8,并且IP地址已经是指定的10.0.3.110/24 了。
[root@centos7 network-scripts]# cat ifcfg-eth1-1
TYPE=Ethernet
BOOTPROTO=none
IPADDR0=10.0.3.110
PREFIX0=24
GATEWAY0=10.0.3.2
DNS1=10.0.3.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=no
NAME=eth1-1
UUID=ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9
DEVICE=enp0s8
ONBOOT=yes
ifcfg-eth1-1文件里没有HWADDR参数,但是多了一个DEVICE参数,等于enp0s8,你可以对比一下ifcfg-eth1看看区别在哪。
连接的配置文件 ifcfg-*,可以用 DEVICE 指定设备名,也可以用HWADDR指定设备的MAC地址,最终结果都一样的指向某个设备(网络接口)。
我们再试试用nmcli增加连接:
[root@centos7 ~]# nmcli con add con-name eth1-2 ifname enp0s8 type ethernet ip4 10.0.3.120/24 gw4 10.0.3.2
Connection 'eth1-2' (468815f5-ce97-43bd-904a-3078e2e59fec) successfully added.
[root@centos7 ~]#
[root@centos7 ~]# nmcli con show
NAME    UUID                                  TYPE            DEVICE
eth1-1  ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9  802-3-ethernet  enp0s8
eth1    0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  --    
eth0    295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3
eth1-2  468815f5-ce97-43bd-904a-3078e2e59fec  802-3-ethernet  --    
[root@centos7 ~]#
[root@centos7 ~]# nmcli con up eth1-2
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@centos7 ~]#
[root@centos7 ~]# nmcli con show
NAME    UUID                                  TYPE            DEVICE
eth1-1  ef5c3fbc-f07a-4d6e-9f4d-83f239ffc2e9  802-3-ethernet  --    
eth1    0c451785-b098-4c5c-994d-9107171b439d  802-3-ethernet  --    
eth0    295e1841-0ff3-4db9-8800-4e25fc2944da  802-3-ethernet  enp0s3
eth1-2  468815f5-ce97-43bd-904a-3078e2e59fec  802-3-ethernet  enp0s8
[root@centos7 ~]#
[root@centos7 ~]# nmcli -t -f IP4.ADDRESS dev show enp0s8
IP4.ADDRESS[1]:ip = 10.0.3.120/24, gw = 10.0.3.2
[root@centos7 ~]#
再看看新的ifcfg文件:
[root@centos7 network-scripts]# cat ifcfg-eth1-2
TYPE=Ethernet
BOOTPROTO=none
IPADDR0=10.0.3.120
PREFIX0=24
GATEWAY0=10.0.3.2
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_FAILURE_FATAL=no
NAME=eth1-2
UUID=468815f5-ce97-43bd-904a-3078e2e59fec
DEVICE=enp0s8
ONBOOT=yes
[root@centos7 network-scripts]# 
现在up的连接是eth1-2,网络接口enp0s8的IP是10.0.3.120
如果重新up连接eth1-1,nmcli con up eth1-1,网络接口enp0s8的IP变成了10.0.3.110
如果重新up连接eth1,  nmcli con up eth1,  网络接口enp0s8的IP就回到原来自动获得的值10.0.3.15
所以,对一个网络接口设置不同的连接,可以快速的切换不同的网络配置,这个真的满厉害的。
编辑连接
用nmtui编辑连接后,ifcfg文件也会有相应的改动;手工修改ifcfg后,nmtui中也能看到。
但是,不论用nmtui还是直接修改ifcfg文件,想让新的配置生效,我们需要load连接配置文件并重新up连接。
举例,我们编辑ifcfg-eth1-1,把IP改为10.0.3.111,然后执行nmcli con reload 或 nmcli con load /etc/sysconfig/network-scripts/ifcfg-eth1-1
结果如下: 
[root@centos7 ~]# nmcli con load /etc/sysconfig/network-scripts/ifcfg-eth1-1
[root@centos7 ~]# nmcli con up eth1-1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
[root@centos7 ~]# ip addr show enp0s8
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 08:00:27:98:d1:b7 brd ff:ff:ff:ff:ff:ff
    inet 10.0.3.111/24 brd 10.0.3.255 scope global enp0s8
      valid_lft forever preferred_lft forever
    inet6 fe80::a00:27ff:fe98:d1b7/64 scope link
      valid_lft forever preferred_lft forever
[root@centos7 ~]# 
新的IP地址生效了。
BONUS:如果有物理WLAN,nmcli能查看wifi,瞅瞅来,好玩吧?(示例来自nmcli-examples(5) man page,指令: man 5 nmcli-examples) 
$ nmcli device wifi list
          *  SSID              MODE    CHAN  RATE    SIGNAL  BARS  SECURITY
              netdatacomm_local  Infra  6    54 MB/s  37      ▂▄__  WEP
          *  F1                Infra  11    54 MB/s  98      ▂▄▆█  WPA1
              LoremCorp          Infra  1    54 MB/s  62      ▂▄▆_  WPA2 802.1X
              Internet          Infra  6    54 MB/s  29      ▂___  WPA1
              HPB110a.F2672A    Ad-Hoc  6    54 MB/s  22      ▂___  -- 

鉴于很多基本配置可以用nmtui做,而且往往设置一次就够了,nmcli命令行其他强大功能等用的时候再查吧,这里不多讲了。 
参考:
https://access.RedHat.com/documentation/en-US/Red_Hat_Enterprise_Linux/7/html/Networking_Guide/index.html (这文档写的吧,,,,唉。。。)
nmcli-examples(5) man page — Gives examples of nmcli commands.
ip(8) man page — Describes the ip utility's command syntax.
nmcli(1) man page — Describes NetworkManager's command‐line tool.













阅读全文
0 0
原创粉丝点击