最近在参加阿里云的云开发校园合伙人的活动,用到了阿里云的Cloud IDE,发现挺好玩的。

以下折腾的内容均在阿里云校园钉钉群里闲聊过,仅供大家学习,别恶意利用喔

只能用来学习喔

下面我折腾的内容会随着阿里云的修复而失效

进入Cloud IDE,使用sudo su获取root权限

虚拟化类型

查看下是否是docker

systemd-detect-virt

返回为

docker

但用

$ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
admin         1      0  0 Aug06 ?        00:00:00 /bin/bash /usr/sbin/ecoboost-cloudide
admin        23      1  0 Aug06 ?        00:00:00 /bin/bash /usr/sbin/ecoboost-cloudide
admin        24      1  0 Aug06 ?        00:00:00 tee /home/admin/ecoboost-cloudide/logs/run.log
admin        94     23  0 Aug06 ?        00:00:42 node /home/admin/ecoboost-cloudide/ecoboost-cloudide/dist-node/server.js
admin       113     94  0 11:04 ?        00:00:00 /home/admin/.tnvm/versions/node/v10.15.1/bin/node /home/admin/ecoboost-cloudide/ecoboost-cloudid
admin       247     94  0 11:04 pts/0    00:00:00 /bin/sh -l
root        329    247  0 11:09 pts/0    00:00:00 sudo su
root        330    329  0 11:09 pts/0    00:00:00 su
root        331    330  0 11:09 pts/0    00:00:00 bash
root        387    331  0 11:20 pts/0    00:00:00 ps -ef

和常见的容器不一样,ecoboost在网上搜不到有效的信息,大概是阿里云的自研容器架构了。
本人小白一个,等大大测试确认

基础信息

试试用秋水大大的脚本:

wget -qO- bench.sh | bash

看起来母鸡内默认开了BBR

----------------------------------------------------------------------
 CPU Model             : Intel(R) Xeon(R) Platinum 8269CY CPU @ 2.50GHz
 CPU Cores             : 5
 CPU Frequency         : 2499.998 MHz
 CPU Cache             : 16384 KB
 Total Disk            : 267.1 GB (20.3 GB Used)
 Total Mem             : 10704 MB (362 MB Used)
 Total Swap            : 0 MB (0 MB Used)
 System uptime         : 2 days, 0 hour 40 min
 Load average          : 0.00, 0.00, 0.00
 OS                    : Ubuntu 18.04.4 LTS
 Arch                  : x86_64 (64 Bit)
 Kernel                : 4.19.34-5f5723189
 TCP CC                : bbr
 Virtualization        : KVM
 Organization          : AS37963 Hangzhou Alibaba Advertising Co.,Ltd.
 Location              : Beijing / CN
 Region                : Beijing
----------------------------------------------------------------------
 I/O Speed(1st run)    : 546 MB/s
 I/O Speed(2nd run)    : 560 MB/s
 I/O Speed(3rd run)    : 447 MB/s
 Average I/O speed     : 517.7 MB/s
----------------------------------------------------------------------
 Node Name        Upload Speed      Download Speed      Latency     
 Speedtest.net    103.59 Mbps       963.07 Mbps         16.10 ms    
 Beijing    CU    103.65 Mbps       1033.18 Mbps        34.26 ms    
 Shanghai   CT    102.96 Mbps       657.46 Mbps         9.99 ms     
 Shanghai   CU    103.67 Mbps       152.95 Mbps         9.09 ms     
 Guangzhou  CT    33.60 Mbps        469.66 Mbps         28.26 ms    
 Guangzhou  CU    104.01 Mbps       766.65 Mbps         25.23 ms    
 Shenzhen   CU    102.93 Mbps       878.58 Mbps         28.00 ms    
 Shenzhen   CM    103.66 Mbps       743.21 Mbps         28.88 ms    
 Hongkong   CN    105.85 Mbps       511.56 Mbps         62.49 ms    
 Singapore  SG    112.67 Mbps       594.95 Mbps         313.00 ms  

speedtest测速

使用speedtest官方测速脚本:

sudo apt-get install gnupg1 apt-transport-https dirmngr
export INSTALL_KEY=379CE192D401AB61
export DEB_DISTRO=$(lsb_release -sc)
sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys $INSTALL_KEY
echo "deb https://ookla.bintray.com/debian ${DEB_DISTRO} main" | sudo tee  /etc/apt/sources.list.d/speedtest.list
sudo apt-get update
sudo apt-get install speedtest

看看服务器带宽

$speedtest

   Speedtest by Ookla

[error] Error: [11] Cannot read: Resource temporarily unavailable
     Server: Henan CMCC 5G - Zhengzhou (id = 26331)
        ISP: Hangzhou Alibaba Advertising Co.,Ltd.
    Latency:    24.56 ms   (0.05 ms jitter)
   Download:   863.01 Mbps (data used: 1.1 GB)                               
     Upload:   104.71 Mbps (data used: 162.9 MB)                               
Packet Loss: Not available.
 Result URL: https://www.speedtest.net/result/c/40a57cdd-31bf-4845-8010-6ef1cf346307

这带宽够给力。

安装使用宝塔

