这里是特别篇第三期,会主要实现虚拟机的远程访问,需求来自于和同学分享相关软件。

首先是环境说明

这里本地虚拟机装载到Virtualbox软件中,虚拟机OS为CentOS,内核版本为3.10.0-1160.119.1.el7.x86_64,通过XRDP实现的windows->Linuv GUI的连接。

网络模式

值得注意的是,网络模式是可能踩到的第一个坑,在NAT模式下,(我这里是)网络模式是只出不进的,也就是可以在虚拟机内部联网下载东西,但是从外部网络无法访问到虚拟机,需要加一个Bridged Adapter,选择自己联网的方式(enpxx->网卡接口,wlp->wifi),然后promiscuous mode选择全部,就完成了从外部到虚拟机的访问。

XRDP和桌面环境

首先需要安装XRDP:

1
sudo yum install xrdp -y

一般都有桌面系统的,如果没有的话可以补充下载,gnome/mate都可以。

然后设置xrdp自动启动:

1
sudo systemctl enable xrdp

给同学创建好用户:

1
2
sudo useradd stu
sudo passwd stu

之后进入其目录之后创建桌面启动文件:

1
2
3
4
sudo cd /home/stu

echo "gnome-session" > .Xclients
chmod +x .Xclients

另外,需要使用软件要进行环境配置,不做赘述。

可能存在的一些问题

  1. 如果/etc/X11/Xwrapper.config文件不存在,则手动创建即可,内容如下:
1
2
allowed_users=anybody
needs_root_rights=no
  1. 防火墙问题

可以选择放行端口:

1
2
sudo firewall-cmd --add-port=114514/tcp --permanent
sudo firewall-cmd --reload

其实作为虚拟机也可以直接全关了(误):

1
2
3
sudo setenforce 0 #临时关闭

sudo sed -i 's/SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config #永久修改(最好不要)
  1. 虚拟机的桥接问题

有时候会有virbr0捣鬼。libvirt(KVM组件可能会有错误的IP残留)导致了物理上不相通的网络。另一个在比较头疼的是在校园网这种大型开放网络其实对桥接是很不友好的,可能会有验证限制,MAC地址限制等。

此时,虚拟机在运行hostname -I的时候可能会出现一个虚拟机内部的假地址,导致对外部通信失效。

这个情况下不同机器可能差别很大,建议自己和AI先解决一下。

这个时候有一些命令可能有效:

1
2
3
4
5
6
sudo killall dhclient #关闭所有dhclient
sudo ip addr flush dev eth0 #刷新eth0这个网卡
sudo dhclient -v eth0 #重新强制向外寻找IP

sudo ip link set virbr0 down
sudo brctl delbr virbr0

另:如果有神秘问题建议线看看宿主的ufw或者其他类似application.

开始连接

在虚拟机上面显示IP:

1
hostname -I

在windows上通过win+R输入mstsc,填写远程地址为显示的IP:端口,登录即可。

从零开始的DFT工程师! homepage

project homepage is here.