找回密码
 立即注册
查看: 7807|回复: 20

[教程] 【更新】我家云/粒子云 开启ipv6支持 实现内网穿透

[复制链接]

2

主题

4

回帖

96

积分

初级渣柚V2

积分
96
发表于 2019-11-29 00:12:46 | 显示全部楼层 |阅读模式
本帖最后由 pgou 于 2019-12-14 21:42 编辑

感谢各位大佬对我家云的完善!现在有很多新的固件,防掉盘和风扇控制也已经相对稳定。希望我家云越来越好用!本帖系原创,转发请注明出处和作者。
  1. 更新日志:
  2. 2019.11.29 更新首页导航适配
  3. 2019.11.28 完成全文初稿
复制代码
一、前言
ipv6其实已经相当普及,只是我们还没有感受到它的优势!
之前用过群晖,发现ipv6实现内网穿透非常方便、稳定,而且手机4G和多数地区的宽带上网默认已经支持ipv6!
没有外网ip的环境下(很多运营商就是死活不给的),ipv6是最便捷的穿透方式,没有带宽损失,稳定高效。

宽带如何开启ipv6,可以查看光猫,lede、openwrt以及梅林的设置方式,这里不赘述,善用搜索就会有答案。
可以参见这个教程https://koolshare.cn/thread-165156-1-1.html

需要检测自己的网络环境是否已经支持ipv6,访问这个地址http://test-ipv6.com/,如果能显示ipv6地址,证明就是可以的啦~
很多地方运营商没有封闭ipv6的80端口,但还是建议尽量不要用它!

二、设置支持环境
这里以Ride_Wind大,带Entware和omv的固件为例,其他固件都差不多的。
我测试的固件一般都默认支持ipv6,只要路由器开启了对应的服务,默认就能获取到地址
ssh下输入以下命令,就能查看已经获取的ip列表

  1. ip addr show eth0 | grep inet | awk '{ print $2; }' | sed 's/\/.*$//'
复制代码
如果看到XXXX:XXXX:XXXX:XXXX:XXXX:XXXX就是ipv6地址。

如果路由器设置无误,还是获取不到地址,可以查看armbian的设置
执行armbian-config,Network,Ipv6状态是否为Enable,如果不是,设置为Enable


三、开启Nginx支持
完成以上步骤,你可以在浏览器输入http://[XXXX:XXXX:XXXX:XXXX:XXXX:XXXX你的ipv6地址]/,注意有[ ],你会发现无法打开,哈哈。。。。

我就是在这里卡住的,能ping通但是无法访问。后来发现是Entware自带的Nginx没有开启ipv6支持。
我编译好了和原版配置相同,但支持ipv6的Nginx,请自行替换
链接:https://pan.baidu.com/s/165hnNZJM7v6hchqf0iT2dQ    提取码:e7av
下载并替换 /opt/sbin/nginx

修改网站配置文件/opt/etc/nginx/vhost
以navi.conf为例,在 listen 80; 下面添加 listen [::]:80 ipv6only=on;
修改之后是这样的
  1. listen 80;
  2. listen [::]:80 ipv6only=on;
复制代码
重启Nginx
  1. sudo /opt/sbin/nginx -s reload
复制代码
好了,现在打开http://[XXXX:XXXX:XXXX:XXXX:XXXX:XXXX你的ipv6地址]/ 就能看到导航菜单了!
剩下的网站配置文件修改都一样,根据需要自行操作就好

特别说明:ipv6地址在浏览器打开的话,不能直接输入,需要加[ ],例如 [IPV6地址]
如果需要访问特定的端口,地址栏输入 [IPV6地址]:端口 ,例如 [IPV6地址]:88

外网访问,参见https://koolshare.cn/thread-165156-1-1.html

普及一下基础知识
fe80开头就像169.254.x.x,是这个网段里没人给你分ip,自动协商的地址,其地址不能在网络上路由,也就是说,通常无法用于上网
现在各大运营商用的ipv6
电信是240e开头的(240e::/20)
移动是2409开头的(2409:8000::/20)
联通是2408开头的(2408:8000::/20)
其他一些标记有teredo也不是原生ipv6
原贴作者maybeonly

再次强调:很多地方运营商没有封闭ipv6的80端口,但还是建议尽量不要用它!
如果考虑到安全问题,执行ip addr show eth0,选择标注有“scope global temporary dynamic ”的全球临时动态地址

四、开启IPV6的DDNS域名解析
ip是动态的,还那么长,给它绑定个域名,设置自动更新,岂不完美
这里我就不细说了,详见https://blog.csdn.net/Imkiimki/article/details/83794355


我已经把配置好的,适合我家云使用的文件放在下面,大家可以直接下载使用
链接:https://pan.baidu.com/s/1KKKZIyQfK_0nQDnTNBpkqg  提取码:rh9a

需要说明的是,还需要在https://github.com/imki911/ArDNSPod 下载dns.conf,和ddnspod_wojiayun.sh(权限0755)放在同一目录下,dns.conf配置方式见本节第一个链接。

阿里云也有相对应的,原理一样,有需要自己找吧。

执行ddnspod_wojiayun.sh就能自动更新域名解析啦,建议设置为开机启动以及每3小时执行一次,临时ip有效期12个小时(至少我的lede是这样),短于这个时间都可以。

