02-开发板有线连接PC机时与虚拟机三者ping通的问题

简介:

 在刚开始学习嵌入式入岛的最大的问题就是开发板、PC机、虚拟机三者之间如何ping通的问题。首先需要了解在vmware中设置Linux连接网络的方法。

网路连接属性 意义
bridged(桥接模式) 连接vmnet0虚拟交换机,此时虚拟机相当于网络上的一台独立计算机。与主机一样,拥有一个IP。
NAT(网络地址转换模式) 使用VMnet8虚拟交换机,此时虚拟机可以通过主机单向访问其他主机,而Vmnet8存在的意义实现主机和虚拟机之间的通信。
host-only(主机模式) 使用VMnet1虚拟交换机,此时只能实现主机的VMnet1网卡和虚拟机之间的通信。

02-开发板有线连接PC机时与虚拟机三者ping通的问题 
02-开发板有线连接PC机时与虚拟机三者ping通的问题02-开发板有线连接PC机时与虚拟机三者ping通的问题

一、通过路由器连接开发板与PC机

 通过这种方式连接是最容易实现的网上资料也很多,这里不再赘述。其连接原理图可用下图表示。
02-开发板有线连接PC机时与虚拟机三者ping通的问题
二、开发板与PC机直接相连
有时,由于路由器离我们比较远,而开发板无法直接连接到路由器时,我们会将开发板直接连接PC机,但此时就会出现很多的问题。此时我对以下3种情况进行了分析。
02-开发板有线连接PC机时与虚拟机三者ping通的问题
1、开发板上有操作系统,虚拟机桥接模式选择有线网卡
02-开发板有线连接PC机时与虚拟机三者ping通的问题
在这种方式下需要开发板中有操作系统,此时开发板直接运行操作系统,而不是进入U-BOOT引导程序。此时三者的IP分别设置为:

设备 IP
开发板 192.168.2.10
主机 192.168.2.20
虚拟机 192.168.2.30

开发板ping pc机与虚拟机的结果:

[root@EmbedSky /]# ifconfig eth0
eth0      Link encap:Ethernet  HWaddr 10:23:45:67:89:AB  
          inet addr:192.168.2.10  Bcast:192.168.2.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:79 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:13824 (13.5 KiB)  TX bytes:770 (770.0 B)
          Interrupt:51 Base address:0x8000 

[root@EmbedSky /]# ping -c 5 192.168.2.20
PING 192.168.2.20 (192.168.2.20): 56 data bytes
64 bytes from 192.168.2.20: seq=0 ttl=128 time=1.374 ms
64 bytes from 192.168.2.20: seq=1 ttl=128 time=1.067 ms
64 bytes from 192.168.2.20: seq=2 ttl=128 time=1.044 ms
64 bytes from 192.168.2.20: seq=3 ttl=128 time=1.040 ms
64 bytes from 192.168.2.20: seq=4 ttl=128 time=1.045 ms

--- 192.168.2.20 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 1.040/1.114/1.374 ms

[root@EmbedSky /]# ping -c 5 192.168.2.30
PING 192.168.2.30 (192.168.2.30): 56 data bytes
64 bytes from 192.168.2.30: seq=0 ttl=64 time=2.467 ms
64 bytes from 192.168.2.30: seq=1 ttl=64 time=1.220 ms
64 bytes from 192.168.2.30: seq=2 ttl=64 time=1.050 ms
64 bytes from 192.168.2.30: seq=3 ttl=64 time=1.424 ms
64 bytes from 192.168.2.30: seq=4 ttl=64 time=1.408 ms

--- 192.168.2.30 ping statistics ---
5 packets transmitted, 5 packets received, 0% packet loss
round-trip min/avg/max = 1.050/1.513/2.467 ms

2、开发板进入uboot引导程序,虚拟机桥接模式选择无线网卡

02-开发板有线连接PC机时与虚拟机三者ping通的问题

设备 IP
开发板 192.168.2.10,服务器IP为192.168.2.20(PC机)
PC机 有线:192.168.2.20;无线 :192.168.155.2
虚拟机 192.168.155.3

 在这种模式下开发板和PC机之间两者可以ping通,PC机和虚拟机两者之间可以ping通,但是开发板无法ping通虚拟机,那么就无法在开发板和虚拟机之间使用NFS传输文件。
开发板:

EmbedSky> printenv
bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0
bootcmd=boot_zImage
bootdelay=0
baudrate=115200
ethaddr=0a:1b:2c:3d:4e:5f
netmask=255.255.255.0
ostype=linux
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bios),128k(params),128k(toc),512k(eboot),1024k(logo),3m(kernel),-(root)
ipaddr=192.168.2.10
serverip=192.168.2.20
gatewayip=192.168.2.1
stdin=serial
stdout=serial
stderr=serial
partition=nand0,0
mtddevnum=0
mtddevname=bios

