1. 程式人生 > >阿里雲伺服器實現 frp 內網穿透

阿里雲伺服器實現 frp 內網穿透

前言

前幾天在一臺具有公網IP的 vultr 雲伺服器上實現了 frp 內網穿透(參考連結),可以從寢室 ssh 登入到教研室的伺服器,但是由於 vultr 的雲伺服器位於國外的節點,連線速度太慢了,導致連線 ssh 登入的體驗很差。今天又弄了一臺阿里雲的雲伺服器 ECS,所以現在來介紹如何在阿里雲上實現 frp 內網穿透。

配置 ssh 訪問內網機器

之前使用的 vultr 的VPS是 CentOS 系統的,這次阿里雲伺服器是 Ubuntu 的作業系統,但其實不同作業系統的雲伺服器在使用 frp 時操作都是一樣的,就是下載配置執行。可能有區別的地方就是防火牆相關的配置,不同雲服務廠商的映象不同可能也有一些差別。下面來說明在阿里雲的公網伺服器的 frp 實現步驟:

下載

在阿里雲的公網伺服器和內網機器上都要下載安裝包並解壓:

$ wget https://github.com/fatedier/frp/releases/download/v0.21.0/frp_0.21.0_linux_amd64.tar.gz
$ tar -xzvf frp_0.21.0_linux_amd64.tar.gz

解壓之後的資料夾中既包含了服務端的檔案又包括客戶端的檔案,所以可以分別在兩個機器上刪除掉不必要的檔案,也可以不刪,都沒有影響。強迫症還是來刪一下,在解壓後的資料夾中:

  • 在公網伺服器上刪除客戶端相關的檔案,只保留一下兩個檔案:

    frps  frps.ini
    
  • 在內網機器上刪除服務端相關的檔案,只保留以下兩個檔案:

    frpc   frpc.ini
    

配置

就是需要修改配置檔案 frps.inifrpc.ini

  • 修改公網伺服器上的服務端配置檔案 frps.ini,如下:

    [common]
    bind_port = 7000  #frp服務端埠(必須)
    
  • 修改內網目標主機的客戶端配置檔案 frpc.ini,如下:

    [common]
    server_addr = xxx.xxx.xxx.xxx   #frp服務端地址,必須是公網ip或者域名,這裡假設為xxx.xxx.xxx.xxx
    server_port = 7000      #frp服務端埠,即填寫服務端配置中的 bind_port
    
    [ssh]
    type = tcp              #連線型別,填tcp或udp
    local_ip = 127.0.0.1    #填127.0.0.1或內網ip都可以
    local_port = 22         #需要轉發到的埠,ssh埠是22
    remote_port = 6000      #frp服務端的遠端監聽埠,即你訪問服務端的remote_port就相當於訪
                            #問客戶端的 local_port,如果填0則會隨機分配一個埠
    

執行

  • 在公網伺服器上執行服務端程式:

    $ nohup ./frps -c frps.ini &
    

    檢視 nohup.out 的資訊,success

    $ tail -f nohup.out
    2018/09/17 21:34:01 [I] [service.go:130] frps tcp listen on 0.0.0.0:7000
    2018/09/17 21:34:01 [I] [root.go:207] Start frps success
    2018/09/17 22:06:02 [I] [service.go:319] client login info: ip [125.71.229.32:60516] version [0.21.0] hostname [] os [linux] arch [amd64]
    2018/09/17 22:06:02 [I] [proxy.go:217] [7940291c148c2fca] [ssh] tcp proxy listen port [6000]
    2018/09/17 22:06:02 [I] [control.go:335] [7940291c148c2fca] new proxy [ssh] success
    
  • 在內網目標主機上執行客戶端程式:

    $ nohup ./frpc -c frpc.ini &
    

    檢視 nohup.out 的資訊,success

    $ tail -f nohup.out
    2018/09/17 22:42:22 [I] [proxy_manager.go:300] proxy removed: []
    2018/09/17 22:42:22 [I] [proxy_manager.go:310] proxy added: [ssh1]
    2018/09/17 22:42:22 [I] [proxy_manager.go:333] visitor removed: []
    2018/09/17 22:42:22 [I] [proxy_manager.go:342] visitor added: []
    2018/09/17 22:42:23 [I] [control.go:246] [0624b332c3465118] login to server success, get run id [0624b332c3465118], server udp port [0]
    2018/09/17 22:42:23 [I] [control.go:169] [0624b332c3465118] [ssh1] start proxy success
    

配置多個內網主機

錯誤的多客戶端配置

使用一臺阿里雲的公網伺服器,我們可以配置很多內網機器的 frp 內網穿透,公網伺服器上只需要按照上述的配置一次即可,但是內網機器的配置稍有不同,如果使用了一樣的配置則後新增的內網機器是無法連線上公網伺服器的。這裡假設另一臺內網機器2的 frpc.ini 配置如下,來說明會遇到的問題:

