疫情之下,遠端辦公之利用公司vpn+nginx tcp轉發,使用windows遠端桌面連線公司pc
前言
說下背景吧,現在疫情很嚴重,所以呢,公司讓我們遠端辦公。公司給我們開了vpn,利用vpn,我們可以連線到公司的內網伺服器上,但是,不能連線到自己的工作pc上,不知道其他公司有沒有這個問題,反正我們有這個問題。
現在一般來說,連線到公司裡的個人pc上,有下面幾種方式:
- teamviewer
- 向日葵
上面兩種都是內網直接穿透的。但我這邊感覺還是有點卡。
在我的琢磨下,有了下面的第三種方式:
因為開了vpn時,家裡pc --》 公司伺服器 是通的;公司伺服器上--》工作pc,也是通的。
假設我想通過家裡pc,通過windows遠端桌面的方式去連線工作pc,要怎麼做?
正常遠端桌面時,是通過下面的方式:
圖裡的ip,就是我工作pc的ip,但是很遺憾,我家裡pc和工作pc網路不通。
在使用遠端桌面進行連線時,
此時會進行如下的網路通訊(向要遠端的主機的3389埠發起通訊):
但是我們也看到了,ip不通,3389埠根本上不去,怎麼辦呢?
解決方案
從前面我們知道,站在家裡pc的角度,工作pc的ip是不通的,但是公司裡的內網伺服器卻是通的。
而且,公司內網伺服器,到工作pc的網路也是通的。
那麼,我們的辦法就是,在內網伺服器上,安裝一個代理軟體,對3389埠進行監聽,同時,將該埠的流量,轉發到 工作pc的3389埠上。不就解決了嗎?
最後呢,我用來完成這個功能的軟體是nginx,nginx可以進行tcp流量轉發。
可參考:
https://blog.csdn.net/yjyd54430/article/details/84888914
操作步驟
- nginx的該項功能,需要啟用stream模組,操作步驟可以參考:
編譯nginx平滑新增stream模組
配置nginx.conf
參考 : https://blog.csdn.net/yjyd54430/article/details/84888914
我這邊給一下我的配置檔案的大概樣子(注意,stream和http之類是平行的):
http { ... } stream { upstream 482{ hash $remote_addr consistent; server 10.15.4.82:3389 max_fails=3 fail_timeout=30s; } server { listen 9981 so_keepalive=on; proxy_pass 482; } upstream 472{ hash $remote_addr consistent; server 10.15.4.72:3389 max_fails=3 fail_timeout=30s; } server { listen 9982 so_keepalive=on; proxy_pass 472; } }
值得注意的是,大家看到我的配置檔案裡配了兩個埠,9981,9982,分別轉發流量到不同的工作pc。
因為我這是給組裡的小夥伴配置的,實際不止這兩個,配了大概十多個埠吧,每個小夥伴一個。
遠端桌面連線的時候,直接就使用(開啟遠端桌面:win + R輸入mstsc):
展示下效果吧:
大家看,我已經連線進去了,速度嘛,比向日葵快,大家有興趣,可以試試。
通訊過程中,抓包如下:
總結
利用技術解決生活中的問題,是不是還比較有意思呢,哈哈。大家有疑問請和我聯絡