需求
因为实验室小服务器没有公网ip,所以只有在学校局域网中才能访问和使用服务器。寒假又刚好遇上新型流感病毒,不能去学校,但是工作不能落下。幸好回家前做了内网映射,在家也可以使用实验室服务器,顺便还解决了 Rstudio server的使用问题。
前提条件
- 有个有公网ip的服务器,国内的例如阿里云、疼腾讯云等
- 如果要使用Rstudio server,则前提在本地服务器上已经开启了服务,本文不讲
使用到的软件
frp https://github.com/fatedier/frp
模式如下图,其中bind port 和 server port 相同,映射关系则为 local_ip:local_port <==> remote_ip:remote_port 。所有的端口都需要放入放行白名单。
通过 ssh 访问公司内网机器
根据对应的操作系统及架构,从releases 页面下载最新版本的程序。
将 frps 及 frps.ini 放到具有公网 IP 的机器上。
将 frpc 及 frpc.ini 放到处于内网环境的机器上。
修改 frps.ini 文件,这里使用了最简化的配置:
[common]
bind_port = 7000
- 启动 frps:
./frps -c ./frps.ini
- 修改 frpc.ini 文件,假设 frps 所在服务器的公网 IP 为 x.x.x.x;
[common]
server_addr = x.x.x.x
server_port = 7000
[ssh]
type = tcp
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000
- 启动 frpc:
./frpc -c ./frpc.ini
所有完成后,访问内网机器就可以通过各种软件访问 x.x.x.x:6000 来完成。
Rstudio server 端口转发
Rstudio server 默认服务端口为8787,开始以为端口类型监听类型为 http,因为平时都是通过web在使用,后来发现也是tcp类型。所以和上面的方法一样就行,直接在frpc.ini 文件中追加如下内容
[Rstudio_server]
type = tcp
local_ip = 127.0.0.1
local_port = 8787
remote_port = 8787
开启服务后,在浏览器中输入 x.x.x.x:8787 就能打开Rstudio了。