$ vi frpc.ini
[common]
server_addr = xxx.xxx.xxx.xxx  <==這裡還是按照上面的假設,公網伺服器的ip為xxx.xxx.xxx.xxx
server_port = 7000

[ssh]
type = tcp 
local_ip = 127.0.0.1
local_port = 22
remote_port = 6001     <==remote_port設定為另一個值

兩個內網主機的配置除了 remote_port 不一樣之外,都是一樣的。但是在內網機器2上執行 frpc 後,公網伺服器的 nohup.out 中會記錄一下的錯誤:

[W] [control.go:332] [280d36891a6ae0c7] new proxy [ssh] error: proxy name [ssh] is already in use

後來發現,frp 中是通過 [ssh] 這個名字來區分不同客戶端的,所以不同的客戶端要配置成不同的名字。

正確的多客戶端配置

內網機器1和內網機器2的配置應該區分如下:

內網機器1:
[ssh]                      <==不同點
type = tcp 
local_ip = 127.0.0.1
local_port = 22
remote_port = 6000         <==不同點

內網機器2:
[ssh1]                     <==不同點
type = tcp 
local_ip = 127.0.0.1
local_port = 22
remote_port = 6001         <==不同點

在兩個內網機器上分別執行 frpc 客戶端程式後,一般就可以通過以下的方法 ssh 登入:

內網機器1:
$ ssh -p 6000 [email protected]_addr

內網機器2:
$ ssh -p 6001 [email protected]_addr

以上引數中,server_addr是公網伺服器的公網ip;user_name1、user_name2 分別是內網機器1、2的使用者名稱,之後分別使用登入密碼就可以登入。

connection timed out 解決

但是有時候會發現按照以上的配置還是使 frp 的服務端與客戶端建立連線,在客戶端上會出現以下錯誤:

2018/09/17 22:02:23 [W] [control.go:113] login to server failed: dial tcp xxx.xxx.xxx.xxx:7000: connect: connection timed out
dial tcp xxx.xxx.xxx.xxx:7000: connect: connection timed out

仔細檢查了一下雲伺服器上面的防火牆設定,發現並沒有任何過濾規則,那應該不是防火牆的問題

# iptables -vnL
Chain INPUT (policy ACCEPT 46165 packets, 28M bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 42223 packets, 3001K bytes)
 pkts bytes target     prot opt in     out     source               destination 

然後又仔細想了一下我以前在做關於 OpenStack 的專案中也碰到了類似的問題,就是建立了雲實例,發現無法通過 ssh 來登入,就是因為 OpenStack 有安全組規則相關的設定。

想到了這裡就有一種熟悉的感覺,還是原來的配方,hahaha。。。

登入到阿里雲對應雲伺服器的管理控制檯,如下找到左上方的本例項安全組:

aliyun

然後點選右上角的配置規則:

再點選右上角的新增安全組規則:

aliyun

最後在新增安全組規則的介面新增相應的規則:

阿里雲

主要有兩個配置項,埠範圍和授權物件

  • 埠範圍就是你要開放的埠的範圍,需要將 server_portremote_port 都新增進去,可以分成兩條規則分別新增;
  • 授權物件是你要授權的物件,一般設為 0.0.0.0/0 表示允許所有IP的訪問。

以上就是針對阿里雲的雲伺服器的安全組設定,其他廠商如果有安全組規則也應該是類似的。

相關推薦

阿里伺服器實現 frp 穿透

前言 前幾天在一臺具有公網IP的 vultr 雲伺服器上實現了 frp 內網穿透(參考連結),可以從寢室 ssh 登入到教研室的伺服器,但是由於 vultr 的雲伺服器位於國外的節點,連線速度太慢了,導致連線 ssh 登入的體驗很差。今天又弄了一臺阿里雲的雲伺

frp穿透--------------------阿里linux+本地linux虛擬機器實現

為了實現外部主機能訪問區域網伺服器(私有ip),我選擇了用frp來做內網穿透,當然還可以用ngrok、花生殼等等。 frp frp 是一個可用於內網穿透的高效能的反向代理應用,支援 tcp, udp, http, https 協議 內網穿透講解:    

傻瓜式教學--win10 + frp + rdpwrap + 阿里伺服器 --實現win10 多使用者同時遠端登入

概述:   使用win10 專業版 + frp + RDPwrap + 阿里雲伺服器 的組合實現win10 多使用者同時遠端登入內網機。使用frp 做內網穿透,將內網機的指定埠暴露在外網,通過ip+port 來實現遠端登入。再使用rdpwrap 來破解win10 不能同時多使用者登入的問題。  

frp穿透實現寢室連線實驗室伺服器

材料: 一臺擁有公網IP的雲伺服器(騰訊雲主機最低配學生優惠120一年) 你需要遠端連線的伺服器(先安裝ssh) 一臺普通電腦(手機也行) 我使用的是frp,frp分frps和frpc分別執行在雲伺服器和你的伺服器上 點選上面的連結去release下載對應版本的檔案然後

frp 穿透實現 ssh 訪問主機

