使用 Tailscale 遠(yuǎn)程訪問(wèn)局域網(wǎng)
Tailscale?是一種基于?WireGuard?的虛擬組網(wǎng)工具,它能幫助我們把安裝了?Tailscale?服務(wù)的機(jī)器,都放到同一個(gè)局域網(wǎng)內(nèi),即公司或者家里的?PC?機(jī)器連到同一網(wǎng)絡(luò),甚至云服務(wù)器都能放到同一個(gè)局域網(wǎng)。
Tailscale 官網(wǎng)
Tailscale 文檔

1. 工具介紹
介紹該工具的優(yōu)點(diǎn)和特性
沒(méi)有公網(wǎng)?IP,又想能滿足遠(yuǎn)程辦公需求?擔(dān)心暴露公網(wǎng)?IP?而被頻繁的惡意掃描、攻擊?Tailscale?的誕生,成為解決這些痛點(diǎn)的全新選擇。
無(wú)需注冊(cè)/授權(quán)登錄/開(kāi)箱即用
無(wú)需配置防火墻
沒(méi)有額外的配置
高安全性/私密性
自動(dòng)密鑰輪換
基于?
WireGuard??保護(hù)點(diǎn)對(duì)點(diǎn)連接
支持用戶審查端到端的訪問(wèn)記錄
訪問(wèn)/連接/高度可控
支持使用節(jié)點(diǎn)共享與指定的?
Tailscale?用戶共享您的設(shè)備支持使用?
CL?限制對(duì)設(shè)備的訪問(wèn)。低延時(shí)/不限速
設(shè)備間在不跨運(yùn)營(yíng)商的前提條件下,設(shè)備所在網(wǎng)絡(luò)環(huán)境的上行帶寬就是訪問(wèn)下載的最大帶寬

我們知道?TailScale?是基于 Wireguard 開(kāi)發(fā)而來(lái)的,所以天生支持協(xié)議加密,安全性更高,而且是?P2P?連線,流量不經(jīng)服務(wù)器,延遲更低。并且,對(duì)個(gè)人用戶免費(fèi)。
[1] 傳輸文件
TailScale?內(nèi)置?taildrop,可以在設(shè)備間傳輸文件,因?yàn)槠渲С秩脚_(tái),所以實(shí)際上這也是一個(gè)很好用的全平臺(tái)文件傳輸工具。而且如果設(shè)備處在同一個(gè)局域網(wǎng)的話,傳輸速度也會(huì)非??臁?/p>
[2] 遠(yuǎn)程開(kāi)發(fā)
通過(guò)筆記本可以遠(yuǎn)程臺(tái)式主機(jī)或者服務(wù)器,進(jìn)行開(kāi)發(fā)。優(yōu)點(diǎn)在于,臺(tái)式機(jī)硬件的售價(jià)非常便宜,可以用很低的成本組裝一臺(tái)超強(qiáng)配置的機(jī)器。移動(dòng)辦公的精髓應(yīng)該在于你可以隨時(shí)隨地的連接上一個(gè)統(tǒng)一且強(qiáng)大的工作環(huán)境, 而不是抱著同一臺(tái)筆記本走南闖北。
[3] 服務(wù)代理
TailScale?節(jié)點(diǎn)間是點(diǎn)對(duì)點(diǎn)?tls?連接,所以實(shí)際上也可以用來(lái)做網(wǎng)絡(luò)代理。
2. 使用方式
介紹 Tailscale 官網(wǎng)的在線使用方式
當(dāng)我們?cè)L問(wèn)官方并點(diǎn)擊了 Get Started 之后,會(huì)發(fā)現(xiàn)只能夠使用谷歌、微軟和同性交友平臺(tái)的賬戶鏡像登錄,使用自己郵箱進(jìn)行屬于增值付費(fèi)業(yè)務(wù)。

這里我們使用自己的賬戶進(jìn)行登錄之后,需要我們首先現(xiàn)在對(duì)應(yīng)設(shè)備的客戶端工具,只有 Linux 設(shè)備可以使用命令行安裝,其他設(shè)備均需要安裝客戶端工具才行。需要注意的是,如果你是 macOS 的話,需要使用除中國(guó)區(qū)外的賬戶進(jìn)行登錄(得準(zhǔn)備一個(gè)美區(qū)賬戶),才能夠安裝。如果是安卓手機(jī)的話,需要到谷歌應(yīng)用商店安裝(需要科學(xué)上網(wǎng))。
#?linux$?curl?-fsSL?https://tailscale.com/install.sh?|?sh
#?還可以使用docker安裝#?https://github.com/tailscale/tailscale/blob/main/Dockerfile$?docker?run?-d?--name=tailscaled?\
????-v?/var/lib:/var/lib?-v?/dev/net/tun:/dev/net/tun?\
????--network=host?--privileged?fastandfearless/tailscale?tailscaled#?打印tailscale登錄地址并進(jìn)行授權(quán)登錄$?docker?exec?tailscaled?tailscale?up#?獲取設(shè)備TailscaleIP地址$?ip?addr?show?tailscale0#?查看設(shè)備狀態(tài)$?docker?exec?tailscaled?tailscale?status
#?本地編譯安裝#?https://github.com/tailscale/tailscale/wiki/Tailscaled-on-macOS#?安裝go工具$?brew?install?go#?直接編譯#?會(huì)在$HOME/go/bin目錄下面生成二進(jìn)制包$?go?install?tailscale.com/cmd/tailscale{,d}@main#?后臺(tái)守護(hù)進(jìn)程運(yùn)行tailscaled服務(wù)#?sudo?tailscaled?uninstall-system-daemon$?sudo?$HOME/go/bin/tailscaled
$?sudo?$HOME/go/bin/tailscaled?install-system-daemon#?啟動(dòng)服務(wù)$?tailscale?up
$?tailscale?status

