Featured image of post ubuntu远程桌面➕wireguard组内网

ubuntu远程桌面➕wireguard组内网

因为计网实验需要在ubuntu环境下进行,经常会用到wiresahrk抓包,手头没有X86机器,所以开了台虚拟机踩坑如下。

计网实验需要在ubuntu环境下运行,然后有时候需要用wireshark抓包,以及最重要的:我缺一台有GUI的X86机器。所以打算用远程桌面(remote desktop)连接ubuntu desktop虚拟机
但还因为没有公网ip,所以需要用同学有公网ip的服务器做wireguard中转,这样可以避免端口暴露在公网中,最大提升安全性。
但事情有些一波三折,听我细细道来…

安装wireguard组内网

因为某些原因,我们想要访问固定机器最安全的方式就是组内网,不暴露端口在公网中。经高中室友LPL的推荐,认识了wireguard这款神器,更妙的是LPL还有一个有公网IP的服务器可以做中转使用。LPL YYDS!

安装

1
2
3
4
5
6
sudo apt install wireguard
mkdir wireguardkey # 放置wireguard密钥
cd ./wireguardkey
wg genkey | tee privatekey | wg pubkey > publickey # 产生公钥与私钥
chmod 400 ./* # 将其设置为只有自己可读放置
sudo vim /etc/wireguard/wg0.conf

填入配置文件

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
[Interface]
PrivateKey = 自己私钥
ListenPort = 自己端口  # 可不选
Address = 10.0.0.8/32 # 自己的地址,我选的是10.0.0.8,设置成32即可

# 配置服务器端
[Peer]
PublicKey = 服务器公钥
Endpoint = 服务器wireguard端口
AllowedIPs = 10.0.0.0/24   # 前缀是10.0.0的ip都走wireguard
PersistentKeepalive = 18  # 保活,因为自己没有公网ip

然后设置启动

1
2
3
4
5
6
wg-quick up wg0  # 快速启动
wg show  # 查看状态
sudo systemctl enable wg-quick@wg0.service  # 设置成开机启动
sudo systemctl daemon-reload  
sudo systemctl start wg-quick@wg0 # 用systemd启动
systemctl status wg-quick@wg0   # 查看状态

如果想删除

1
2
3
4
5
sudo systemctl stop wg-quick@wg0  # 停止服务
sudo systemctl disable wg-quick@wg0.service  # 取消开机启动
sudo rm -i /etc/systemd/system/wg-quick@wg0* # 删除配置文件
sudo systemctl daemon-reload 
sudo systemctl reset-failed # 重启

虚拟机创建

首先是在mobaXterm下创建虚拟机,在有virt-manager的服务器下输入

1
virt-manager

便可弹出virt-manager服务器管理界面,点击File-New Virtual Machine,选择镜像文件后分配内存、CPU数与卷即可。在ubuntu系统初始化的过程里,我们最好选择安装整体.

XRDP 的远程桌面(卡顿严重并不推荐)

ubuntu18.04与20.04只原生支持VNC,所以如果要用remote desktop进行远程桌面的话需要通过XRDP来设置,但经过测试这种解决方案卡顿极为严重。强烈不推荐使用,只适合应急使用。

temrinal中输入

1
2
3
4
sudo apt install xrdp
sudo ufw allow 3389/tcp
sudo systemctl start  xrdp
sudo apt-get install xorgxrdp-hwe-18.04  # 很重要,18.04必须安装这个,否则黑屏

这样折腾完已经基本可以了,但在远程连接时仍然会弹出设置colorful device等,若处理不好很容易连接断开,故我们让其不再弹出这些设置。
一下内容来博客

1
sudo vim /etc/polkit-1/localauthority/50-local.d/45-allow-colord.pkla

输入以下内容

1
2
3
4
5
6
[Allow Colord all Users]
Identity=unix-user:*
Action=org.freedesktop.color-manager.create-device;org.freedesktop.color-manager.create-profile;org.freedesktop.color-manager.delete-device;org.freedesktop.color-manager.delete-profile;org.freedesktop.color-manager.modify-device;org.freedesktop.color-manager.modify-profile
ResultAny=no
ResultInactive=no
ResultActive=yes

正如你所视,这种方法又麻烦又卡,XRDP到底是什么垃圾~

22.04自带的RDP远程桌面(流畅且推荐)

ubuntu22.04开始加入了对微软RDP的原生支持,在设置-共享-远程桌面中打开即可,可以参考这篇帖子。需要注意的是,这种方法需要移除XRDP包并且reboot,否则两者会打架(这又双叒叕要感谢LPL哥哥帮我看log找问题了,LPL YYDS!)。
远程桌面打开位置 具体如下,注意可以设置与登录密码不同的远程桌面访问密码。而且初始是就会设置成不同的密码,记得修改或者查看
在设置完后,temrinal中输入

1
2
3
systemctl --user enable gnome-remote-desktop.service
systemctl --user start gnome-remote-desktop.service
sudo lsof -i:3389   # 检查是否用进程在监听3389

如果输出如下内容

1
2
COMMAND    PID USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
gnome-rem 3585 guan    8u  IPv6  40498      0t0  TCP *:ms-wbt-server (LISTEN)

证明服务成功启动,3389端口已经在被监听期待您的到来 :)

注意事项

需要注意的是:XRDP要想使用,必须本地用户注销,同时刻只有一个人能用GUI。而RDP与之相反,RDP要想登入则必须本地已经登入。所以RDP使用时若要reboot的话需要重新去virt-manager等地登陆GUI界面。这是其一个小小的不方便之处。但谁闲着没事儿天天reboot机器呢(除了我

comments powered by Disqus
Built with Hugo
主题 StackJimmy 设计