色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

新型內網穿透的基本原理

馬哥Linux運維 ? 來源:馬哥Linux運維 ? 作者:馬哥Linux運維 ? 2022-10-26 10:14 ? 次閱讀

一、內網穿透簡述

由于國內網絡環境問題, 普遍家庭用戶寬帶都沒有分配到公網 IP(我有固定公網 IP, 嘿嘿); 這時候一般我們需要從外部訪問家庭網絡時就需要通過一些魔法手段, 比如 VPN、遠程軟件(向日葵…)等; 但是這些工具都有一個普遍存在的問題: 慢+卡!

1.1、傳統星型拓撲

究其根本因素在于, 在傳統架構中如果兩個位于多層 NAT(簡單理解為多個路由器)之后的設備, 只能通過一些中央(VPN/遠程軟件)中轉服務器進行鏈接, 這時網絡連接速度取決于中央服務器帶寬和速度; 這種網絡架構我這里簡稱為: 星型拓撲

94273ae0-5477-11ed-a3b6-dac502259ad0.png

從這張圖上可以看出, 你的 “工作筆記本” 和 “家庭 NAS” 之間通訊的最大傳輸速度為 Up/Down: 512K/s; 因為流量經過了中央服務器中轉, 由于網絡木桶效應存在, 即使你兩側的網絡速度再高也沒用, 整體的速度取決于這個鏈路中最低的一個設備網速而不是你兩端的設備.

在這種拓撲下, 想提高速度只有一個辦法: 加錢! 在不使用 “鈔能力” 的情況下, 普遍免費的軟件提供商不可能給予過多的資源來讓用戶白嫖, 而自己弄大帶寬的中央服務器成本又過高.

1.2、NAT 穿透與網狀拓撲

本部分只做簡述, 具體里面有大量細節和規則可能描述不準確, 細節部分推薦閱讀 How NAT traversal works.

既然傳統的星型拓撲有這么多問題, 那么有沒有其他騷操作可以解決呢? 答案是有的, 簡單來說就是利用 NAT 穿透原理. NAT 穿透簡單理解如下: 在 A 設備主動向 B 設備發送流量后, 整個鏈路上的防火墻會短時間打開一個映射規則, 該規則允許 B 設備短暫的從這個路徑上反向向 A 設備發送流量. 更通俗的講大概就是所謂的: “順著網線來打你”

943f826c-5477-11ed-a3b6-dac502259ad0.png

搞清了這個規則以后, 我們就可以弄一臺 “低配” 的中央服務器, 讓中央服務器來幫助我們協商兩邊的設備誰先訪問誰(或者說是訪問規則); 兩個設備一起無腦訪問對方, 然后觸發防火墻的 NAT 穿透規則(防火墻打開), 此后兩個設備就可以不通過中央服務器源源不斷的通訊了. 在這種架構下我們的設備其實就組成了一個非標準的網狀拓撲:

94d3d926-5477-11ed-a3b6-dac502259ad0.png

在這種拓撲下, 兩個設備之間的通訊速度已經不在取決于中央服務器, 而是直接取決于兩端設備的帶寬, 也就是說達到了設備網絡帶寬峰值. 當然 NAT 穿透也不是百分百能夠成功的, 在復雜網絡情況下有些防火墻不會按照預期工作或者說有更嚴格的限制; 比如 IP、端口、協議限制等等, 所以為了保證可靠性可以讓中央服務器中轉做后備方案, 即盡量嘗試 NAT 穿透, 如果不行走中央服務器中繼.

二、Tailscale 簡介

第一部分是為了方便讀者理解一些新型內網穿透的大致基本原理, 現在回到本文重點: Tailscale

Tailscale 就是一種利用 NAT 穿透(aka: P2P 穿透)技術的 VPN 工具. Tailscale 客戶端等是開源的, 不過遺憾的是中央控制服務器目前并不開源; Tailscale 目前也提供免費的額度給用戶使用, 在 NAT 穿透成功的情況下也能保證滿速運行.

不過一旦無法 NAT 穿透需要做中轉時, Tailscale 官方的服務器由于眾所周知的原因在國內訪問速度很拉胯; 不過萬幸的是開源社區大佬們搓了一個開源版本的中央控制服務器(Headscale), 也就是說: 我們可以自己搭建中央服務器啦, 完全 “自主可控” 啦.

