疫情之下,遠程辦公之利用公司virtual--private--n+nginx tcp轉發,使用windows遠程桌面連接公司pc


前言

說下背景吧,現在疫情很嚴重,所以呢,公司讓我們遠程辦公。公司給我們開了vpn,利用vpn,我們可以連接到公司的內網服務器上,但是,不能連接到自己的工作pc上,不知道其他公司有沒有這個問題,反正我們有這個問題。

現在一般來說,連接到公司里的個人pc上,有下面幾種方式:

  1. teamviewer
  2. 向日葵

上面兩種都是內網直接穿透的。但我這邊感覺還是有點卡。

在我的琢磨下,有了下面的第三種方式:

因為開了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

操作步驟

  1. nginx的該項功能,需要啟用stream模塊,操作步驟可以參考:

編譯nginx平滑添加stream模塊

  1. 配置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):

展示下效果吧:

大家看,我已經連接進去了,速度嘛,比向日葵快,大家有興趣,可以試試。

通信過程中,抓包如下:

總結

利用技術解決生活中的問題,是不是還比較有意思呢,哈哈。大家有疑問請和我聯系。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM