之前寫了兩篇使用IPv6進行內(nèi)網(wǎng)穿透的文章《基于IPv6的內(nèi)網(wǎng)穿透》、《IPv6實現(xiàn)外網(wǎng)訪問家中設(shè)備》。熱心網(wǎng)友【不吃魚de貓】看了后,留言提示用Lucky會更簡便。剛好實際使用過程中,發(fā)現(xiàn)IPv6內(nèi)網(wǎng)穿透有以下兩個缺點:1. 只能在IPv6環(huán)境下使用;2. 需要關(guān)閉路由器上的IPv6防火墻,相當把家里所有設(shè)備都暴露在公網(wǎng)上,安全性低。于是嘗試使用Lucky。本文記錄設(shè)置Lucky的STUN內(nèi)網(wǎng)穿透服務(wù)過程。本次設(shè)置Lucky主要參考下面的文章,也是Lucky作者推薦的參考案例,但有些設(shè)置細節(jié)略有變化。打通大內(nèi)網(wǎng)第一期 無公網(wǎng)部署https和反向代理(基于Lucky的STUN穿透)
有關(guān)STUN內(nèi)網(wǎng)穿透,這里直接從Lucky官網(wǎng)截圖。使用STUN進行內(nèi)網(wǎng)穿透的前提是用戶網(wǎng)絡(luò)為NAT1。如何測試自己的網(wǎng)絡(luò)是否為NAT1,可以參考下面的文章。本人未進行網(wǎng)絡(luò)類型測試。使用的是移動寬帶,光貓橋接,路由器撥號,使用STUN內(nèi)網(wǎng)穿透成功。
使用 Lucky 的 STUN 內(nèi)網(wǎng)穿透利用 UPNP 和 NAT1 在公網(wǎng)打洞并配置偽 DDNS
部署在黑豹X2盒子上,采用docker compose方式,docker-compose.yml文件如下。與官方的安裝建議略有差異。2.15.7為當前最新版。services:
lucky:
image: gdy666/lucky:2.15.7
container_name: lucky
volumes:
- /etc/lucky:/goodluck
network_mode: host
restart: unless-stopped
在瀏覽器中輸入下面的網(wǎng)址即可登錄Lucky管理界面。默認賬戶和密碼均為666。為了后續(xù)能安全地訪問Lucky控制臺,建議修改默認的端口、安全入口、管理賬號和密碼。由于運行Lucky的設(shè)備是接在路由器之后,因此需要先將設(shè)備暴露在公網(wǎng)上。這里有兩種方式。第一種,在路由器設(shè)置中,將運行Lucky的設(shè)備設(shè)置為DMZ主機。如下圖所示。DMZ主機模式會將內(nèi)網(wǎng)設(shè)備完全暴露在公網(wǎng)上,安全性較低。而且用此種方式需要Lucky來進行端口數(shù)據(jù)轉(zhuǎn)發(fā),效率偏低。第二種,在路由器上定義端口映射。將指定端口上的數(shù)據(jù)轉(zhuǎn)發(fā)到內(nèi)網(wǎng)設(shè)備的端口上,如下圖所示。只暴露設(shè)備的部分端口,并由路由器進行數(shù)據(jù)轉(zhuǎn)發(fā),安全性和效率都要高不少。1.在路由器中定義端口轉(zhuǎn)發(fā)。選擇一個不容易沖突的外部端口,如18887,轉(zhuǎn)發(fā)到內(nèi)網(wǎng)設(shè)備服務(wù)對應(yīng)的IP和端口。如上圖所示,第一個內(nèi)網(wǎng)設(shè)備IP地址為192.168.0.202,它的3389端口是遠程桌面服務(wù)。2. STUN內(nèi)網(wǎng)穿透設(shè)置。添加STUN內(nèi)網(wǎng)穿透規(guī)則,參考中的步驟進行設(shè)置。注意【穿透通道本地端口】要設(shè)置為路由器端口轉(zhuǎn)發(fā)中的外部端口,如前面設(shè)置的18887,并打開不使用Lucky內(nèi)置端口轉(zhuǎn)發(fā)。添加完后,若穿透成功,就會出現(xiàn)外網(wǎng)訪問地址,如下圖所示。使用該地址(需帶端口號),就能訪問內(nèi)網(wǎng)對應(yīng)設(shè)備的服務(wù)了。針對不同的內(nèi)網(wǎng)服務(wù),在路由器上設(shè)置端口轉(zhuǎn)發(fā),然后添加對應(yīng)的穿透規(guī)則即可。使用STUN內(nèi)網(wǎng)穿透,穿透后的外網(wǎng)訪問IP和端口會動態(tài)變化。實際使用下來,IP地址基本不變,而端口會因規(guī)則的修改或者Lucky軟件的重新啟動而發(fā)生變化。Lucky的STUN穿透規(guī)則內(nèi)置了Webhook功能,當穿透后的IP或端口有變化時,會向設(shè)置好的API推送消息。前面參考的文章采用的是網(wǎng)頁重定向方法,需要有自己的域名。這里介紹一種不花錢的方式,通過釘釘群機器人推送。1. 創(chuàng)建一個釘釘群,并添加自定義機器人。2. 隨便給機器人取個名字。復(fù)制并保存Webhook地址。在安全設(shè)置中選擇自定義關(guān)鍵詞,可隨便填一個單詞,然后點擊完成。3. 編輯穿透規(guī)則。啟用Webhook。接口地址為剛才復(fù)制的API地址,其它按下圖所示設(shè)置。注意請求體中,content對應(yīng)的內(nèi)容需包含上一步自定義的關(guān)鍵詞。{
"text":{
"content":"lucky, ssh: #{ipAddr}"
},
"msgtype":"text"
}
4. 點擊Webhook手動觸發(fā)測試。設(shè)置無誤的情況下,可以在釘釘群內(nèi)看到這條穿透規(guī)則對應(yīng)的外網(wǎng)訪問地址。至此,基于Lucky的內(nèi)網(wǎng)穿透介紹完成。目前還有問題的一點是此種方式是通過HTTP方式訪問,存在安全風(fēng)險。由于本人使用了路由器端口轉(zhuǎn)發(fā)模式,還未找到簡單的通過HTTPS訪問內(nèi)網(wǎng)服務(wù)的方法。前面引用的兩篇文章都有采用HTTPS訪問內(nèi)網(wǎng)服務(wù)的介紹,各位可以參考。
閱讀原文:原文鏈接
該文章在 2025/3/18 12:10:25 編輯過