三、搭建 Headscale 服務端

以下命令假設安裝系統為 Ubuntu 22.04, 其他系統請自行調整.

3.1、宿主機安裝

Headscale 是采用 Go 語言編寫的, 所以只有一個二進制文件, 在 Github Releases 頁面下載最新版本即可:

#下載
wgethttps://github.com/juanfont/headscale/releases/download/v0.16.4/headscale_0.16.4_linux_amd64-O/usr/local/bin/headscale

#增加可執行權限
chmod+x/usr/local/bin/headscale

下載完成后為了安全性我們需要創建單獨的用戶和目錄用于 Headscale 運行

#配置目錄
mkdir-p/etc/headscale

#創建用戶
useradd
--create-home
--home-dir/var/lib/headscale/
--system
--user-group
--shell/usr/sbin/nologin
headscale

為了保證 Headscale 能持久運行, 我們需要創建 SystemD 配置文件

#/lib/systemd/system/headscale.service
[Unit]
Description=headscalecontroller
After=syslog.target
After=network.target

[Service]
Type=simple
User=headscale
Group=headscale
ExecStart=/usr/local/bin/headscaleserve
Restart=always
RestartSec=5

#Optionalsecurityenhancements
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/headscale/var/run/headscale
AmbientCapabilities=CAP_NET_BIND_SERVICE
RuntimeDirectory=headscale

[Install]
WantedBy=multi-user.target

3.2、配置 Headscale

安裝完成以后我們需要在 /etc/headscale/config.yaml 中配置 Headscale 的啟動配置, 以下為配置樣例以及解釋(僅列出重要配置):

---
#Headscale服務器的訪問地址
#
#這個地址是告訴客戶端需要訪問的地址,即使你需要在跑在
#負載均衡器之后這個地址也必須寫成負載均衡器的訪問地址
server_url:https://your.domain.com

#Headscale實際監聽的地址
listen_addr:0.0.0.0:8080

#監控地址
metrics_listen_addr:127.0.0.1:9090

#grpc監聽地址
grpc_listen_addr:0.0.0.0:50443

#是否允許不安全的grpc連接(非TLS)
grpc_allow_insecure:false

#客戶端分配的內網網段
ip_prefixes:
-fd7aa1e0::/48
-100.64.0.0/10

#中繼服務器相關配置
derp:
server:
#關閉內嵌的derper中繼服務(可能不安全,還沒去看代碼)
enabled:false

#下發給客戶端的中繼服務器列表(默認走官方的中繼節點)
urls:
-https://controlplane.tailscale.com/derpmap/default

#可以在本地通過yaml配置定義自己的中繼接待你
paths:[]

#SQLiteconfig
db_type:sqlite3
db_path:/var/lib/headscale/db.sqlite

#使用自動簽發證書是的域名
tls_letsencrypt_hostname:""

#使用自定義證書時的證書路徑
tls_cert_path:""
tls_key_path:""

#是否讓客戶端使用隨機端口,默認使用41641/UDP
randomize_client_port:false

3.3、證書及反向代理

可能很多人和我一樣, 希望使用 ACME 自動證書, 又不想占用 80/443 端口, 又想通過負載均衡器負載, 配置又看的一頭霧水; 所以這里詳細說明一下 Headscale 證書相關配置和工作邏輯:

1、Headscale 的 ACME 只支持 HTTP/TLS 挑戰, 所以使用后必定占用 80/443

2、當配置了 tls_letsencrypt_hostname 時一定會進行 ACME 申請

3、在不配置 tls_letsencrypt_hostname 時如果配置了 tls_cert_path 則使用自定義證書

4、兩者都不配置則不使用任何證書, 服務端監聽 HTTP 請求

5、三種情況下(ACME 證書、自定義證書、無證書)主服務都只監聽 listen_addr 地址, 與 server_url 沒半毛錢關系

6、只有在有證書(ACME 證書或自定義證書)的情況下或者手動開啟了 grpc_allow_insecure 才會監聽 grpc 遠程調用服務

綜上所述, 如果你想通過 Nginx、Caddy 反向代理 Headscale, 則你需要滿足以下配置:

