需求
因?yàn)閷?shí)驗(yàn)室小服務(wù)器沒有公網(wǎng)ip,所以只有在學(xué)校局域網(wǎng)中才能訪問和使用服務(wù)器。寒假又剛好遇上新型流感病毒,不能去學(xué)校,但是工作不能落下。幸好回家前做了內(nèi)網(wǎng)映射,在家也可以使用實(shí)驗(yàn)室服務(wù)器,順便還解決了 Rstudio server的使用問題。
前提條件
- 有個(gè)有公網(wǎng)ip的服務(wù)器,國內(nèi)的例如阿里云、疼騰訊云等
- 如果要使用Rstudio server,則前提在本地服務(wù)器上已經(jīng)開啟了服務(wù),本文不講
使用到的軟件
frp https://github.com/fatedier/frp
模式如下圖,其中bind port 和 server port 相同,映射關(guān)系則為 local_ip:local_port <==> remote_ip:remote_port 。所有的端口都需要放入放行白名單。

通過 ssh 訪問學(xué)校/公司內(nèi)網(wǎng)機(jī)器
根據(jù)對(duì)應(yīng)的操作系統(tǒng)及架構(gòu),從releases 頁面下載最新版本的程序。
將 frps 及 frps.ini 放到具有公網(wǎng) IP 的機(jī)器上。
將 frpc 及 frpc.ini 放到處于內(nèi)網(wǎng)環(huán)境的機(jī)器上。
修改 frps.ini 文件,這里使用了最簡化的配置:
[common]
bind_port = 7000
- 啟動(dòng) frps:
./frps -c ./frps.ini
- 修改 frpc.ini 文件,假設(shè) frps 所在服務(wù)器的公網(wǎng) 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
- 啟動(dòng) frpc:
./frpc -c ./frpc.ini
所有完成后,訪問內(nèi)網(wǎng)機(jī)器就可以通過各種軟件訪問 x.x.x.x:6000 來完成。
Rstudio server 端口轉(zhuǎn)發(fā)
Rstudio server 默認(rèn)服務(wù)端口為8787,開始以為端口類型監(jiān)聽類型為 http,因?yàn)槠綍r(shí)都是通過web在使用,后來發(fā)現(xiàn)也是tcp類型。所以和上面的方法一樣就行,直接在frpc.ini 文件中追加如下內(nèi)容
[Rstudio_server]
type = tcp
local_ip = 127.0.0.1
local_port = 8787
remote_port = 8787
開啟服務(wù)后,在瀏覽器中輸入 x.x.x.x:8787 就能打開Rstudio了。