五、首页导航适配
wojiayun.jpg
Ride_Wind大上图样子的导航(wdmomo大的应该也一样,其他的没试,原理相同),对ipv6的支持有点小问题,导致有些功能的地址识别不出来(比如控制台),修改的办法也很简单
  1. 修改/opt/wwwroot/navi/index.php
  2. 把所有 <?php echo $IP;?>
  3. 都替换为 <?php echo $URL;?>
复制代码

至此我家云IPV6适配基本完毕。
如果第一次使用ipv6,可能会有点晕,没关系,我也是这么过来的,跟着步骤按部就班做一遍,看到实际效果就慢慢明白了。
文章很长,是因为我尽量把原理都讲了,也是大家学习了解ipv6的机会。ipv6终归是大趋势,迟早要接触的,更何况它在内网穿透方面有着先天的优势。
所有设置都在我本机测试通过,才疏学浅难免有所疏漏,大家尽可批评指正,相互交流学习。


上述所有的修改都同时兼容了ipv4和ipv6,如果各位做固件的大神觉得没问题,希望能直接集成到固件里,这样后来的人就不用一步一步修改各种配置和文件啦~


六、有待完善的细节(小白略过)
自己对Nginx编译并不熟悉,编译出来的文件虽然能用,但是大很多,有6487KB,原来的只有967KB,希望有大牛可以出面优化一下,我把配置信息贴在下面,供参考:默认nginx版本为1.16.1 执行 /opt/sbin/nginx -V 查看默认配置信息,发不上来,有需要下载看吧
链接:https://pan.baidu.com/s/1cLhNC-ccMLACGRRnW6XvdQ  提取码:gk2j
  1. 由于没有Entware 编译环境,直接在我家云搭建的编译环境,保留主要配置信息
  2. 只是增加了ipv6的支持--with-ipv6

  3. 安装了以下依赖包
  4. sudo apt-get install mlton-runtime-aarch64-linux-gnu
  5. sudo apt-get install qemu-system-arm
  6. sudo apt-get install openssl libssl-dev
  7. sudo apt-get install libpcre3 libpcre3-dev
  8. sudo apt-get install zlib1g-dev
  9. sudo apt-get install libxml2 libxml2-dev
  10. sudo apt-get install libxslt-dev
  11. sudo apt-get install libgeoip-dev
  12. sudo apt-get install libgd2-xpm libgd-dev
  13. sudo apt-get install libgd2-dev libgd-dev

  14. 参考资料
  15. https://blog.csdn.net/huangbaokang/article/details/94594797
  16. https://www.jb51.net/article/152016.htm
  17. https://blog.csdn.net/sqlquan/article/details/101165993
  18. 对作者表示感谢!

  19. Entware环境信息:

  20. 配置目录
  21. /opt/etc/nginx

  22. 站点配置
  23. /opt/etc/nginx/vhost

  24. 执行文件
  25. /opt/sbin/nginx
复制代码



评分

参与人数 1渣金 +6 收起 理由
gengming + 6 赞一个!

查看全部评分

2

主题

78

回帖

273

积分

中级渣柚V1

积分
273
发表于 2019-11-29 09:24:30 | 显示全部楼层
一脸懵逼  看不懂

33

主题

455

回帖

1217

积分

中级渣柚V3

积分
1217
发表于 2019-11-29 09:44:36 | 显示全部楼层
总之好就行了     哈哈哈哈

21

主题

358

回帖

556

积分

中级渣柚V2

积分
556
发表于 2019-11-29 15:35:20 | 显示全部楼层
我一遍看不懂,得多看几遍。

9

主题

61

回帖

343

积分

中级渣柚V1

积分
343
发表于 2019-11-29 19:15:47 来自手机 | 显示全部楼层
ipv6的地址也都是动态的吗?

2

主题

4

回帖

96

积分

初级渣柚V2

积分
96
 楼主| 发表于 2019-11-29 20:09:44 | 显示全部楼层
gzdxbc 发表于 2019-11-29 19:15
ipv6的地址也都是动态的吗?

运营商分配的时候是动态的,每次拨号都不同,身边的4G和宽带都这样
理论上也能固定,需要运营商设置

ipv6的生成方式很多,有前缀(运营商获取的)+内网编号、前缀+mac地址,用来唯一确定一个设备
所以获取设备ipv6的时候,会有好几个,一般至少都是2-3个,除了fe、fd等开头的内网地址,就是24开头外网地址

为了避免ip直接暴漏在网上,mac地址泄露、周围的设备地址被猜解等风险

ipv6生成还有另外的一种机制,就是scope global temporary dynamic,动态地址
生成方式是:前缀+随机数,随机数每次设备重新联网(重启),都会随机变化

推荐绑定域名和外部使用的时候,用scope global temporary dynamic,动态地址

33

主题

455

回帖

1217

积分

中级渣柚V3

积分
1217
发表于 2019-11-30 08:22:06 | 显示全部楼层
一脸懵逼  看不懂

4

主题

259

回帖

656

积分

版主

积分
656
发表于 2019-11-30 09:28:31 | 显示全部楼层
感谢楼主分享!

1

主题

176

回帖

294

积分

中级渣柚V1

积分
294
发表于 2019-11-30 10:12:07 | 显示全部楼层
没有看懂。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|矿渣社区 ( 黔ICP备2024020525号-1 )

GMT+8, 2024-6-22 04:04 , Processed in 0.069952 second(s), 8 queries , Redis On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表