Environment size: 460/131068 bytes
EmbedSky> ping 192.168.2.20
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
host 192.168.2.20 is alive

PC机:
02-开发板有线连接PC机时与虚拟机三者ping通的问题
02-开发板有线连接PC机时与虚拟机三者ping通的问题

C:\Users\Administrator>ping 192.168.155.3
正在 Ping 192.168.155.3 具有 32 字节的数据:
来自 192.168.155.3 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.155.3 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.155.3 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.155.3 的回复: 字节=32 时间<1ms TTL=64

192.168.155.3 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms

虚拟机:

book@www.100ask.org:~$ ping 192.168.155.2
PING 192.168.155.2 (192.168.155.2) 56(84) bytes of data.
64 bytes from 192.168.155.2: icmp_seq=1 ttl=128 time=0.596 ms
64 bytes from 192.168.155.2: icmp_seq=2 ttl=128 time=0.834 ms
64 bytes from 192.168.155.2: icmp_seq=3 ttl=128 time=0.665 ms
64 bytes from 192.168.155.2: icmp_seq=4 ttl=128 time=0.741 ms
^C
--- 192.168.155.2 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3021ms
rtt min/avg/max/mdev = 0.596/0.709/0.834/0.088 ms

3、开发板进入uboot引导程序,虚拟机桥接模式选择有线网卡

设备 IP
开发板 192.168.2.10,服务器IP为192.168.2.20
PC机 有线:192.168.2.20;
虚拟机 192.168.2.30

 这种模式下,开发板与虚拟机之间可以ping通,开发板与PC之间可以ping通,但是PC机和虚拟机之间无法ping通。要想解决PC机与虚拟机之间的ping同问题,可以通过增加虚拟网卡的方式解决,即再增加一块网卡选择NAT模式连接PC机与虚拟机。
此时还要注意的是,在虚拟机中使用命令行设置网卡IP时,有时会出现问题,我在做实验时发现,如果仅命令行下设置使用ifconfig命令设置ip,当使用开发板pingPC机或虚拟机之后,虚拟机的IP有时会自动消失,因此建议在图形界面下设置虚拟机的IP保存或者在/etc/network/interfaces文件中设置永久ip。
02-开发板有线连接PC机时与虚拟机三者ping通的问题
02-开发板有线连接PC机时与虚拟机三者ping通的问题
02-开发板有线连接PC机时与虚拟机三者ping通的问题

EmbedSky> ping 192.168.2.20            #开发板ping通PC机
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
host 192.168.2.20 is alive                   #开发板ping通虚拟机
EmbedSky> ping 192.168.2.30
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
host 192.168.2.30 is alive
EmbedSky> printenv
bootargs=noinitrd root=/dev/mtdblock2 init=/linuxrc console=ttySAC0
bootcmd=boot_zImage
bootdelay=0
baudrate=115200
ethaddr=0a:1b:2c:3d:4e:5f
netmask=255.255.255.0
ostype=linux
mtdids=nand0=nandflash0
mtdparts=mtdparts=nandflash0:256k@0(bios),128k(params),128k(toc),512k(eboot),1024k(logo),3m(kernel),-(root)
ipaddr=192.168.2.10
stdin=serial
stdout=serial
stderr=serial
partition=nand0,0
mtddevnum=0
mtddevname=bios
serverip=192.168.2.30
gatewayip=192.168.2.1

Environment size: 460/131068 bytes

 对于以上的模式进行总结可以发现,PC机与开发板不使用路由器,直接有网线连接会出现非常多的问题。对其总结可以得到如下的关系:
02-开发板有线连接PC机时与虚拟机三者ping通的问题
为了使开发板能同时ping通虚拟机与PC机、而PC机与虚拟机也能ping通,此时应该使用两块网卡,配置结果如下:
02-开发板有线连接PC机时与虚拟机三者ping通的问题
参数配置为:
02-开发板有线连接PC机时与虚拟机三者ping通的问题

book@www.100ask.org:~$ ifconfig 
ens33     Link encap:Ethernet  HWaddr 00:0c:29:92:c0:85  
          inet addr:192.168.2.30  Bcast:192.168.2.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe92:c085/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:7 errors:0 dropped:0 overruns:0 frame:0
          TX packets:46 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:420 (420.0 B)  TX bytes:6834 (6.8 KB)

ens38     Link encap:Ethernet  HWaddr 00:0c:29:92:c0:8f  
          inet addr:192.168.3.30  Bcast:192.168.3.255  Mask:255.255.255.0
          inet6 addr: fe80::20c:29ff:fe92:c08f/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:15 errors:0 dropped:0 overruns:0 frame:0
          TX packets:32 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:2491 (2.4 KB)  TX bytes:4494 (4.4 KB)

lo        Link encap:Local Loopback  
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:9388 errors:0 dropped:0 overruns:0 frame:0
          TX packets:9388 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1 
          RX bytes:694536 (694.5 KB)  TX bytes:694536 (694.5 KB)

 通过这种方式可以达到开发板、PC机、虚拟机相互ping通的问题。
