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