5分钟搞定!让你的电脑在家也能被外网访问 - IPv6 DDNS 实战

你是否遇到过这些烦恼:

  • 想远程访问家里的电脑,但没有公网 IP?
  • 被动态 IP 折磨,每次地址都在变?
  • 不想花钱买昂贵的内网穿透服务?

今天,我将教你一个完全免费的解决方案,利用 IPv6 + DDNS 实现外网访问家庭网络!

为什么选择 IPv6?

随着 IPv4 地址枯竭,很多运营商已经不提供公网 IPv4 了。但是!IPv6 地址几乎是无限的,运营商都会给你一个公网 IPv6 地址。这就是我们的机会!

准备工作

  1. 一台 Windows 电脑(本文以 Windows 为例)
  2. 支持 IPv6 的网络环境(现在基本都支持,建议光猫设置桥接,路由器拨号)
  3. 一个免费的 DynV6 账号

实战步骤

1. 注册 DynV6

首先访问 DynV6官网 注册账号,创建一个域名,比如 mypc.dynv6.net。记下你的 token,后面要用。
password=后面就是你的token,下面的红框是你的域名

2. 编写自动更新脚本

首先确认你用的是哪张网卡,可以通过ipconfig命令快速查看,比如我的就是以太网 2
在这里插入图片描述

然后创建一个 PowerShell 脚本(dynv6_update.ps1)。

请注意!文件保存时必须选择编码为UTF-8 BOM!否则会乱码!

# dynv6_update.ps1

# 配置信息
$token = "你的DynV6 Token"
$hostname = "你的域名.dynv6.net"
$networkAdapterName = "以太网"  # 你的网卡名称
$logFile = "C:\Scripts\dynv6_update.log"

# 日志函数
function Write-Log {
    param($Message)
    $logMessage = "$(Get-Date -Format 'yyyy-MM-dd HH:mm:ss'): $Message"
    Add-Content -Path $logFile -Value $logMessage
    Write-Host $logMessage
}

# 获取IPv6地址
function Get-IPv6Address {
    try {
        $ipv6 = Get-NetAdapter -Name $networkAdapterName | 
                Get-NetIPAddress -AddressFamily IPv6 |
                Where-Object { 
                    $_.PrefixOrigin -eq "RouterAdvertisement" -and 
                    $_.SuffixOrigin -eq "Link" -and 
                    -not $_.IPAddress.StartsWith("fe80")
                } |
                Select-Object -ExpandProperty IPAddress -First 1
        
        if ($ipv6) {
            Write-Log "获取到IPv6地址: $ipv6"
            return $ipv6
        } else {
            Write-Log "未找到有效的IPv6地址"
            return $null
        }
    } catch {
        Write-Log "获取IPv6地址时出错: $_"
        return $null
    }
}

# 更新DynV6记录
function Update-DynV6Record {
    param($IPv6)
    
    try {
        $url = "https://dynv6.com/api/update?hostname=$hostname&ipv6=$IPv6&token=$token"
        $response = Invoke-RestMethod -Uri $url -Method Get
        Write-Log "DynV6更新成功: $response"
        return $true
    } catch {
        Write-Log "DynV6更新失败: $_"
        return $false
    }
}

# 主循环
while ($true) {
    $currentIPv6 = Get-IPv6Address
    
    if ($currentIPv6) {
        $updateResult = Update-DynV6Record -IPv6 $currentIPv6
        if ($updateResult) {
            Write-Log "DNS记录更新成功"
        } else {
            Write-Log "DNS记录更新失败"
        }
    }
    
    # 等待5分钟后再次检查
    Write-Log "等待300秒后进行下一次检查..."
    Start-Sleep -Seconds 300
}

使用说明:

  1. 配置脚本:
# 修改以下变量
$token = "你的DynV6 Token"
$hostname = "你的域名.dynv6.net"
$networkAdapterName = "以太网"  # 使用 Get-NetAdapter 查看网卡名称
  1. 创建目录和文件:
# 创建脚本目录
New-Item -ItemType Directory -Path "C:\Scripts" -Force
# 将脚本保存到该目录
  1. 测试运行:
# 手动运行测试
powershell -ExecutionPolicy Bypass -File C:\Scripts\dynv6_update.ps1 -Encoding UTF8
  1. 查看日志:
# 实时查看日志
Get-Content -Path C:\Scripts\dynv6_update.log -Wait

3. 设置自动启动

  1. 创建计划任务
    将此脚本设置为 Windows 服务:
# install_service.ps1

# 安装 NSSM(如果还没安装)
# 使用 chocolatey 安装:choco install nssm -y

# 设置服务
$serviceName = "DynV6Update"
$scriptPath = "C:\Scripts\dynv6_update.ps1"
$powershellPath = "C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe"

# 创建服务
nssm install $serviceName $powershellPath
nssm set $serviceName AppParameters "-ExecutionPolicy Bypass -NoProfile -File `"$scriptPath`""
nssm set $serviceName DisplayName "DynV6 DNS Update Service"
nssm set $serviceName Description "自动更新DynV6的DNS记录"
nssm set $serviceName Start SERVICE_AUTO_START

# 启动服务
Start-Service $serviceName
  1. 设置开机自动运行
    首先需要安装nssm这个程序来快速创建服务,我们可以用win11自带的winget来安装
winget install nssm

安装过程如下:
在这里插入图片描述
记得安装成功后,更新一下当前的环境变量

$env:Path = [System.Environment]::GetEnvironmentVariable("Path","Machine") + ";" + [System.Environment]::GetEnvironmentVariable("Path","User")

然后,Win+X(或者右键windows图标),打开终端(管理员),
在这里插入图片描述

然后执行:

 powershell -ExecutionPolicy Bypass -File C:\Scripts\install_service.ps1  -Encoding UTF8

执行后正常会输出

Set parameter "AppParameters" for service "DynV6Update".
Set parameter "DisplayName" for service "DynV6Update".
Set parameter "Description" for service "DynV6Update".
Set parameter "Start" for service "DynV6Update".
  1. 检查日志
Get-Content -Path C:\Scripts\dynv6_update.log -Wait

输入后等待片刻,会看到如下输出:
在这里插入图片描述

  1. 结束
    恭喜你,已经全部搞定,可以随时享受你的远程连接体验了!

见证奇迹的时刻

脚本运行后,你会看到类似这样的输出:

2025-02-12 15:05:04: 开始运行DynV6更新服务...
2025-02-12 15:05:06: 找到IPv6地址: 2001:xxxx:xxxx:xxxx:xxxx
2025-02-12 15:05:06: DNS记录更新成功!

现在,无论你在世界任何地方,只要输入你的域名,就能访问家里的电脑了!

物料下载

我把博文用到的脚本都已经上传到了csdn下载站,大家可以直接下载
下载本文脚本

进阶技巧

  1. 安全性提升:配置防火墙,只开放必要端口
  2. 可靠性保障:添加错误重试机制
  3. 监控告警:设置异常通知

常见问题

Q:为什么我的 IPv6 地址获取失败?
A:检查网卡名称是否正确,确保 IPv6 已启用。

Q:更新失败怎么办?
A:检查 token 是否正确,网络是否通畅。

总结

通过这个方案,你可以:

  • ✅ 完全免费使用
  • ✅ 自动更新 IP
  • ✅ 无需特殊硬件
  • ✅ 配置简单快捷

再也不用担心远程访问的问题了!快来试试吧!

写在最后

如果这篇文章对你有帮助,别忘了点赞转发!有任何问题都可以在评论区讨论。

#网络技术 #IPv6 #DDNS #远程访问 #技术教程

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小爬的老粉丝

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值