开发板:

EmbedSky> ping 192.168.2.20
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
host 192.168.2.20 is alive
EmbedSky> ping 192.168.2.30
dm9000 i/o: 0x20000300, id: 0x90000a46 
MAC: 0a:1b:2c:3d:4e:5f
host 192.168.2.30 is alive

PC机:

C:\Users\Administrator>ping 192.168.3.30         #PC机ping通虚拟机NAT卡网

正在 Ping 192.168.3.30 具有 32 字节的数据:
来自 192.168.3.30 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.3.30 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.3.30 的回复: 字节=32 时间<1ms TTL=64
来自 192.168.3.30 的回复: 字节=32 时间<1ms TTL=64

192.168.3.30 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 0ms,最长 = 0ms,平均 = 0ms


本文转自 梦想成大牛 51CTO博客,原文链接:http://blog.51cto.com/yinsuifeng/2053819,如需转载请自行联系原作者	
相关文章
|
1月前
|
Ubuntu 网络安全 虚拟化
VMware虚拟机ping不通原因排查及分析
下面以 VMware 虚拟机为例进行介绍。
738 3
|
4月前
|
Ubuntu Shell 网络安全
安装了ubuntu虚拟机后发现shell无法连接 ubuntu开启ssh连接
【8月更文挑战第23天】安装了ubuntu虚拟机后发现shell无法连接
362 6
|
2月前
|
安全 虚拟化 数据中心
Xshell 连接 VMware虚拟机操作 截图和使用
Xshell 连接 VMware虚拟机操作 截图和使用
81 4
|
2月前
|
Linux 网络安全
Linux虚拟机与主机和Xshell的连接问题解决
Linux虚拟机与主机和Xshell的连接问题解决
106 1
|
4月前
|
关系型数据库 MySQL Linux
成功解决:2003 -Can‘t connect toMySQL server on ‘10.1.46.42(10060 “Unknown error“) 使用navicate连接虚拟机出错
这篇文章记录了在CentOS 7系统上安装并配置MySQL后,使用Navicat尝试进行远程连接但失败的问题。问题的主要原因是虚拟机的防火墙没有关闭。文章详细介绍了如何检查防火墙的状态,如何临时关闭它,以及如何禁止防火墙在系统启动时自动启动。当防火墙处于开启状态时,远程连接无法成功;关闭或禁用防火墙后,远程连接便能成功建立。
成功解决:2003 -Can‘t connect toMySQL server on ‘10.1.46.42(10060 “Unknown error“) 使用navicate连接虚拟机出错
|
4月前
|
Linux 虚拟化
成功解决:Xshell 无法连接虚拟机。如何使用Xshell连接CentOS7虚拟机(详细步骤过程)
这篇文章提供了使用Xshell连接CentOS 7虚拟机的详细步骤,包括编辑VMware的网络设置以启用桥接模式、检查个人电脑适配器虚拟网络的连接情况,以及通过Xshell新建并建立连接的过程。文章还提到了在虚拟机可以访问外网的情况下成功连接的后语,暗示了网络配置的重要性。
成功解决:Xshell 无法连接虚拟机。如何使用Xshell连接CentOS7虚拟机(详细步骤过程)
|
4月前
|
NoSQL Java Linux
springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
该博客文章介绍了如何在Spring Boot项目中通过配置和代码实现连接运行在Linux虚拟机上的Redis服务,并提供了详细的步骤和测试结果截图。
springboot+redis+虚拟机 springboot连接linux虚拟机中的redis服务
|
4月前
|
关系型数据库 MySQL 数据库
成功解决:Navicat 连接虚拟机Docker中的mysql数据库失败(仅限某些特殊情况)
这篇文章介绍了在Ubuntu环境中使用Docker部署Flask项目的方法,包括创建测试项目、设置数据库、构建Flask和Nginx镜像以及容器编排,其中使用了MySQL 5.7作为数据库,Flask 2.0.2作为Web框架,Gunicorn 20.1.0作为应用服务器,Nginx 1.21.4作为反向代理,并解决了Navicat连接Docker中的MySQL数据库失败的问题。
|
7月前
|
Shell Linux 开发工具
Vmware 虚拟机挂起恢复后发现无法 Ping 通,无法连接到主机
在Linux主机上,以`root`用户停止NetworkManager服务并重启网络: ```shell systemctl stop NetworkManager systemctl restart network ``` 或修改网卡配置文件`ifcfg-ens33`,添加`NM_CONTROLLED=&quot;no&quot;`,然后重启`network`服务: ```shell vim /etc/sysconfig/network-scripts/ifcfg-ens33 systemctl restart network ```
225 6
|
6月前
|
安全 Linux 网络安全
NAT模式下主机连接虚拟机
NAT模式下主机连接虚拟机,VMware虚拟机系统以CentOS7为例。
189 0