從外網訪問內網伺服器

2021-07-31 02:47:10 字數 4430 閱讀 9100

★★★★★fbi warning★★★★

以下操作相當於給內網的防火牆上開了個洞,會給整個內網帶來極其嚴重的安全隱患!

為避免產生法律問題,請在操作前務必向網路管理員諮詢您的操作許可權!

★★★★★★★★★★★★★★★

《基於vps伺服器的內網****方案》

前言

假設我們在內網有乙個自己的電腦a(執行win7),希望在外網家中用另一台電腦b(執行win7)訪問內網資源,或偽裝為內網電腦訪問外網資源。

由於內網電腦沒有公網ip,所以外網電腦無法直接向內網電腦發起連線。為實現我們的目標,需要從內網電腦主動向乙個公網伺服器發起乙個連線,外網電腦通過這個伺服器使用這一連線,再通過內網電腦進行訪問。

現在已有許多商業內網**伺服器可以實現此功能,比如花生殼、步輕雲、teamview、gotomycloud等等。但天下沒有免費的午餐,要使用第三方的公網伺服器就必須為第三方付費,並且這些伺服器都有各種各樣的限制。此外,由於資料報會流經第三方,因此對資料安全也是一大隱患

隨著個人vps伺服器的普及,越來越多的朋友想用自己的vps伺服器作為內網**,這樣既安全又免費。本套方案實現了這一目標,並具有以下無可替代的優勢:

如果您的方案在滿足上面四個條件的基礎上,比我的方案更簡單,敬請指教!下文將對配置方案作詳細的介紹。

先決條件

1. a機上可訪問外網並且可以安裝虛擬機器。

2. 擁有乙個外網的vps伺服器s(執行debian 7.x)。推薦購買bandwagon的廉價vps伺服器(

),一年100多元。

一、建立從內網機到外網伺服器的反向隧道

1.1. 在a機上用虛擬機器執行ubuntu server。首先安裝virtualbox虛擬機器。

最新版的virtualbox不用配置網路即可從本地可用的網路連線上網。

在virtualbox中安裝ubuntu server,全部預設設定即可。

1.2. 由a機發起,建立從a到s的反向隧道連線,命令格式:

ssh -c -r :localhost:22 -p @

執行此命令後,可能需要輸入suser在s機的密碼。反向隧道連線建立成功以後,即遠端登入到s,接下來的操作都是將在s上執行。命令舉例:

ssh -c -r 876:localhost:22 -p 26131 [email protected]

1.3. 建立從s到a的ssh動態**,可視為從s到a的socks**服務,命令格式:

ssh -c -f -n -d -p @localhost

執行此命令後,可能需要輸入luser在a機的密碼。至此,我們已將a作為s的socks**伺服器。命令舉例:

ssh -c -f -n -d 1080 -p 876 devymex@localhost

1.4. 用curl命令測試連線,命令格式:

curl --socks4 localhost:

此命令若執行成功,url所指向的內容會列印在螢幕上。一般以簡短的html頁面為佳,太大的資源會很慢。命令舉例:

如果未安裝curl,需先安裝:

apt-get install curl

若未找到curl包,需先更新apt-get:

apt-get update

二、在伺服器端用delegate實現二級http**

2.1.如果沒有g++需要先安裝g++,命令:

apt-get install g++

cd ~

wget

tar -xzf delegate9.9.13.tar.gz

tar -xzf:/home/delegate9.9.13子目錄並解壓縮到此目錄中。

2.3. 編譯delegate,命令:

cd ~/delegate9.9.13

make

make命令必須在delegate解壓後的目錄中執行。如果未安裝make,需先安裝:

apt-get install make

make執行的過程較慢,其間會提示輸入電子郵箱,任意輸入,然後按y即可。

2.4. 啟動delegate,命令格式:

命令舉例:

2.5. 用curl命令測試連線,命令格式:

curl -x localhost:

命令舉例:

三、在伺服器端建立埠**

現在s機上已經有本地的http**了,接下來要將

3.1 如有必要,先清除已有nat規則,命令:

iptables -t nat -f

iptables是乙個非常強大的防火牆/路由程式,用法也比較複雜,具體可參考相關文件,此處不做贅述。

3.2 建立http協議的埠**,命令格式:

iptables -t nat -a output -p tcp --dport 80 -j redirect --to-ports

命令執行後,由s機發出的http請求(80埠)都將被**到hport埠上。

命令舉例:

iptables -t nat -a output -p tcp --dport 80 -j redirect --to-ports 8118

3.3. 用curl命令測試連線,命令格式:

curl

命令舉例:

四、在外網機通過ssh隧道連線到外網伺服器

1. 在b機安裝bitvise ssh客戶端軟體

2. 配置bitvise ssh客戶端的login頁

host:s機的伺服器ip;port:ssh服務埠;username:登入使用者名稱;initial method:password;password:登入密碼。

3. 配置bitvise ssh客戶端的services頁

4. 在b機安裝privoxy。

5. 配置privoxy目錄下的config.txt檔案,並執行privoxy:

listen-address  0.0.0.0:1984

forward-socks5 / 127.0.0.1:1080 .

6. b機上的任意程式,以localhost:1984為http**,即可通過a機訪問內網資源。

備註

1. kill掉delegate程序即可終止s機上的http**服務,刪除delegate的目錄即可完全解除安裝delegate。

2. 執行如下命令可取消80埠資料報的**:

iptables -t nat -f

3. 斷開從a機到s機的連線,即可終止s機上的socks**服務。

4. 檢視偵聽指定埠的程序id,命令格式:

fuser -un tcp

從外網訪問內網伺服器的方法

一 確保頁面在內網可正常訪問 比如,tomcat預設頁面是 http localhost 8080 二 確認內網ip和外網ip 1 windows系統的內網ip查詢辦法 a 按下 win r 快捷鍵,開啟 執行 視窗 b 在 執行 視窗裡輸入 cmd 並按enter鍵,開啟命令 command 視窗...

外網如何訪問內網伺服器

如何實現外網訪問內網?路由器如何配置?老闆想在家裡實現遠端訪問伺服器,公司伺服器ip192.168.1.8 dns 192.168.1.8 最佳答案 路由器上需要設定埠對映,將你伺服器上的3389埠對映到路由器上,這樣,你老闆就可以通過外網訪問3389埠來對伺服器進行遠端桌面控制。不過為了安全,你可...

外網訪問伺服器內網的資料

客戶公司給了他們自己的伺服器 外網ip還有跟外網在乙個網段的內網ip 我也不清楚這個是什麼服務,目前沒有琢磨明白。但是客戶給出了這樣的組合,意思肯定是,資料都放在內網伺服器上。對外的介面和程式服務都放在外網伺服器上面。問題來了,資料都在內網上,我用自己的開發機想要看資料咋辦捏,最簡單的方法,遠端桌面...