我更习惯用appnode,只不过appnode不能在ubuntu完美使用
宝塔可以正常安装,内部预设的环境也不影响宝塔的安装:
直接用curl ip.sb获得的ip访问是无法访问的,需要使用预览进行端口映射:
开端口
在2处输入端口并回车后,会提示:端口 8888 映射成功,是否立即访问?
点击访问即可。
然后在域名处加端口和后缀就行了。
访问宝塔
大家眼尖的可以看到,宝塔要求的是加端口8888,但在这里是没加端口的
我试试通过获取a4d1cfa2-1b8e-4506-aeaf-5c50a95cd7a4-8888.xide.aliyun.com的ip:120.26.46.180
加后缀直接访问试试
ip直接访问
看起来不行
因此可以确定这里用的是类似nginx反代(顺便加了个https)

宝塔跑个分看看:
宝塔跑分
宝塔排行
说起来这是我第一台在跑分进入宝塔1万排名的机器了。

内网穿透

我试过zerotier,在zerotier后台能看到cloudide上的zerotier正常运行,分配了内网ip,但在外部安装了zerotier的机器始终无法和cloudide的机器进行互通,大概是屏蔽了UDP通信吧。
理论上来说frp使用的是tcp通信,用混淆插件后可以伪装成web流量,只不过我也不缺服务器只缺大带宽,用frp的话吃sever服务器的带宽,用处不大,因此懒得试了。

我还是试了下frp,可以内网穿透
frp内网穿透
通过frp的服务器连接到了cloudide的内网服务器。

tcp over http

不清楚能不能绕过阿里的内部审查,我对tcp over http也不太熟悉,有兴趣的大佬可以试试。
看来阿里云的预览就是nginx反代
我用的是jpillora/chisel项目

服务端

稍微改改tcp over http的思路,把cloudide的服务器作为外网的服务器来看。
安装好sshd,设置root密码

apt-get install openssh-server
passwd

修改下配置文件,允许root用户登录

nano /etc/ssh/sshd_config

执行

chisel server --port 8000 --auth userabc:pass123

各参数的含义是:

启动 chisel 服务端,在 80 端口进行监听,指定客户端连接所需的用户名和密码

客户端

这个客户端是可以放在内网的,这和frp有本质上的区别
本来就是给内网机器用的
执行:

chisel client --auth userabc:pass123 https://e04bf318-8fec-4a30-8bd6-f1b7e39f92ce-8000.xide.aliyun.com 3344::22

如果你的内网机器需要使用http代理才能连接互联网,可以使用

chisel client --proxy http://proxy.example.com:80 --auth userabc:pass123 https://e04bf318-8fec-4a30-8bd6-f1b7e39f92ce-8000.xide.aliyun.com 3344::22

解释参数:

--proxy 选项指定 chisel 客户端通过 HTTP 代理 http://proxy.example.com:80 连接外网机器的 chisel 服务端;

--auth 选项指定 chisel 客户端连接服务端所需的用户名和密码;

chisel 服务端监听地址为 https://e04bf318-8fec-4a30-8bd6-f1b7e39f92ce-8000.xide.aliyun.com;如果浏览器直接访问会提示Not found

chisel 客户端监听地址为 :3344,并将流量转发至 chisel 服务端的 22 端口。

此时访问 chisel 客户端监听的地址就会访问 chisel 服务端的 22 端口:

如下所示:
tcp over http

还可以将远端端口 22 替换成了 socks,此时cloudide作为socks代理服务器的出口。

因此可以确定,阿里云的cloudide预览就是nginx反代。

这样的话,由于chisel是支持在Windows上运行的,因此完全可以通过chisel穿透访问阿里云cloudide这台vps,在这台vps上部署游戏游戏服务器、其他环境来好好利用这台机器强大的性能。
其实还有udp over tcp项目,感觉像无限套娃。算了,这个是真没兴趣了。


重点来了,目前大热的某软件也是利用的CDN的ws,也就是说,cloudide的vps是可以作为中转的。
我不敢试了,有胆大的可以自己试试,很简单,在vps内部署个nginx反代就行了


PT

这么大的带宽不用来挂PT简直是浪费
没法端口映射出去,ide关闭网页过会docker就会冻结,挂PT没啥用,倒是用来下载东西然后中转不错,毕竟带宽的QOS肯定比家宽高。
给你们个思路
安装nginx,安装qb,把qb下载路径指向nginx根目录,下载完成后直接从nginx - web拖过来
阿里这个大概率是多线的服务器,如果你家是广电、鹏博士这类宽带的用这个方法可以用速度很快的方法把东西下下来。

systemctl

想尽办法都没法用systemctl,最后还是用screen了事。

小插曲

我在8号(也就是星期六)的早上在钉钉群提出想让ide可以通过内网连接到阿里数据库(其实是我想连接到我自己的ecs)
在晚上9点安装宝塔的时候发现多了一行内网ip的提示,而在7号的时候是没这行提示的(宝塔也没更新)
也就是说阿里云的大佬一下午就在Cloud IDE里实装了内网ip了。
可惜我没保存前一天的宝塔配置信息的截图
阿里云大佬们辛苦了


参考:
SSH over HTTP
如何探测虚拟环境是物理机、虚拟机还是容器?

最后修改:2020 年 08 月 09 日
如果觉得我的文章对你有用,请随意赞赏