nps內(nèi)網(wǎng)穿透實現(xiàn)外網(wǎng)訪問樹莓派
nps內(nèi)網(wǎng)穿透實現(xiàn)外網(wǎng)訪問樹莓派nps內(nèi)網(wǎng)穿透實現(xiàn)外網(wǎng)訪問樹莓派 拿到樹莓派除了研究了下 Android Things,還有就是搭建服務(wù)器,建個網(wǎng)站。操作系統(tǒng)使用官方的Raspbian,基于Linux。然后使用Nginx + PHP + WordPress建站。一切都比較順利,中
nps內(nèi)網(wǎng)穿透實現(xiàn)外網(wǎng)訪問樹莓派nps內(nèi)網(wǎng)穿透實現(xiàn)外網(wǎng)訪問樹莓派 拿到樹莓派除了研究了下 Android Things,還有就是搭建服務(wù)器,建個網(wǎng)站。操作系統(tǒng)使用官方的Raspbian,基于Linux。然后使用Nginx + PHP + WordPress建站。一切都比較順利,中
拿到樹莓派除了研究了下 Android Things,還有就是搭建服務(wù)器,建個網(wǎng)站。操作系統(tǒng)使用官方的Raspbian,基于Linux。然后使用Nginx + PHP + WordPress建站。一切都比較順利,中間過程以后寫個文章記錄一下。今天先說一下最重要的問題:如何通過內(nèi)外穿透讓外網(wǎng)訪問到樹莓派上的服務(wù)?
從網(wǎng)站建好以后,試過兩種內(nèi)網(wǎng)穿透方式,花生殼、NPS。其他的還有FRP、ngrok等
花生殼我一直沒舍得在上面花錢,因為有免費試用的基本能夠滿足需求。但是免費的才是最貴的。免費賬號服務(wù)不穩(wěn)定,經(jīng)常掉線。
后來在網(wǎng)上找到了NPS服務(wù),nps是一款輕量級、高性能、功能強大的內(nèi)網(wǎng)穿透代理服務(wù)器。目前支持tcp、udp流量轉(zhuǎn)發(fā),可支持任何tcp、udp上層協(xié)議(訪問內(nèi)網(wǎng)網(wǎng)站、本地支付接口調(diào)試、ssh訪問、遠程桌面,內(nèi)網(wǎng)dns解析等等……),此外還支持內(nèi)網(wǎng)http代理、內(nèi)網(wǎng)socks5代理、p2p等,并帶有功能強大的web管理端。
但nps有個最大的問題就是:需要一臺外網(wǎng)能訪問到的服務(wù)器來架設(shè)nps服務(wù)。有人說你都有外網(wǎng)的服務(wù)器了還要內(nèi)網(wǎng)穿透干什么。在我看來,堅持使用nps的理由是這樣,nps輕量級,高性能,但其本身負責的是流量轉(zhuǎn)發(fā)功能,我們可以在內(nèi)網(wǎng)服務(wù)器進行更密集、高負荷的運算,而承擔nps服務(wù)的外網(wǎng)服務(wù)器的配置要求就低很多。同時也可以在外網(wǎng)服務(wù)器上運行一些其他的運算要求較低的服務(wù)。所以我也算是把好鋼用在刀刃上吧~
內(nèi)網(wǎng)穿透原理大概如下圖:
其中公網(wǎng)服務(wù)端就需要一臺VPS,配置不用太高,我使用的是阿里云的突發(fā)性能實例,具體可以到阿里云ECS查看。內(nèi)網(wǎng)客戶端使用家里的樹莓派。
項目release地址: https://github.com/cnlh/nps/releases
查找對應(yīng)的server包。我的云服務(wù)器是X86-64架構(gòu),使用Ubuntu 18.04操作系統(tǒng),所以選擇linux_amd64_server.tar.gz。
下載程序并解壓:
wget https://github.com/cnlh/nps/releases/download/v0.23.2/linux_amd64_server.tar.gz &&tar -zxvf linux_amd64_server.tar.gz
運行nps
cd nps
./nps start/
之后訪問 [服務(wù)器IP]:8080,登錄web頁面。默認用戶名admin,密碼123。
也可以通過配置 conf/nps.conf修改默認端口、用戶名密碼等信息。具體配置見下表:
名稱 | 含義 |
---|---|
web_port | web管理端口 |
web_password | web界面管理密碼 |
web_username | web界面管理賬號 |
bridge_port | 服務(wù)端客戶端通信端口 |
https_proxy_port | 域名代理https代理監(jiān)聽端口 |
http_proxy_port | 域名代理http代理監(jiān)聽端口 |
auth_key | web api密鑰 |
bridge_type | 客戶端與服務(wù)端連接方式kcp或tcp |
public_vkey | 客戶端以配置文件模式啟動時的密鑰,設(shè)置為空表示關(guān)閉客戶端配置文件連接模式 |
ip_limit | 是否限制ip訪問,true或false或忽略 |
flow_store_interval | 服務(wù)端流量數(shù)據(jù)持久化間隔,單位分鐘,忽略表示不持久化 |
log_level | 日志輸出級別 |
auth_crypt_key | 獲取服務(wù)端authKey時的aes加密密鑰,16位 |
p2p_ip | 服務(wù)端Ip,使用p2p模式必填 |
p2p_port | p2p模式開啟的udp端口 |
默認web端口是8080,客戶端連接端口是8024,對于有防火墻的服務(wù)器,需要提前打開這兩個端口。
在客戶端標簽頁新增客戶端配置
填個備注,剩下的默認就可以了
新增客戶端完成后展開客戶端詳情,下面有一行命令隨后用到。此時status還是offline,圖中我這個是客戶端也已經(jīng)建立連接了所以online了。接下來我們就去搭建客戶端并建立連接。
依然是去 https://github.com/cnlh/nps/releases 下載對應(yīng)的客戶端安裝包。我的客戶端使用Raspbian系統(tǒng)的樹莓派,arm架構(gòu),雖然芯片是64位,但系統(tǒng)是32位的。所以下載 linux_arm_client.tar.gz
下載并解壓
wget https://github.com/cnlh/nps/releases/download/v0.23.2/linux_arm_client.tar.gz &&tar -zxvf linux_amd64_client.tar.gz
之后執(zhí)行web頁里新增客戶端下的命令,類似 ./npc -server=xxx.xxx.xxx.xxx:8024 -vkey=hxxxxx4hzc -type=tcp
隨后再看服務(wù)端web頁,客戶端的status已經(jīng)是online了。
現(xiàn)在服務(wù)端和客戶端的連接已經(jīng)建立起來,那么該如何訪問內(nèi)網(wǎng)的WordPress呢?
搞個域名先,國內(nèi)的需要備案。
在服務(wù)端web頁選擇 域名解析 -> 新增
填入備注、域名、內(nèi)網(wǎng)WordPress IP和端口號,客戶端id要填之前新建好的客戶端id。搞定。
當然我的網(wǎng)站其實是放在外網(wǎng)服務(wù)器的,示例的網(wǎng)站只是自己有個域名隨便玩的。最主要的用處是能夠隨時隨地通過ssh控制家里的樹莓派。
在服務(wù)端web頁選擇 tcp隧道 -> 新增
服務(wù)端端口需要新建一個,之后不要忘記在服務(wù)器防火墻放行此端口。目標ip端口寫樹莓派的ip:22
之后在外網(wǎng)通過 ssh pi@my.servce.ip -p port 就可以啦
版權(quán)所有:深圳市網(wǎng)商在線科技有限公司