- 一、配置虚拟机网络
- 1、配置虚拟机网络模式
- 2、Linux Ubuntu网络配置
- 3、关闭防火墙
- 二、Windows SSH连接Ubuntu
目的:本人想在私人电脑上搭建与公司一样的网络环境进行学习工作,此博客记录搭建环境的步骤与当中遇到的问题,方便以后查阅。最终想建立的网络连接如下图所示:
- Windows控制台可以通过SSH连接到Linux服务器(这里作者使用虚拟机Ubuntu作为Linux服务器)进行开发工作。
- Windows控制台可以通过serial连接到目标单板进行串口通信。
ps:作者这里使用的虚拟机软件是VMWare Workstation,Linux服务器采用的是Ubuntu18.04版本。
1、配置虚拟机网络模式VMWare有3种网络配置方式,Bridged(桥接模式)、NAT(网络地址转换模式)和Host Only(仅主机模式),这三种模式的区别可以参考以下这篇博客:
VMWare虚拟机网络配置
按照我们的需求,我们需要将虚拟机网络配置为Bridged(桥接模式)。桥接模式相当于虚拟机和主机在同一个真实网段,VMWare充当一个集线器功能(一根网线连到主机相连的路由器上),所以如果电脑换了内网,静态分配的ip要更改。图如下:
“桥接模式”具体的配置方式为:“编辑”->“虚拟网络编辑器”->“更改设置”->“桥接模式”->选择对应的有线网卡->确定即可。
配置后网络适配器为桥接模式,如下:
若不是桥接模式,双击再点进去设置下即可。
打开虚拟机,启动Linux服务器,ifconfig查看下服务器的网络配置。我们需要将Linux服务器与Windows主机配置在同一网段才能进行网络通信。作者当前Windows主机在192.168.3.0网段,则也需要配置Linux服务器在同一网段中。在桥接模式下,只需将网络配置成dhcp模式就可以将Windows主机与Linux服务器处在同一网段下,具体原理见桥接模式图。
vi /etc/network/interfaces // 打开网络配置文件
# interfaces(5) file used by ifup(8) and ifdown(8)
auto lo
iface lo inet loopback
auto ens33
iface ens33 inet dhcp
address 192.168.3.10
network 192.168.3.0
netmask 255.255.255.0
broadcast 192.168.3.255
gateway 192.168.3.1
这里直接采用dhcp的方式自动分配一个IP,在终端上执行reboot,重启服务器让网络配置生效,这里要注意的一点是,ens33这个名字不能替换成eth0或者eth1这几个名字,否则会加载配置不成功,作者也没有深入研究为什么,能用就行。
重启后在终端执行ifconfig,看到如下配置信息:
@ubuntu:~$ ifconfig ens33: flags=4163mtu 1500 inet 192.168.3.11 netmask 255.255.255.0 broadcast 192.168.3.255 inet6 fe80::20c:29ff:fe54:a061 prefixlen 64 scopeid 0x20 ether 00:0c:29:54:a0:61 txqueuelen 1000 (Ethernet) RX packets 587 bytes 312030 (312.0 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 815 bytes 110633 (110.6 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 inet6 ::1 prefixlen 128 scopeid 0x10 loop txqueuelen 1000 (Local Loopback) RX packets 338 bytes 27938 (27.9 KB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 338 bytes 27938 (27.9 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可见,Linux服务器网络配置已经生效,Windows主机与Linux服务器端已处在同一个网段中。
尝试能否在Linux服务器中ping通外网:
@ubuntu:~$ ping www.baidu.com PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data. 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=1 ttl=56 time=7.88 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=2 ttl=56 time=21.2 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=3 ttl=56 time=8.69 ms 64 bytes from 14.215.177.38 (14.215.177.38): icmp_seq=4 ttl=56 time=7.83 ms
尝试能否在Linux服务器中ping通Windows主机:
@ubuntu:~$ ping 192.168.3.9 PING 192.168.3.9 (192.168.3.9) 56(84) bytes of data. 64 bytes from 192.168.3.9: icmp_seq=1 ttl=128 time=0.375 ms 64 bytes from 192.168.3.9: icmp_seq=2 ttl=128 time=0.227 ms 64 bytes from 192.168.3.9: icmp_seq=3 ttl=128 time=0.192 ms
若试验现象与上面差不多,代表Linux服务器网络已能ping通外网与Windows主机。
/etc/network/interfaces的内容含义可以参考以下博客:
linux interfaces配置文件详解
3、关闭防火墙作者在试验时能ping通外网,却ping不通Windows主机,查阅了相关资料发现是Windows主机的网络防火墙没有关闭导致的。主要参考以下博客:
桥接模式下vmware虚拟机和宿主机ping不通问题排查
虚拟机的防火墙状态查看:systemctl status firewalld
虚拟机的防火墙关闭:systemctl stop firewalld
关闭虚拟机的防火墙自动启动:systemctl disable firewalld
Windows主机关闭防火墙方式:“控制面板”->“系统和安全”->“Windows Defender防火墙”->“启用或关闭Windows Defender防火墙”->选择关闭即可。
如此再次重复Linux服务器ping Windows主机,便可以ping成功。
Linux服务器可以ping通外网和Windows主机之后,在Windows主机打开串口软件,想通过ssh连接Linux服务器,却发现连接不上。
在Linux服务器终端执行“ssh root@localhost”,得到错误提示“ssh: connect to host localhost port 22: Connection refused”。原因是Ubuntu没有默认提供ssh服务,因此首先安装ssh服务:
@ubuntu:~$ sudo apt-get update @ubuntu:~$ sudo apt-get install openssh-server
如果安装完后该服务没有自动启动,则手工启动:
@ubuntu:~$ sudo /etc/init.d/ssh start
至此。网络中其他终端(Windows主机就)可以使用 ssh 连接 Linux服务器Ubuntu 了。
参考博客:如何使用 SSH 连接 VMWare 虚拟机中的 Ubuntu



