从零到公网:本地电脑部署服务并实现公网访问(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}