1、刪除掉 tls_letsencrypt_hostname 或留空, 防止 ACME 啟動

2、刪除掉 tls_cert_path 或留空, 防止加載自定義證書

3、server_url 填寫 Nginx 或 Caddy 被訪問的 HTTPS 地址

4、在你的 Nginx 或 Caddy 中反向代理填寫 listen_addr 的 HTTP 地址

Nginx 配置參考 官方 Wiki, Caddy 只需要一行 reverse_proxy headscale:8080 即可(地址自行替換).

至于 ACME 證書你可以通過使用 acme.sh 自動配置 Nginx 或者使用 Caddy 自動申請等方式, 這些已經與 Headscale 無關了, 不在本文探討范圍內.

3.4、內網地址分配

請盡量不要將 ip_prefixes 配置為默認的 100.64.0.0/10 網段, 如果你有興趣查詢了該地址段, 那么你應該明白它叫 CGNAT; 很不幸的是例如 Aliyun 底層的 apt 源等都在這個范圍內, 可能會有一些奇怪問題.

3.5、啟動 Headscale

在處理完證書等配置后, 只需要愉快的啟動一下即可:

#開機自啟動并立即啟動
systemctlenableheadscale--now

再啰嗦一嘴, 如果你期望使用 Headscale ACME 自動申請證書, 你的關鍵配置應該像這樣:

server_url:https://your.domain.com
listen_addr:0.0.0.0:443
tls_letsencrypt_hostname:"your.domain.com"
tls_cert_path:""
tls_key_path:""

如果你期望使用自定義證書, 則你的關鍵配置應該像這樣:

server_url:https://your.domain.com
listen_addr:0.0.0.0:443
tls_letsencrypt_hostname:""
tls_cert_path:"/path/to/cert"
tls_key_path:"/path/to/key"

如果你期望使用負載均衡器, 那么你的關鍵配置應該像這樣:

server_url:https://your.domain.com
listen_addr:0.0.0.0:8080
tls_letsencrypt_hostname:""
tls_cert_path:""
tls_key_path:""

在使用負載均衡器配置時, 啟動后會有一行警告日志, 忽略即可:

2022-09-18T0736ZWRNListeningwithoutTLSbutServerURLdoesnotstartwithhttp://

3.6、Docker Compose 安裝

Compose 配置樣例文件如下:

#docker-compose.yaml
version:"3.9"

services:
headscale:
container_name:headscale
image:headscale/headscale:0.16.4
ports:
-"8080:8080"
cap_add:
-NET_ADMIN
-NET_RAW
-SYS_MODULE
sysctls:
-net.ipv4.ip_forward=1
-net.ipv6.conf.all.forwarding=1
restart:always
volumes:
-./conf:/etc/headscale
-data:/var/lib/headscale
command:["headscale","serve"]
volumes:
config:
data:

你需要在與 docker-compose.yaml 同級目錄下創建 conf 目錄用于存儲配置文件; 具體配置請參考上面的配置詳解等部分, 最后不要忘記你的 Compose 文件端口映射需要和配置文件保持一致.

四、客戶端安裝

對于客戶端來說, Tailscale 提供了多個平臺和發行版的預編譯安裝包, 并且部分客戶端直接支持設置自定義的中央控制服務器.

4.1、Linux 客戶端

Linux 用戶目前只需要使用以下命令安裝即可:

curl-fsSLhttps://tailscale.com/install.sh|sh

默認該腳本會檢測相關的 Linux 系統發行版并使用對應的包管理器安裝 Tailscale, 安裝完成后使用以下命令啟動:

tailscaleup--login-serverhttps://your.domain.com--advertise-routes=192.168.11.0/24--accept-routes=true--accept-dns=false

關于選項設置:

--login-server: 指定使用的中央服務器地址(必填)

--advertise-routes: 向中央服務器報告當前客戶端處于哪個內網網段下, 便于中央服務器讓同內網設備直接內網直連(可選的)或者將其他設備指定流量路由到當前內網(可選)

--accept-routes: 是否接受中央服務器下發的用于路由到其他客戶端內網的路由規則(可選)

--accept-dns: 是否使用中央服務器下發的 DNS 相關配置(可選, 推薦關閉)

