【更新】我家云/粒子云 开启ipv6支持 实现内网穿透
本帖最后由 pgou 于 2019-12-14 21:42 编辑感谢各位大佬对我家云的完善!现在有很多新的固件,防掉盘和风扇控制也已经相对稳定。希望我家云越来越好用!本帖系原创,转发请注明出处和作者。
更新日志:
2019.11.29 更新首页导航适配
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列表
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:///,注意有[ ],你会发现无法打开,哈哈。。。。
我就是在这里卡住的,能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;
修改之后是这样的
listen 80;
listen [::]:80 ipv6only=on;重启Nginx
sudo /opt/sbin/nginx -s reload好了,现在打开http:/// 就能看到导航菜单了!
剩下的网站配置文件修改都一样,根据需要自行操作就好
特别说明: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是这样),短于这个时间都可以。
五、首页导航适配
Ride_Wind大上图样子的导航(wdmomo大的应该也一样,其他的没试,原理相同),对ipv6的支持有点小问题,导致有些功能的地址识别不出来(比如控制台),修改的办法也很简单修改/opt/wwwroot/navi/index.php
把所有 <?php echo $IP;?>
都替换为 <?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
由于没有Entware 编译环境,直接在我家云搭建的编译环境,保留主要配置信息
只是增加了ipv6的支持--with-ipv6
安装了以下依赖包
sudo apt-get install mlton-runtime-aarch64-linux-gnu
sudo apt-get install qemu-system-arm
sudo apt-get install openssl libssl-dev
sudo apt-get install libpcre3 libpcre3-dev
sudo apt-get install zlib1g-dev
sudo apt-get install libxml2 libxml2-dev
sudo apt-get install libxslt-dev
sudo apt-get install libgeoip-dev
sudo apt-get install libgd2-xpm libgd-dev
sudo apt-get install libgd2-dev libgd-dev
参考资料
https://blog.csdn.net/huangbaokang/article/details/94594797
https://www.jb51.net/article/152016.htm
https://blog.csdn.net/sqlquan/article/details/101165993
对作者表示感谢!
Entware环境信息:
配置目录
/opt/etc/nginx
站点配置
/opt/etc/nginx/vhost
执行文件
/opt/sbin/nginx
一脸懵逼看不懂 总之好就行了 哈哈哈哈:D 我一遍看不懂,得多看几遍。 ipv6的地址也都是动态的吗? 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,动态地址
一脸懵逼看不懂
感谢楼主分享! 没有看懂。:Q