【從零到公網】本地電腦部署服務并實現公網訪問(IPv4/IPv6/DDNS 全攻略)

從零到公網:本地電腦部署服務并實現公網訪問(IPv4/IPv6/DDNS 全攻略)

在這里插入圖片描述

適用場景:本地 API 服務、大模型推理服務、NAS、遠程桌面等需要公網訪問的場景
關鍵詞:公網 IP、端口映射、內網穿透、IPv6、Cloudflare DDNS


一、背景

很多開發者在本地電腦上部署了服務(例如大模型 API),希望能讓外網直接訪問。但現實中,運營商 NAT、雙層路由、動態 IP 等問題讓公網訪問變得復雜。

本文將結合實際案例,詳細講解如何判斷自己的網絡環境,并給出 IPv4 端口映射、內網穿透、IPv6 直連、Cloudflare DDNS 等多種解決方案。


二、判斷是否有公網 IPv4

1. 查詢當前出口 IP

在命令行執行:

curl myip.ipip.net

示例輸出:

當前 IP: 112.123.15.45來自于: 中國 安徽 合肥 聯通

這就是你當前的公網出口 IP。

2. 查看路由器 WAN 口 IP

  • 登錄路由器后臺(常見地址 192.168.0.1 / 192.168.1.1
  • 查看 WAN 口 IP
  • 對比 WAN 口 IP 與公網查詢結果:
    • 一致 → 你有公網 IP
    • 不一致 → 你在運營商 NAT 后面(CGNAT)

3. 判斷是否是私有地址

常見私有網段:

  • 10.0.0.0/8
  • 172.16.0.0/12
  • 192.168.0.0/16
  • 100.64.0.0/10(運營商級 NAT)

如果 WAN 口 IP 在這些網段內,就不是公網 IP。


三、IPv4 公網訪問方案

方案 1:有公網 IP(推薦)

  1. 在路由器做 端口映射(Port Forwarding)
    將公網端口(如 8000)映射到本機內網 IP(如 192.168.0.100:8000)
  2. Windows 防火墻放行該端口
  3. 外網訪問:
    http://公網IP:8000
    

方案 2:雙層 NAT(光貓 + 路由器)

  • 光貓 WAN 口是公網 IP → 光貓端口映射到路由器,再由路由器映射到本機
  • 光貓 WAN 口是內網 IP(如 100.x.x.x) → 運營商 NAT,無法直接映射

方案 3:運營商 NAT(無公網 IP)

  • 聯系運營商申請“公網 IPv4”或“去 NAT 服務”
  • 或使用 內網穿透
    • frp(需公網 VPS)
    • cpolar(國內服務)
    • 花生殼(帶域名)
    • ngrok(國外)

四、IPv6:突破 NAT 限制的利器

IPv6 地址資源充足,運營商一般會直接分配公網 IPv6,不需要 NAT。

1. 檢測 IPv6

訪問 test-ipv6.com,得分 10/10 表示可用。

Windows 查看:

ipconfig

找到 2408: / 2a0: 開頭的 IPv6 地址。

2. 開啟 IPv6

  • 光貓:開啟 IPv4/IPv6 雙棧
  • 路由器:開啟 IPv6(DHCPv6-PD)
  • 本機:確保網絡適配器啟用 IPv6

3. 外網訪問

直接用:

http://[你的IPv6地址]:端口

注意 IPv6 地址要用方括號。


五、用 Cloudflare DDNS 固定 IPv6 域名

如果 IPv6 地址會變,可以用 Cloudflare API 自動更新 AAAA 記錄。

1. 獲取必要信息

  • Zone ID(域名唯一標識)
  • API Token(DNS 編輯權限)
  • 目標子域名(如 api.example.com

2. 添加 AAAA 記錄

在 Cloudflare DNS 頁面添加 AAAA 記錄,IPv6 地址先隨便填一個。

3. Python DDNS 腳本

import requests, subprocessZONE_ID = "你的ZoneID"
RECORD_ID = "你的RecordID"
API_TOKEN = "你的APIToken"
RECORD_NAME = "api.example.com"def get_ipv6():result = subprocess.run("ipconfig", shell=True, capture_output=True, text=True)for line in result.stdout.splitlines():if "240" in line or "2a0" in line:return line.strip().split()[0].split("/")[0]return Noneipv6 = get_ipv6()
if ipv6:url = f"https://api.cloudflare.com/client/v4/zones/{ZONE_ID}/dns_records/{RECORD_ID}"headers = {"Authorization": f"Bearer {API_TOKEN}", "Content-Type": "application/json"}data = {"type": "AAAA", "name": RECORD_NAME, "content": ipv6, "ttl": 120, "proxied": False}print(requests.put(url, headers=headers, json=data).json())
else:print("未找到公網IPv6地址")

4. 定時運行

  • Windows:任務計劃程序
  • Linux:crontab

六、總結

場景方案
有公網 IPv4路由器端口映射
雙層 NAT光貓橋接 + 路由器撥號
運營商 NAT申請公網 IP / 內網穿透
IPv6 可用直接公網訪問,配合 DDNS 固定域名

建議:如果 IPv6 可用,優先走 IPv6 直連 + DDNS,配置簡單、延遲低、穩定性高。


后記
本文從判斷公網 IP 開始,到 IPv4/IPv6 的公網訪問方案,再到 Cloudflare DDNS 的自動更新,覆蓋了本地服務公網化的常見路徑。
無論你是部署大模型 API,還是搭建 NAS、遠程桌面,都可以按本文思路實現公網訪問。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/922413.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/922413.shtml
英文地址,請注明出處:http://en.pswp.cn/news/922413.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

模塊二 落地微服務

11 | 服務發布和引用的實踐 服務發布和引用常見的三種方式:Restful API、XML配置以及IDL文件。今天我將以XML配置方式為例,給你講解服務發布和引用的具體實踐以及可能會遇到的問題。 XML配置方式的服務發布和引用流程 1. 服務提供者定義接口 服務提供者發…

C++程序員速通C#:從Hello World到數據類型

C程序員光速入門C#(一):總覽、數據類型、運算符 一.Hello world! 隨著.NET的深入人心,作為一個程序員,當然不能在新技術面前停而止步,面對著c在.net中的失敗,雖然有一絲遺憾,但是我們應該認識到…

Linux相關概念和易錯知識點(44)(IP地址、子網和公網、NAPT、代理)

目錄1.IP地址(1)局域網和公網①局域網a.網關地址b.局域網通信②運營商子網③公網(2)NAPT①NAPT過程②理解NAPT③理解源IP和目的IPa.目的IPb.源IP③最長前綴匹配④NAT技術缺陷2.代理服務(1)正向代理&#xf…

工業智能終端賦能自動化生產線建設數字化管理

在當今數字化浪潮的推動下,自動化生產線正逐漸成為各行各業提升效率和降低成本的重要選擇。隨著智能制造的深入發展,工業智能終端的引入不僅為生產線帶來了技術革新,也賦予了數字化管理新的動力。一、工業智能終端:一體化設計&…

【Vue2手錄06】計算屬性Computed

一、表單元素的v-model綁定(核心場景) v-model 是Vue實現“表單元素與數據雙向同步”的語法糖,不同表單元素的綁定規則存在差異,需根據元素類型選擇正確的綁定方式。 1.1 四大表單元素的綁定規則對比表單元素類型綁定數據類型核心…

FPGA入門-數碼管靜態顯示

19. 數碼管的靜態顯示 在許多項目設計中,我們通常需要一些顯示設備來顯示我們需要的信息,可以選擇的顯示設備有很多,而數碼管是使用最多,最簡單的顯示設備之一。數碼管是一種半導體發光器件,具有響應時間短、體積小、…

深入理解大語言模型(5)-關于token

到目前為止對 LLM 的描述中,我們將其描述為一次預測一個單詞,但實際上還有一個更重要的技術細 節。即 LLM 實際上并不是重復預測下一個單詞,而是重復預測下一個 token 。對于一個句子,語言模型會 先使用分詞器將其拆分為一個個 to…

視覺智能的「破壁者」——Transformer如何重塑計算機視覺范式?三大CV算法論文介紹 ViTMAESwin Transformer

當自然語言處理領域因Transformer而煥發新生時,計算機視覺卻長期困于卷積神經網絡的架構桎梏。直到ViT(Vision Transformer)的橫空出世,才真正打破了視覺與語言之間的壁壘。它不僅是技術的革新,更是范式革命的開始&…

Java 并發容器源碼解析:ConcurrentSkipListSet 行級深度剖析

Java 并發容器源碼解析:ConcurrentSkipListSet 行級深度剖析 本文將深入解析 Java 并發容器 ConcurrentSkipListSet 的核心源碼,結合流程圖、代碼注釋、設計思想、優缺點分析、業務場景、調試與優化、集成方案、高階應用等,幫助你系統掌握這款…

答題卡自動識別案例

目錄 1.答題卡自動批閱整體實現思路 2.關鍵技術步驟與原理 答題卡區域提取 ①輪廓檢測并排序 ②執行透視變換 ③找到每一個圓圈輪廓 ④先對所有圓圈輪廓從上到下排序 ⑤再通過循環每次只提取出五個輪廓再進行從左到右的排序 3.完整代碼 1.答題卡自動批閱整體實現思路 …

C#實現通過POST實現讀取數據

C# POST請求與MySQL數據存儲實現下面是一個完整的C#解決方案,用于發送POST請求、接收響應數據,并將數據保存到MySQL數據庫中。完整代碼實現 using System; using System.Net.Http; using System.Text; using System.Threading.Tasks; using Newtonsoft.J…

Java 字符編碼問題,怎么優雅地解決?

網羅開發(小紅書、快手、視頻號同名)大家好,我是 展菲,目前在上市企業從事人工智能項目研發管理工作,平時熱衷于分享各種編程領域的軟硬技能知識以及前沿技術,包括iOS、前端、Harmony OS、Java、Python等方…

STL之string類(C++)

1.string類核心定位std::string 本質是對 “字符序列” 的封裝,內部通過動態數組存儲字符,并自動管理內存(分配、擴容、釋放),對外提供了簡潔的接口用于字符串的創建、修改、拼接、查找等操作。1.1 使用前提頭文件包含…

[Maven 基礎課程]第一個 Maven 項目

idea 新建一個項目: 來到 New Project 頁面: 這里我們有兩種方式創建 maven 項目,一種是自定義創建,另一種是使用 maven 模版項目創建。 自定義創建 maven 項目 基本配置 Name: first_maven_project 項目名稱,設為 …

uni小程序中使用Echarts圖表

前言 今天雞米花給大家帶來的是在uni里面使用echarts,能夠完美支持和PC端一樣的效果,我這邊的工程是uni轉為微信小程序,用的是vue3vite來寫的,然后實現了豎屏和橫屏的展示方式,好了獻上效果圖。 效果圖 一、引入插件 這…

從FOTA測試到汽車電子安全體系的啟蒙之旅

我是穿拖鞋的漢子,魔都中堅持長期主義的汽車電子工程師。 老規矩,分享一段喜歡的文字,避免自己成為高知識低文化的工程師: 做到欲望極簡,了解自己的真實欲望,不受外在潮流的影響,不盲從,不跟風。把自己的精力全部用在自己。一是去掉多余,凡事找規律,基礎是誠信;二是…

stm32中 中斷和事件的區別

一、核心概念比喻想象一下工廠里的一個報警系統:?中斷 (Interrupt)??:就像火警警報器響了。它的目的是通知管理員(CPU)??:“著火了!”。管理員聽到后,會停下手中的工作(保存現場…

深入理解MySQL主從架構中的Seconds_Behind_Master指標

問題:主從延遲與寫后讀不一致 在典型的 MySQL 主從架構下,所有寫操作都會直接進入主庫,而讀操作大多分流到從庫,從而實現讀寫分離,緩解主庫壓力。 然而 MySQL 的復制機制是異步的:主庫先寫入 binlog&#…

MySQL安裝(linux版本)

MySQL安裝(linux版本) 課程地址 08. 進階-MySQL安裝(linux版本)_嗶哩嗶哩_bilibili 安裝過程中所有需要的程序都放在網盤里了 通過網盤分享的文件:虛擬機 鏈接: https://pan.baidu.com/s/1eLMD2iq1uEujNN7mWs2dIg?pwdckmh 提取碼: ckmh …

OpenCV 圖像雙三次BSpline插值

文章目錄 一、簡介 二、實現代碼 三、實現效果 參考資料 一、簡介 之前我們介紹過BSpline曲線,一條B樣條曲線可以被定義成 n + 1 n+1 n+1個控制點的集合 { Q i } i = 0 n {\{Q_i\}}^{n}_{i=0}