啟動完成后, tailscale 將會卡住, 并打印一個你的服務器訪問地址; 瀏覽器訪問該地址后將會得到一條命令:

95093814-5477-11ed-a3b6-dac502259ad0.png958a1506-5477-11ed-a3b6-dac502259ad0.png

注意: 瀏覽器上顯示的命令需要在中央控制服務器執行(Headscale), NAMESAPCE 位置應該替換為一個具體的 Namespace, 可以使用以下命令創建 Namespace (名字隨意)并讓設備加入:

95db3d32-5477-11ed-a3b6-dac502259ad0.png

在 Headscale 服務器上執行命令成功后客戶端命令行在稍等片刻便會執行完成, 此時該客戶端已經被加入 Headscale 網絡并分配了特定的內網 IP; 多個客戶端加入后在 NAT 穿透成功時就可以互相 ping 通, 如果出現問題請閱讀后面的調試細節, 只要能注冊成功就算是成功了一半, 暫時不要慌.

4.2、MacOS 客戶端

MacOS 客戶端安裝目前有兩種方式, 一種是使用標準的 AppStore 版本(好像還有一個可以直接下載的), 需要先設置服務器地址然后再啟動 App:

首先訪問你的 Headscale 地址 https://your.domain.com/apple:

95ec41ae-5477-11ed-a3b6-dac502259ad0.png

復制倒數第二行命令到命令行執行(可能需要 sudo 執行), 然后去 AppStore 搜索 Hailscale 安裝并啟動; 啟動后會自動打開瀏覽器頁面, 與 Linux 安裝類似, 復制命令到 Headscale 服務器執行即可(Namespace 創建一次就行).

第二種方式也是比較推薦的方式, 直接編譯客戶端源碼安裝, 體驗與 Linux 版本一致:

#安裝go
brewinstallgo

#編譯命令行客戶端
goinstalltailscale.com/cmd/tailscale{,d}@main

#安裝為系統服務
sudotailscaledinstall-system-daemon

安裝完成后同樣通過 tailscale up 命令啟動并注冊即可, 具體請參考 Linux 客戶端安裝部分.

4.3、其他客戶端

關于 Windows 客戶端大致流程就是創建一個注冊表, 然后同樣安裝官方 App 啟動, 接著瀏覽器復制命令注冊即可. 至于移動端本人沒有需求, 所以暫未研究. Windows 具體的安裝流程請訪問 https://your.domain.com/windows 地址查看(基本與 MacOS AppStore 版本安裝類似).

五、中繼服務器搭建

在上面的 Headscale 搭建完成并添加客戶端后, 某些客戶端可能無法聯通; 這是由于網絡復雜情況下導致了 NAT 穿透失敗; 為此我們可以搭建一個中繼服務器來進行傳統的星型拓撲通信.

5.1、搭建 DERP Server

首先需要注意的是, 在需要搭建 DERP Server 的服務器上, 請先安裝一個 Tailscale 客戶端并注冊到 Headscale; 這樣做的目的是讓搭建的 DERP Server 開啟客戶端認證, 否則你的 DERP Server 可以被任何人白嫖.

目前 Tailscale 官方并未提供 DERP Server 的安裝包, 所以需要我們自行編譯安裝; 在編譯之前請確保安裝了最新版本的 Go 語言及其編譯環境.

#編譯DERPServer
goinstalltailscale.com/cmd/derper@main

#復制到系統可執行目錄
mv${GOPATH}/bin/derper/usr/local/bin

#創建用戶和運行目錄
useradd
--create-home
--home-dir/var/lib/derper/
--system
--user-group
--shell/usr/sbin/nologin
derper

接下來創建一個 SystemD 配置:

#/lib/systemd/system/derper.service
[Unit]
Description=tailscalederperserver
After=syslog.target
After=network.target

[Service]
Type=simple
User=derper
Group=derper
ExecStart=/usr/local/bin/derper-c=/var/lib/derper/private.key-a=:8989-stun-port=3456-verify-clients
Restart=always
RestartSec=5

#Optionalsecurityenhancements
NoNewPrivileges=yes
PrivateTmp=yes
ProtectSystem=strict
ProtectHome=yes
ReadWritePaths=/var/lib/derper/var/run/derper
AmbientCapabilities=CAP_NET_BIND_SERVICE
RuntimeDirectory=derper