本文目的 frp 是一個可用於內網穿透的高效能的反向代理應用,支援 tcp, udp, http, https 協議。 本文將基於 frp 來實現內網穿透,從而實現從外網 ssh 登入內網主機,而不對 frp 其他的應用做過多的說明。 frp 的作用

【筆記】Nginx+Ngrok實現80埠伺服器+80埠穿透

安裝ngrok 安裝完畢後ngrok預設將伺服器的80端口占用。這時,需要修改啟動指令碼。 vim /etc/init.d/ngrokd 找到如下部分 nohup sudo ./bi

frp穿透搭建及使用

有些裝置要放在客戶的內網中,公網無法訪問,迫切需要一個能夠內網穿透的小工具,使得訪問內網的裝置就像訪問公網裝置一樣。frp就是這樣一個輕量級的小工具,用了大概一年,感覺既穩定又好用,值得推薦。 frp的搭建和配置並不麻煩,首先去frp的git上下載相應的安裝包: https://

阿里伺服器公網Ip外無法訪問

      擁有了自己的伺服器後,發現需要各種配置,之前應用公司的伺服器的時候,一般通過內網訪問,或者外網訪問時,很多配置其他人員都已經配置好了,但是現在在自己的伺服器上釋出自己的網站的時候,才發現事情並沒有自己想象的簡單(怪我太年輕啊┭┮﹏┭┮)。 好了,說一下我的問題,

frp穿透的原理

經過一段時間的使用,概況的總結下  內網穿透   讓內網的專案,也可以通過轉發 被外網訪問到   外網地址 +埠 www.ss.com埠預設80  ,即為www.ss.com 通過frp穿透時,內網127.0.0.1+埠/專案名 ,被

實現Holer 穿透

https://github.com/wisdom-projects/holer 去這裡下載一個holer工具 裡面有工具 解壓開啟 有個.bat  雙擊即可   https://download.csdn.net/download/qq_379963

樹莓派frp穿透及ss配置

樹莓派frp內網穿透及ss配置 一、伺服器端配置 伺服器型號:阿里雲輕量伺服器 系統引數:Centos 64 1、下載frp檔案 frp的Release檔名為:frp_0.22.0_linux_amd64 【注】伺服器和樹莓派frp檔案版本不同,伺服器端為amd64版,具體根據

開放一個FRP穿透服務

偶爾會用到內網穿透的服務支援,這裡自己在自己的伺服器上搭建了一個FRP內網穿透伺服器,FRP是一個開源的工具,支援WINDOWS,LINUX等作業系統,甚至支援ARM架構的設計,因此你可以在任何地方使用

基於frp穿透

場景 客戶端在內網,外網訪問不到其web服務。現在需要使該內網客戶端的web服務能被外網訪問。 下載 frp github releases 服務端 準備 服務端為公網IP,可以被外網訪問,且客戶端可以訪問到該服務端。 配置檔案 配置檔案frps.in

frp穿透

什麼是FRP? frp 是一個高效能的反向代理應用,可以幫助您輕鬆地進行內網穿透,對外網提供服務,支援 tcp, http, https 等協議型別,並且 web 服務支援根據域名進行路由轉發。 你需要掌握的知識: 首先你需要知道一些網路知識

NatApp:實現免費穿透

NatApp使用需知 NatApp免費內網穿透,需要支付寶實名認證(筆者於2018年12月25日操作); NatApp免費內網穿透,會不定時強制更換域名/埠; NatApp免費內網穿透,免費隧道/HK_2型隧道不支援https; NatApp免費

ssh反向代理實現NAT穿透[ssh版teamviewer]

由於實驗室伺服器沒有公網IP,如果在校外網的話只能通過teamviewer遠端桌面連線,然而teamviewer的資料傳輸是基於影象的,反應太慢了,所以一直在尋找ssh版的teamviewer,經過谷歌,發現只需要一臺公網伺服器作為中轉站,就可以實現在任何地方登

FRP穿透使用教程 微信開發

簡介frp 是一個可用於內網穿透的高效能的反向代理應用,支援 tcp, udp, http, https 協議。這裡我們主要是用來除錯微信開發,對此工具有興趣者可去Github上了解使用2.雙擊開啟frp.bat,這裡我們只要搭建客戶端,輸入23.配置屬性方法一:按照圖上的1

frp 穿透服務搭建

提示:換件搭建所需軟體 下載地址 https://github.com/fatedier/frp/releases 一、服務

阿里搭建ngrok實現穿透

內網穿透想必是開發微信的同志所必須的,大部分人首先想到的是去網上找各種現成的吧,比如sunny-ngrok或者向日葵之類的,但是世界上沒有免費的午餐,免費的都是會崩的!!!下面我就來教大家怎麼用阿里雲和ngrok搭建一個內網穿透!!!! 1.準備工作: 要能實現內網穿透,

阿里搭建自己的ngrok服務-實現穿透

參考博文:https://blog.csdn.net/qq_34292044/article/details/78559128https://blog.csdn.net/huanxiang201311/article/details/72725891一.環境準備