利用群晖nas自带DDNS实现IPV6内网穿透

前提条件

笔者使用的DDNS服务商为dnspod.cn,其他网站设置类似,只需要在/usr/syno/bin/ddns/目录下找到对应服务商的php文件进行修改即可。

本文针对没有公网IPV4地址,网络环境支持IPV6的群晖用户,修改后的文件在文章顶部,可直接下载替换

准备工作

1.群晖在控制面板-终端机和SNMP中启用SSH功能

2.putty等软件

3.dnspod.cn顶级域名1个(笔者使用的.asia一年4块钱)

4.dnspod.cn id及token(请自行百度相关教程)

5.在dnspod.cn的管理控制台中随便添加一条记录类型为AAAA,指向任意IPV6地址的解析记录

教程开始

1.使用putty连接黑群晖,首先输入用户名后回车,然后输入密码再次回车,成功进入群晖的linux系统

2.输入命令:cd /usr/syno/bin/ddns/

3.输入命令:ls,可以看到目录下有多个DDNS服务商的php脚本

4.输入命令:sudo cp dnspod_cn.php dnspod_cn.php.bak,对原始文件进行备份

5.输入命令:sudo vi dnspod_cn.php

第一部分修改

源文件如下:

if ($argc !== 5) {
    echo 'badparam';
    exit();
}

$account = (string)$argv[1];
$pwd = (string)$argv[2];
$hostname = (string)$argv[3];
$ip = (string)$argv[4];

删除$ip = (string)$argv[4];这一行,并在}下方添加如下代码:

//利用网络上的api获取本机ipv6地址
$url = 'https://api6.ipify.org/';
$ch = curl_init();
$options = array(
	CURLOPT_URL=>$url,
	CURLOPT_RETURNTRANSFER=>true,
);
curl_setopt_array($ch, $options);
$ip = curl_exec($ch);

 结果如下:

if ($argc !== 5) {
    echo 'badparam';
    exit();
}

//利用网络上的api获取本机ipv6地址
$url = 'https://api6.ipify.org/';
$ch = curl_init();
$options = array(
	CURLOPT_URL=>$url,
	CURLOPT_RETURNTRANSFER=>true,
);
curl_setopt_array($ch, $options);
$ip = curl_exec($ch);

$account = (string)$argv[1];
$pwd = (string)$argv[2];
$hostname = (string)$argv[3];

第二部分修改

源文件如下:

// only for IPv4 format
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4)) {
    echo "badparam";
    exit();

把IPV4修改为IPV6,结果如下:

// only for IPv6 format
if (!filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV6)) {
    echo "badparam";
    exit();

第三部分修改 

源文件如下:

$recordID = -1;
$record_total = $json['info']['record_total'];
for ($i = 0; $i < $record_total; $i++) {
    if (($json['records'][$i]['name'] === $subDomain) and ($json['records'][$i]['type'] === 'A')) {
        $recordID = $json['records'][$i]['id'];
        break;
    }
}

if ($recordID === -1) {
    echo 'nohost';
    curl_close($req);
    exit();
}

$url = 'https://dnsapi.cn/Record.Modify';
$post = array(
	'login_token'=>$account.','.$pwd,
    'domain_id'=>$domainID,
    'record_id'=>$recordID,
    'sub_domain'=>$subDomain,
    'value'=>$ip,
    'record_type'=>'A',
    'record_line'=>'默认',
    'format'=>'json'
);

把正数第四行和倒数第四行两个'A'修改为'AAAA',如下:

$recordID = -1;
$record_total = $json['info']['record_total'];
for ($i = 0; $i < $record_total; $i++) {
    if (($json['records'][$i]['name'] === $subDomain) and ($json['records'][$i]['type'] === 'AAAA')) {
        $recordID = $json['records'][$i]['id'];
        break;
    }
}

if ($recordID === -1) {
    echo 'nohost';
    curl_close($req);
    exit();
}

$url = 'https://dnsapi.cn/Record.Modify';
$post = array(
	'login_token'=>$account.','.$pwd,
    'domain_id'=>$domainID,
    'record_id'=>$recordID,
    'sub_domain'=>$subDomain,
    'value'=>$ip,
    'record_type'=>'AAAA',
    'record_line'=>'默认',
    'format'=>'json'
);

:wq退出保存,至此文件修改完成

结束

回到群晖的控制面板中,依次点击外部访问-DDNS-新增,选择服务商为DNSPod.cn,主机名称填写你申请的顶级域名如xxxx.asia,用户名和密码填写准备工作4中获取的ID和token,点击确定即可。

等待1分钟,在浏览器中输入你的域名xxxx.asia,你就可以在远程网络环境中访问你的群晖nas了

  • 1
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 5
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值