[Install]
WantedBy=multi-user.target

最后使用以下命令啟動 Derper Server 即可:

systemctlenablederper--now

注意: 默認情況下 Derper Server 會監聽在 :443 上, 同時會觸發自動 ACME 申請證書. 關于證書邏輯如下:

1、如果不指定 -a 參數, 則默認監聽 :443

2、如果監聽 :443 并且未指定 --certmode=manual 則會強制使用 --hostname 指定的域名進行 ACME 申請證書

3、如果指定了 --certmode=manual 則會使用 --certmode 指定目錄下的證書開啟 HTTPS

4、如果指定了 -a 為非 :443 端口, 且沒有指定 --certmode=manual 則只監聽 HTTP

如果期望使用 ACME 自動申請只需要不增加 -a 選項即可(占用 443 端口), 如果期望通過負載均衡器負載, 則需要將 -a 選項指定到非 443 端口, 然后配置 Nginx、Caddy 等 LB 軟件即可. 最后一點 stun 監聽的是 UDP 端口, 請確保防火墻打開此端口.

5.2、配置 Headscale

在創建完 Derper 中繼服務器后, 我們還需要配置 Headscale 來告訴所有客戶端在必要時可以使用此中繼節點進行通信; 為了達到這個目的, 我們需要在 Headscale 服務器上創建以下配置:

#/etc/headscale/derper.yaml

regions:
901:
regionid:901
regioncode:private-derper
regionname:"MyPrivateDerperServer"
nodes:
-name:private-derper
regionid:901
#自行更改為自己的域名
hostname:derper.xxxxx.com
#Derper節點的IP
ipv4:123.123.123.123
#Derper設置的STUN端口
stunport:3456

在創建好基本的 Derper Server 節點信息配置后, 我們需要調整主配置來讓 Headscale 加載:

derp:
server:
#這里關閉Headscale默認的DerperServer
enabled:false
#urls留空,保證不加載官方的默認Derper
urls:[]
#這里填寫Derper節點信息配置的絕對路徑
paths:
-/etc/headscale/derper.yaml

#Ifenabled,aworkerwillbesetuptoperiodically
#refreshthegivensourcesandupdatethederpmap
#willbesetup.
auto_update_enabled:true

#HowoftenshouldwecheckforDERPupdates?
update_frequency:24h

接下來重啟 Headscale 并重啟 client 上的 tailscale 即可看到中繼節點:

~???tailscalenetcheck

Report:
*UDP:true
*IPv4:yes,124.111.111.111:58630
*IPv6:no,butOShassupport
*MappingVariesByDestIP:false
*HairPinning:false
*PortMapping:UPnP,NAT-PMP,PCP
*CaptivePortal:true
*NearestDERP:XXXXDerperServer
*DERPlatency:
-XXXX:10.1ms(XXXXDerperServer)

到此中繼節點搭建完成.

5.3、Docker Compose 安裝

目前官方似乎也沒有提供 Docker 鏡像, 我自己通過 GitHub Action 編譯了一個 Docker 鏡像, 以下是使用此鏡像的 Compose 文件樣例:

version:'3.9'
services:
derper:
image:mritd/derper
container_name:derper
restart:always
ports:
-"8080:8080/tcp"
-"3456:3456/udp"
environment:
TZ:Asia/Shanghai
volumes:
-/etc/timezone:/etc/timezone
-/var/run/tailscale:/var/run/tailscale
-data:/var/lib/derper
volumes:
data:

該鏡像默認開啟了客戶端驗證, 所以請確保 /var/run/tailscale 內存在已加入 Headscale 成功的 tailscaled 實例的 sock 文件. 其他具體環境變量等參數配置請參考 Earthfile.

六、客戶端網絡調試

在調試中繼節點或者不確定網絡情況時, 可以使用一些 Tailscale 內置的命令來調試網絡.

6.1、Ping 命令

tailscale ping 命令可以用于測試 IP 連通性, 同時可以看到時如何連接目標節點的. 默認情況下 Ping 命令首先會使用 Derper 中繼節點通信, 然后嘗試 P2P 連接; 一旦 P2P 連接成功則自動停止 Ping:

