当前位置:   article > 正文

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

群晖 dnspod 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

第一部分修改

源文件如下:

  1. if ($argc !== 5) {
  2. echo 'badparam';
  3. exit();
  4. }
  5. $account = (string)$argv[1];
  6. $pwd = (string)$argv[2];
  7. $hostname = (string)$argv[3];
  8. $ip = (string)$argv[4];

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

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

 结果如下:

  1. if ($argc !== 5) {
  2. echo 'badparam';
  3. exit();
  4. }
  5. //利用网络上的api获取本机ipv6地址
  6. $url = 'https://api6.ipify.org/';
  7. $ch = curl_init();
  8. $options = array(
  9. CURLOPT_URL=>$url,
  10. CURLOPT_RETURNTRANSFER=>true,
  11. );
  12. curl_setopt_array($ch, $options);
  13. $ip = curl_exec($ch);
  14. $account = (string)$argv[1];
  15. $pwd = (string)$argv[2];
  16. $hostname = (string)$argv[3];

第二部分修改

源文件如下:

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

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

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

第三部分修改 

源文件如下:

  1. $recordID = -1;
  2. $record_total = $json['info']['record_total'];
  3. for ($i = 0; $i < $record_total; $i++) {
  4. if (($json['records'][$i]['name'] === $subDomain) and ($json['records'][$i]['type'] === 'A')) {
  5. $recordID = $json['records'][$i]['id'];
  6. break;
  7. }
  8. }
  9. if ($recordID === -1) {
  10. echo 'nohost';
  11. curl_close($req);
  12. exit();
  13. }
  14. $url = 'https://dnsapi.cn/Record.Modify';
  15. $post = array(
  16. 'login_token'=>$account.','.$pwd,
  17. 'domain_id'=>$domainID,
  18. 'record_id'=>$recordID,
  19. 'sub_domain'=>$subDomain,
  20. 'value'=>$ip,
  21. 'record_type'=>'A',
  22. 'record_line'=>'默认',
  23. 'format'=>'json'
  24. );

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

  1. $recordID = -1;
  2. $record_total = $json['info']['record_total'];
  3. for ($i = 0; $i < $record_total; $i++) {
  4. if (($json['records'][$i]['name'] === $subDomain) and ($json['records'][$i]['type'] === 'AAAA')) {
  5. $recordID = $json['records'][$i]['id'];
  6. break;
  7. }
  8. }
  9. if ($recordID === -1) {
  10. echo 'nohost';
  11. curl_close($req);
  12. exit();
  13. }
  14. $url = 'https://dnsapi.cn/Record.Modify';
  15. $post = array(
  16. 'login_token'=>$account.','.$pwd,
  17. 'domain_id'=>$domainID,
  18. 'record_id'=>$recordID,
  19. 'sub_domain'=>$subDomain,
  20. 'value'=>$ip,
  21. 'record_type'=>'AAAA',
  22. 'record_line'=>'默认',
  23. 'format'=>'json'
  24. );

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

结束

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

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

本文内容由网友自发贡献,转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/183924
推荐阅读
  

闽ICP备14008679号