利用群晖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了

原文链接:https://blog.csdn.net/ztw249824768/article/details/132462748

© 版权声明
THE END
喜欢就支持一下吧
点赞13 分享