RedmiAC2100关闭 ipv6防火墙
需要先开启SSH。
开启SSH、刷breed等参考:
https://github.com/AXFOX/openwrt-AC2100
关闭ipv6防火墙
重启后防火墙恢复。
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -P FORWARD ACCEPT
解决ipv6防火墙重启后自启动的问题
编辑/etc/rc.local
vim /etc/rc.local
加入以下命令 (注意写在exit 0之前)
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -P FORWARD ACCEPT
ipv6流量频频被阻2022年1月8日夜 更新
虽然理论上按照这么做ipv6流量应该没有受阻的理由了,但是实际上还是隔段时间时不时的发现防火墙又挡住了流量。(恩山的大佬也提到过这点,哪怕不重启,防火墙也会莫名其妙的恢复。)
于是我又想起来Linux的计划任务。可事实证明,我虽然control -e 加了一行十分钟执行一次指定脚本,问题依旧,甚至这两天手动执行都无法从外部通过ipv6访问内部的我家云设备。
我不明白为什么这样,忍了两天之后,今天又连上红米AC2100看了看。
先放几张截图和不同环境下访问的报错吧。
首先是手机开启LTE 网络使用via浏览器访问home.xfox.fun:88 ,报错:ERR_CONNECTION_ABORTED
然后是直接访问[IPv6 address]:88 ,报错:ERR_CONNECTION_REFUSED
前者我觉得没什么价值,但是后者明显是因为路由器防火墙把ipv6流量挡住了
开始认真检查路由器ipv6防火墙问题
先进/etc执行chmod 777 MyControl.sh
一遍确保脚本权限没问题(因为我ls看的时候文件名是白色的,这权限貌似就不太对了吧?改过权限再ls看文件名已经变成绿色了。)
然后我尝试手动执行了我自己写的脚本,然后发现有报错,这就很尴尬了。之前编写的时候,我还真的没测试一下能否运行,也许是宝塔用惯了,没有形成手动加上变量环境的习惯,所以,赶紧查了一下。通过env输出当前的变量环境信息(因为我手动直接执行命令就没报错)然后在文件顶部加上了:
#!/bin/ash
PATH=/usr/sbin:/usr/bin:/sbin:/bin
export PATH
小米路由器可能为了节约硬件资源开销没用常见的sh,用的是ash。
修改后再次执行,依然是那个报错,那到底为啥报错呢?
看意思是太多连接,但是这个连接指什么?另外,看上去我还复制错了命令,开头少了个字母i,真是巨丢人。ip6tables: Too many links.
我猜意思是环境变量太多了,所以我去手动翻腾目录看了看(没有whereis),这个命令的文件在/usr/sbin
所以我试着简单修改一下,删除:/sbin:/bin
,现在MyControl文件如下
#!/bin/ash
PATH=/usr/sbin:/usr/bin
export PATH
#Turn off ipv6 firewall
ip6tables -F
ip6tables -X
ip6tables -P INPUT ACCEPT
ip6tables -P OUTPUT ACCEPT
ip6tables -P FORWARD ACCEPT
修改后ECS 切到命令模式输入:wq 按下Enter保存。
再次运行,终于没报错了!
那么确定ipv6防火墙是有问题的,但是现在应该解决了
不过,我的笔记本连上家里的WIFI访问home.xfox.fun:88依旧:ERR_CONNECTION_TIMED_OUT
,手机流量访问也还是ERR_CONNECTION_ABORTED
一定是还有其他问题!
此外,我发现ipv6测试站显示DNS有问题。
看上去路由器IPv6 DNS可能有问题所以,既然DNS有问题,那就试试不用DNS什么样。
直接通过IP:port访问设备,先是笔记本在内网通过公网ipv6地址访问。
访问成功,页面正常加载,手机LTE测试页面也正常加载。
再次尝试在手机端 domain:port访问,无论是LTE还是WLAN,结局一样ERR_CONNECTION_TIMED_OUT
我的手机已经开启了DOT,通过Termux ping6 无论是LTE还是WLAN都解析到了正确的ipv6地址,那么我的DDNS显然依旧正常工作,但是不论网络上前者还是后者ping 都没有收到回复。通过笔记本(Linux Mint20.4未开启DOT) ping6 也解析到了正确地址,但是也没有收到回复。本地客户端设备不开ipv6 DNS解析正常,排除运营商DNS污染影响解析结果的情况,也排除路由器ipv6DNS异常
那为什么通过域名就无法访问呢?难道是GFW为了限制ipv6 web服务,直接把用域名访问的包抛掉了?
你的 DNS 服务器(可能由运营商提供)没有接入或没有配置 IPv6,将来这可能会妨碍你访问纯 IPv6 网站。
我忽然发现,无论我用本地宽带开启WLAN还是手机用LTE,你的 DNS 服务器(可能由运营商提供)没有接入或没有配置 IPv6,将来这可能会妨碍你访问纯 IPv6 网站。
这段文字在测试页面始终出现,而我很清楚记得之前我刚回家测试的时候结果是10项测试全部通过,根本就没报DNS的问题。
这么说本地运营商的ipv6 DNS现在真的有点问题?
奇怪的追踪记录
xfox@xfox-ThinkPad-E14-Gen-3~$ traceroute6 home.xfox.fun
traceroute to home.xfox.fun (2409:8a44:975:2360:a454:4bff:fecb:77f6) from 2409:8a44:976:9ac0::c4e, 30 hops max, 24 byte packets
1 2409:8a44:976:9ac0::1 (2409:8a44:976:9ac0::1) 2.8312 ms 2.6231 ms 2.0860 ms
2 2409:8088:0:801::2813 (2409:8088:0:801::2813) 5.0714 ms 11.4826 ms 9.7456 ms
3 * * *
4 * * *
5 * * *
6 * * *
下面就没有了,全都是*,我不理解这怎么回事。
连续两次重启我家云,手动执行DDNS脚本后web服务恢复正常了!2022年1月9日17:33:05补充
我刚才手动测试了一下,和昨天晚上结果一样不能访问。索性重启大法再试试。
SSH连上,ifconfig,我发现有三个长的很像的ipv6长ip,但是只有访问第一个才能访问到web页面。看上去是昨天晚上两次重启路由器造成的,不过这没关系,既然没有刷新,那把armbian也重启一下好了。(由于习惯性打开SSH执行最后一次执行的命令,所以重启了两次)然后ifconfig看看,这次是一短一长两个公网ipv6地址和一个fe80的内网地址了。然后手动执行一次DDNS脚本以确保解析到新的ip地址。
有意思的事情出现了!当我直接访问home.xfox.fun时,竟然打开了宝塔没有找到站点的默认页面,访问成功了?!(之前我在不同时间做过两次测试,最终认定不能使用domain直接访问,也就是80端口不能用,连接会被掐,但是这次莫名其妙的就又能用了?!)
不管怎么样,既然现在使用域名访问80端口的链接也不会被阻断,我就修改了宝塔配置默认使用80。
2022年1月30日更新 :80又墙了
2022年6月6日更新
crontab -e #准备修改定时执行规则
添加如下:
*/1 * * * * /etc/MyControl.sh #每1分钟运行一次,我就不信这样防火墙还能时不时自动打开把我流量卡了。
如果本文没有继续更新则证明一分钟执行一次是有效的。
不能套个cf的cdn嘛?这样应该就可以支持ipv4的设备访问了吧
可以但这与我目的无关。
太感谢, 一直被这个问题困扰.终于解决ipv6出站的问题.
挺烦人的,国内愿意主动提供这些功能齐全的软硬件的消费级产品厂商我没找到一家,有些比较开放的也是缺胳膊少腿还很贵,真的挺无奈的,这会浪费很多时间。