當(dāng)你登錄并授權(quán)登錄成功后,會(huì)自動(dòng)為該設(shè)備分配一個(gè) Tailscale IP(可用于局域網(wǎng)內(nèi)設(shè)備間的訪問(wèn)),之后可以看到這么一份帶有 IP 的列表了。

有了 Tailscale 的虛擬組網(wǎng)服務(wù)后,辦公室和自由職業(yè)時(shí)期的居家辦公體驗(yàn),相差已經(jīng)變得很小了。下來(lái),我們就慢慢了解一下其用法和使用場(chǎng)景吧!
3. 使用場(chǎng)景
安裝上之后,我們可以怎么玩呢?
[1] 訪問(wèn)內(nèi)網(wǎng)服務(wù)
如果你使用的?Mac?電腦的話,肯定存儲(chǔ)是一個(gè)頭痛的問(wèn)題,因?yàn)橐话闱闆r下都會(huì)購(gòu)買?128G?和?256G?版本的機(jī)器(不要問(wèn)為什么,問(wèn)的話就是窮)。這樣當(dāng)磁盤(pán)不夠的時(shí)候,就讓人感覺(jué)到焦慮。但是當(dāng)我們使用?Tailscale?并擁有?WebDav?之后,就能很好的拓展存儲(chǔ)空間,可以內(nèi)網(wǎng)連接我的群暉?NAS?提供的?WebDav?了。

[2] 遠(yuǎn)程訪問(wèn)機(jī)器 - 群暉
遠(yuǎn)程使用?PC?的情況,可以通過(guò)?TeamViewer?完成。但是使用?RDP?協(xié)議來(lái)遠(yuǎn)程操作,效果體驗(yàn)更佳而且更穩(wěn)定。但是?PC?機(jī)需要一直開(kāi)機(jī)狀態(tài),如果我們只是偶爾使用一下的話,這有些費(fèi)電了。
當(dāng)我們使用?Tailscale?之后,通過(guò)群暉(或者機(jī)器機(jī)器也可以)做一個(gè)反向代理方便進(jìn)入家里的梅林路由器,并修改本地?Mac?的?hosts?文件來(lái)解析我們自定義的域名。群暉 NAS 的控制面板中自帶了配置反向代理的地方,可以省的我們折騰。進(jìn)入梅林路由器,進(jìn)入網(wǎng)絡(luò)工具中的通過(guò)網(wǎng)絡(luò)喚醒界面,選擇對(duì)應(yīng)的?PC?即可。

當(dāng)然,首先這臺(tái)?PC?機(jī)需要配置好通過(guò)?WOL?喚醒才行,而配置可以自己參考網(wǎng)絡(luò)喚醒全攻略。等待電腦喚醒完成后,使用遠(yuǎn)程桌面進(jìn)行遠(yuǎn)程連接,就可以得到一個(gè)用戶體驗(yàn)很不錯(cuò)的體驗(yàn)了。
[3] 遠(yuǎn)程訪問(wèn)機(jī)器 - 主機(jī)
上面我們知道群暉會(huì)自帶反向代理的功能,但是并不是每個(gè)人都會(huì)買這個(gè)的,那有沒(méi)有其他方式來(lái)處理這個(gè)問(wèn)題呢?肯定是可以的,我們這里通過(guò)?Linux?接入?TailScale?服務(wù),讓其充當(dāng)網(wǎng)關(guān),這樣就可以訪問(wèn)整個(gè)內(nèi)網(wǎng)網(wǎng)段了。
這樣做的好處,還有一個(gè)就是,家里或者公司不是每一部設(shè)備都可以安裝到?TailScale?服務(wù)的,比如打印機(jī)之類的。這樣設(shè)定?PC?機(jī)充當(dāng)子路由(Subnet Route),其他所有的外網(wǎng)的?TailScale?裝置都可以透過(guò)這部?Linux?裝置作為網(wǎng)關(guān)訪問(wèn)家里內(nèi)網(wǎng)所有的設(shè)備。
#?Linux機(jī)器設(shè)置IP轉(zhuǎn)發(fā)(臨時(shí))$?echo?'net.ipv4.ip_forward?=?1'?|?sudo?tee?-a?/etc/sysctl.conf
$?echo?'net.ipv6.conf.all.forwarding?=?1'?|?sudo?tee?-a?/etc/sysctl.conf
$?sudo?sysctl?-p?/etc/sysctl.conf
TailScale?不需要防火墻配置,會(huì)自動(dòng)管理規(guī)則,以允許轉(zhuǎn)發(fā)。設(shè)定過(guò)程也沒(méi)涉及到?iptable?的設(shè)置,一條指令可以完成。
#?替換為自己的網(wǎng)段(IPV4或IPV6)$?sudo?tailscale?up?--advertise-routes=20.13.3.0/24
這里設(shè)置完成之后,默認(rèn)并沒(méi)有開(kāi)啟轉(zhuǎn)發(fā)功能。需要我們登錄網(wǎng)頁(yè),在控制臺(tái)頁(yè)面找到我們這臺(tái)機(jī)器,打開(kāi)路由設(shè)置功能?;诎踩匦?,Tailscale?每隔?6?個(gè)月需要重新授權(quán)裝置,我們這里可以選擇關(guān)掉這個(gè)。