~???tailscaleping10.24.0.5
pongfromk8s13(10.24.0.5)viaDERP(XXXXX)in14ms
pongfromk8s13(10.24.0.5)viaDERP(XXXXX)in13ms
pongfromk8s13(10.24.0.5)viaDERP(XXXXX)in14ms
pongfromk8s13(10.24.0.5)viaDERP(XXXXX)in12ms
pongfromk8s13(10.24.0.5)viaDERP(XXXXX)in12ms
pongfromk8s13(10.24.0.5)via3.4.170.23:2495in9ms

由于其先走 Derper 的特性也可以用來測試 Derper 連通性.

6.2、Status 命令

通過 tailscale status 命令可以查看當前節點與其他對等節點的連接方式, 通過此命令可以查看到當前節點可連接的節點以及是否走了 Derper 中繼:

~???tailscalestatus
10.24.0.8xmackovacsmacOS-
alivpnkovacslinuxactive;direct4.3.4.5:41644,tx1264rx944
aliyunkovacslinux-
bobkovacsmacOSoffline
bob-imackovacsmacOSoffline
companykovacslinuxactive;direct114.114.114.114:41642,tx1296rx880

6.3、NetCheck 命令

有些情況下我們可以確認是當前主機的網絡問題導致沒法走 P2P 連接, 但是我們又想了解一下當前的網絡環境; 此時可以使用 tailscale netcheck 命令來檢測當前的網絡環境, 此命令將會打印出詳細的網絡環境報告:

~???tailscalenetcheck
2022/10/192127portmap:[v1]GotPMPresponse;IP:123.123.123.123,epoch:297671
2022/10/192127portmap:[v1]GotPCPresponse:epoch:297671
2022/10/192127portmap:[v1]UPnPreply{Location//192.168.11.1:39735/rootDesc.xmlServer:AsusWRT/386UPnP/1.1MiniUPnPd/2.2.0USN23345-2380-45f5-34534-04421abwb7cf0:schemas-upnp-orgInternetGatewayDevice:1},"HTTP/1.1200OK
CACHE-CONTROL:max-age=120
ST:urndevice1
USN:uuid:34564645-2380-45f5-b069-sdfdght3245....."
2022/10/192127portmap:UPnPmetachanged:{Location//192.168.11.1:39735/rootDesc.xmlServer:AsusWRT/386UPnP/1.1MiniUPnPd/2.2.0USN23345-2380-45f5-b069-04421abwb7cf0:schemas-upnp-orgInternetGatewayDevice:1}

Report:
*UDP:true
*IPv4:yes,123.123.123.123:5935
*IPv6:no,butOShassupport
*MappingVariesByDestIP:false
*HairPinning:true
*PortMapping:UPnP,NAT-PMP,PCP
*CaptivePortal:true
*NearestDERP:XXXXXAliyun
*DERPlatency:
-XXXXX:9.5ms(XXXXXAliyun)
-XXXXX:53.1ms(XXXXXBandwagonHost)

七、其他補充

7.1、某些代理工具兼容性

MacOS 下使用一些增強代理工具時, 如果安裝 App Store 的官方圖形化客戶端, 則可能與這些軟件沖突, 推薦使用純命令行版本并添加進程規則匹配 tailscale 和 tailscaled 兩個進程, 讓它們始終走 DIRECT 規則即可.

7.2、MacOS 下 CPU 占用突然起飛

在使用一些網絡代理工具時, 網絡工具會設置默認路由; 這可能導致 tailscaled 無法獲取到默認路由接口, 然后進入死循環并把 CPU 吃滿, 同時會與 Derper 服務器產生大量上傳流量. 截止本文發布此問題已修復, 請使用 mian 分支編譯安裝, 具體見 ISSUE/5879.

7.3、阿里云安裝客戶端后無法更新軟件

Tailscale 默認使用 CGNAT(100.64.0.0/10) 網段作為內部地址分配網段, 目前 Tailscale 僅允許自己的接口使用此網段, 不巧的是阿里云的 DNS、Apt 源等也采用此網段. 這會導致阿里云服務器安裝客戶端后 DNS、Apt 等不可用, 解決方案目前只能修改源碼刪除掉這兩個 DROP 規則并重新編譯.

7.4、開啟路由轉發

大多數時候我們可能并不會在每個服務器上都安裝 Tailscale 客戶端, 通常只安裝 2、3 臺, 然后想通過這兩三臺轉發該內網的所有流量. 此時你需要

啟動 tailscale 時設置正確的路由提示 --advertise-routes=192.168.1.0/24 來告訴 Headscale 服務器 “我這個節點可以轉發這些地址的路由”

其他節點啟動時需要增加 --accept-routes=true 選項來聲明 “我接受外部其他節點發布的路由”

以上兩個選項配置后, 只需要 Headscale 服務器上使用 headscale node route enable -a -i XX(ID) 開啟即可. 開啟后目標節點(ID)的路由就會發布到接受外部路由的所有節點, 想要關閉的話去掉 -a 即可.

7.5、其他問題

以上也只是我個人遇到的一些問題, 如果有其他問題推薦先搜索然后查看 ISSUE, 最后不行可以看看源碼. 目前來說 Tailscale 很多選項很模糊, 可能需要閱讀源碼以后才能知道到底應該怎么做.

審核編輯:彭靜
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 帶寬
    +關注

    關注

    3

    文章

    937

    瀏覽量

    40943
  • 服務器
    +關注

    關注

    12

    文章

    9196

    瀏覽量

    85513
  • 通訊
    +關注

    關注

    9

    文章

    904

    瀏覽量

    34932

原文標題:Headscale 搭建 P2P 內網穿透

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

收藏 人收藏

    評論

    相關推薦

    請問花生殼怎么進行內網穿透的?

    花生殼是怎么進行內網穿透的,能不能用來***,還是只有組建內網的功能。
    發表于 04-18 06:02

    內網穿透詳解-基于NATAPP&NatAssist測試

    本帖最后由 1406093611 于 2019-11-13 22:41 編輯 內網穿透詳解-基于NATAPP&NatAssist TCP測試【前言】最近做一個4G模塊
    發表于 09-13 12:14

    搭建自己的IOT平臺---內網穿透

    相信大部分小伙伴在搭建環境的時候都是用虛擬機來搭建的,如果想實現外網訪問內網的話,還是比較麻煩的。在這里我就針對這個問題,寫一篇教程,教大家用最簡單的方式實現內網穿透,能做到外網訪問內網
    發表于 12-09 23:14

    穿透內網遠程控制軟件 TeamViewer_7.0.12979.0

    電子發燒友網站提供《穿透內網遠程控制軟件 TeamViewer_7.0.12979.0.exe》資料免費下載
    發表于 03-15 22:30 ?22次下載

    如何使用花生殼搭建內網穿透

    花生殼的內網穿透原理就是通過花生殼服務器把他們的公網IP地址進行翻譯,轉換成為一種私有的地址,然后在花生殼服務器上,類似做端口映射,通過不同的端口來訪問不同的內網電腦,這一切都是通過互聯網來實現的。這里我們介紹一下如何通過花生殼
    的頭像 發表于 12-09 11:29 ?1579次閱讀

    常用的內網穿透工具原理和使用方法

    nps是一款輕量級、高性能、功能強大的內網穿透代理服務器。目前支持tcp、udp流量轉發,可支持任何tcp、udp上層協議(訪問內網網站、本地支付接口調試、ssh訪問、遠程桌面,內網d
    發表于 07-10 11:20 ?1040次閱讀
    常用的<b class='flag-5'>內網</b><b class='flag-5'>穿透</b>工具原理和使用方法

    內網穿透工具的種類、原理和使用方法

    本文以滲透的視角,總結幾種個人常用的內網穿透內網代理工具,介紹其簡單原理和使用方法。
    的頭像 發表于 08-25 10:35 ?1843次閱讀
    <b class='flag-5'>內網</b><b class='flag-5'>穿透</b>工具的種類、原理和使用方法

    什么是nps?常見內網穿透工具有哪些?

    nps是一款輕量級、高性能、功能強大的內網穿透代理服務器。 目前支持tcp、udp流量轉發,可支持任何tcp、udp上層協議(訪問內網網站、本地支付接口調試、ssh訪問、遠程桌面,內網
    發表于 08-31 10:32 ?2149次閱讀
    什么是nps?常見<b class='flag-5'>內網</b><b class='flag-5'>穿透</b>工具有哪些?

    內網穿透可以帶給物聯網什么呢?

    內網穿透可以帶給物聯網什么呢?
    的頭像 發表于 10-14 15:14 ?849次閱讀

    神器!實現內網穿透的幾款工具

    frp 是一個專注于內網穿透的高性能的反向代理應用,支持 TCP、UDP、HTTP、HTTPS 等多種協議。可以將內網服務以安全、便捷的方式通過具有公網 IP 節點的中轉暴露到公網。
    的頭像 發表于 11-25 10:22 ?3219次閱讀
    神器!實現<b class='flag-5'>內網</b><b class='flag-5'>穿透</b>的幾款工具

    內網穿透工具FRP的快速入門

    在計算機網絡中,內網穿透是一種通過公網建立安全通道,使得位于內網的計算機和服務可以被外部網絡訪問。對程序員而言,內網穿透可以幫助你干什么呢?
    的頭像 發表于 01-02 11:47 ?669次閱讀

    使用cpolar內網穿透本地MariaDB數據庫

    本篇教程將使用cpolar內網穿透本地MariaDB數據庫,并實現在外公網環境下使用navicat圖形化工具遠程連接本地內網的MariaDB數據庫。
    的頭像 發表于 01-22 10:28 ?623次閱讀
    使用cpolar<b class='flag-5'>內網</b><b class='flag-5'>穿透</b>本地MariaDB數據庫

    遠程桌面內網穿透是什么?有什么作用?

    遠程桌面內網穿透指的是通過特定技術手段,將處于內網中的電腦或服務器,通過外部網絡(互聯網)進行訪問。內網穿透的主要作用是解決在
    的頭像 發表于 09-13 08:10 ?410次閱讀
    遠程桌面<b class='flag-5'>內網</b><b class='flag-5'>穿透</b>是什么?有什么作用?

    常見的內網穿透工具對比

    國內的內網穿透工具有不少選擇,適合不同的使用場景和需求。以下是一些比較常見的國內內網穿透工具:
    的頭像 發表于 11-06 14:59 ?870次閱讀

    ElfBoard技術貼|如何完成FRP內網穿透

    FRP(FastReverseProxy)是一款高效能的反向代理工具,專為解決內網穿透問題而設計。它能夠將內網中的服務安全地暴露至公網,讓外部用戶輕松實現遠程訪問。FRP支持TCP、UDP、HTTP
    的頭像 發表于 11-08 13:30 ?325次閱讀
    ElfBoard技術貼|如何完成FRP<b class='flag-5'>內網</b><b class='flag-5'>穿透</b>
    主站蜘蛛池模板: 真实国产精品视频国产网| 色淫阁色九九| 特级做A爰片毛片免费看108| 18和谐综合色区| 精品国产精品人妻久久无码五月天| 色精品极品国产在线视频| BL全肉多攻NP高H| 美女视频黄a视频全免费网站色窝| 一个人的HD高清在线观看| 国模孕妇模特季玥之粉红| 亚洲H成年动漫在线观看不卡| 国产成人无码精品久久久按摩| 日韩高清毛片| 芳草地在线观看免费视频| 欧美精品久久久久性色AV苍井 | 免费毛片试看| 91精品欧美一区二区三区| 久久综合九色综合国产| 92午夜理论第1000集 app| 蜜桃传媒在线观看入口| 99久久久国产精品免费调教| 欧美性xxx极品| 风流少妇BBWBBW69视频| 四虎国产一区| 国产午夜精品久久久久九九| 亚洲高清国产拍精品5g| 精品一区二区三区高清免费观看 | 午夜aaaa| 精品无码久久久久久久久| 中文字幕无线手机在线| 免费鲁丝片一级在线观看| 超熟女专门志| 迅雷成人论坛| 久久香蕉电影| 把极品白丝班长啪到腿软| 天天躁躁水汪汪人碰人| 加勒比一本之道高清视频在线观看 | 一区三区不卡高清影视| 蕾丝边娱乐网| 成人毛片免费在线观看| 亚洲精品乱码久久久久久中文字幕 |