mportant; color: rgb(61, 61, 61); line-height: 30px;">因为公司运维需要,需要远程对机房运维人员进行运维支持(机房运维计算机水平有限)。需要一款支持远程服务器的显示器及键盘,并且能够穿透内外,在互联网远程控制内网服务器。经过查询筛选,目前已知两款硬件设备满足要求,一款是大家都已经熟知的向日葵控控,另外一款就是淘宝云手科技出品的IPKVM。
首选看向日葵的控控A2,毕竟牌子响亮,京东采购2个以后进行测试,结果发现不是那么好用。主要问题在于,我们的服务器都是vga接口的,而向日葵控控只有HDMI接口,然后经过客服的建议,采购了他们测试过的2款VGA转HDMI转接线。结果发现都无法显示VGA图像。
然后就在淘宝查询IPKVM,发现一款叫云手IPKVM的设备,自带VGA接口,理论上应该是满足我的要求的。PS:云手IPKVM介绍中有虚拟光驱及无线网卡等功能,经过咨询客服,得到的答复是目前只有标准版。其他的功能都是定制开发的。
既然这款云手IPKVM从外观上满足我的要求,那就买过来先测试。
到手以后测试发现内网使用VNC 进行连接。测试功能正常,不过客服说的不支持1080P分辨率,我测试是可以支持的。就是在开机BIOS界面会闪屏几次,不过这个属于正常。本来以为这个KVM是支持内网透传外网访问的。结果测试以后好像不支持。最后今后台发现有一个ngrok的服务,不知道用来干嘛的,百度了一下,是内网穿透隧道。瞬间感觉惊喜感满满,随后咨询客服要了ngrok的教程。客服给的是使用的ngrok.cc网站的免费ngrok服务。测试了下可以使用,不过因为是免费的,带宽限制,整个画面和操作感觉卡顿的厉害。随后想到是否可以自己搭建ngrok服务器。然后苦逼的ngrok搭建历程就开始了。
本来打算使用docker搭建的,测试了好几个,发现可恶的greatwall屏蔽了github,导致github访问过慢或者直接访问不到,而ngrok时使用go语言编写的,里面引用了很多github的代码。所以在docker 的build过程中基本都是失败。
随后想到了翻墙,开始搭建V2RAY客户端,结果搭建成功以后,发现在build的时候,git过程中会报TLS错误。
V2RAY linux客户端搭建教程如下:Linux使用V2ray客户端带WEB GUI部署教程 – HI,Fenei!
然后就开始逛github,gitee。无意中发现了一款一键安装脚本。
【ngrok一键安装脚本】https://gitee.com/cocean001/ngrok_install
脚本要求在ubuntu或者deibian环境中运行。然后就装了一台ubuntu20.04的服务器。开始安装。脚本做的确实特别好,不过还是遇到了github无法访问的问题。刚好在前两天逛头条的时候有人发了一款github地址获取软件。随进行下载使用。通过这个软件来获取github访问最快的IP地址,然后复制获取到的hosts文件到ubuntu服务器,然后再运行上面的一键安装脚本。
【github地址获取软件】 https://github.com/aardio/Ghips
github的访问问题解决了,但是有遇到了新的问题,ngrok在编译的时候,最后一步老是出错。提示错误如下:
经过查询资料并查看github代码发现,是由于新版本的mattn/go-runewidth代码种嵌套引用了rivo/uniseg代码造成的,查询mattn/go-runewidth代码版本发现,在v0.0.6版本之前不存在引用问题,所以修改了安装脚本,将在安装脚本编译前,替换ngrok源码中的
git clone --branch v0.0.6 https://ghproxy.com/https://github.com/mattn/go-runewidth.git
#编译服务端 echo "[ * ] 正在编译ngrokd服务端" bar_start_from 0 bar_hold_at 95 "正在编译服务端" & ### 添加如下代码 cd /usr/local/ngrok/src/github.com/mattn/ && rm -rf go-runewidth git clone --branch v0.0.6 https://ghproxy.com/https://github.com/mattn/go-runewidth.git ### cd /usr/local/ngrok make clean >/dev/null make release-server >/dev/null bar_continue bar_hold_at 100 "done!" green "[ √ ] ngrokd服务端已编译成功"
然后再次运行脚本进行安装
修改后的全部代码如下:
云手IPKVM使用ngrok的配置