[4] 代理服務(wù) - 科學(xué)上網(wǎng)
比如我在境外服務(wù)器上安裝一個(gè)?tailscale?的節(jié)點(diǎn),然后再在境外服務(wù)器上安裝一個(gè)?cow(用來(lái)做?http proxy server)。那我就可以在任意一臺(tái)機(jī)器上,訪問(wèn)境外服務(wù)器的?tailscale?子網(wǎng)?IP + cow?端口的形式實(shí)現(xiàn)?HTTP/SOCKS?代理。
#?安裝cow工具(梯子機(jī)器)$?curl?-L?git.io/cow?|?bash#?修改配置文件$?cat?/home/escape/.cow/rc
listen?=?http://100.100.100.100:17777
#?將其添加到systemd服務(wù)中$?sudo?vim?/etc/systemd/system/cow.service\[Unit\]Description=cow?serviceAfter=network.target
StartLimitIntervalSec=0\[Service\]Type=simple
Restart=always
RestartSec=1
User=escape
ExecStart=/usr/local/bin/cow?-c?/home/escape/.cow/rc\[Install\]WantedBy=multi-user.target
Tailscale?提供的?relays?數(shù)量有限,而且全部在國(guó)外。你也可以自建中繼。自建中繼服務(wù)器被稱為?derper,是用?go?開(kāi)發(fā)的,建議先安裝?go?環(huán)境。go?是預(yù)編譯的,安裝起來(lái)很簡(jiǎn)單,下載、解壓即可。
啟動(dòng)?derper?的參數(shù),其中?-hostname?表示有效的公網(wǎng)域名,derper?會(huì)自動(dòng)為這個(gè)域名申請(qǐng)?Let's Encrypt TLS?證書(shū),其中?-a?表示指定?derper?監(jiān)聽(tīng)的?tcp?端口,默認(rèn)為?443,修改為其他端口的話似乎轉(zhuǎn)發(fā)流量會(huì)有問(wèn)題,其中?-stun?表示?stun?協(xié)議的?udp?端口,health check?的時(shí)候會(huì)用到。
#?安裝$?go?install?tailscale.com/cmd/derper@main#?啟動(dòng)$?sudo?derper?-c=/root/derper.conf?-hostname=xx.xx.xx?-a=:443?-stun
#?加入自啟動(dòng)里面sudo?vi?/etc/systemd/system/derper.service\[Unit\]Description=derper?serviceAfter=network.target
StartLimitIntervalSec=0\[Service\]Type=simple
Restart=always
RestartSec=1
User=root
ExecStart=/home/escape/.go/bin/derper?-c=/root/derper.conf?-hostname=x.x.x.x?-a?:443?-stun\[Install\]WantedBy=multi-user.target
需要注意的是,因?yàn)?derper?會(huì)申請(qǐng)公網(wǎng)?TLS?證書(shū),如果你的服務(wù)器在國(guó)內(nèi),那么域名必須要備案。而且由于中國(guó)封鎖了?Let's Encrypt,所以你的?derper?在啟動(dòng)一會(huì)兒后,很可能會(huì)報(bào)錯(cuò)表示證書(shū)申請(qǐng)失敗。所以,使用香港、日本、新加坡的主機(jī)會(huì)好很多。
4. 命令使用
這里主要介紹 tailscale 命令的使用
一圖搞定

示例演示
#?查詢部署到局域網(wǎng)的節(jié)點(diǎn)IP地址$?tailscale?status#?終端查看tailscale分配到的IP地址$?tailscale?ip
5. 參考鏈接
TailScale 實(shí)現(xiàn)遠(yuǎn)端訪問(wèn)整段局域網(wǎng)
近期折騰 tailscale 的一些心得
Tailscale:基于 WireGuard 異地組建虛擬局域網(wǎng)
2022 年正確的內(nèi)外網(wǎng)穿透,內(nèi)網(wǎng)翻墻,高速翻墻
Tailscale wireguard 協(xié)議安全加密隧道內(nèi)網(wǎng)建站教程
文章轉(zhuǎn)載:https://www.escapelife.site/posts/bb022c74.html
有收獲,點(diǎn)個(gè)在看?


