|
本帖最后由 一个大草包 于 2020-10-23 20:46 编辑
华硕路由 httpd只监听ipv4的80口,开了ipv6的ddns也是无法访问。
解决办法就是:把ipv6转发到ipv4去,需要安装socat或者6tunnel。
6tunnel直接下载附件就可以,放到/jffs下(适用于k2pb1以及armv7路由)。
浏览器进入路由,打开”工具箱“--”用户脚本“--”外网连接成功脚本“,填入如下内容,保存。
- #!/bin/sh
- ip -6 route add 0::/0 dev ppp0
- ip -6 route add default dev ppp0 metric 1
- sleep 30
- /jffs/6tunnel -6 80 -4 192.168.1.1 80
- cru a ddns "* * * * * /jffs/ddns-start"
- cru a 6t "* * * * * /jffs/6t.sh"
复制代码
为了防止6tunnel挂掉,监控其进程,如果进程不在,则重新运行6tunnel。
内容如下:
- #!/bin/sh
- ps |grep '6tunnel' |grep -v grep
- if [ $? -ne 0 ]
- then
- echo "start....."
- /jffs/6tunnel -6 443 -4 192.168.1.1 8443
- echo "done....."
- else
- echo "runing....."
- fi
复制代码 如果你不用6tunnel,还有socat可以用,可以先装entware后再装socat,当然可以自己编译,但有可能k2p装不下,刷完机只有4M空间。
如果你用dynv6的ddns,可以直接套用以下。
写入/jffs下ddns-start,请自行修改红色部分。
#!/bin/sh -e
hostname=xxxxxx.dynv6.net
device=br0
file=/tmp/ipv6.txt
token=xxxxxxxxxxxxxxxxxxxx
[ -e $file ] && old=`cat $file`
if [ -z "$hostname" -o -z "$token" ]; then
echo "Usage: token=<your-authentication-token> [netmask=64] $0 your-name.dynv6.net [device]"
exit 1
fi
if [ -z "$netmask" ]; then
netmask=128
fi
if [ -n "$device" ]; then
device="dev $device"
fi
address=$(ip -6 addr list scope global $device | grep -v " fd" | sed -n 's/.*inet6 \([0-9a-f:]\+\).*/\1/p' | head -n 1)
if [ -e /usr/bin/curl ]; then
bin="curl -fsS"
elif [ -e /usr/sbin/wget ]; then
bin="wget -O-"
else
echo "neither curl nor wget found"
exit 1
fi
if [ -z "$address" ]; then
echo "no IPv6 address found"
exit 1
fi
# address with netmask
current=$address/$netmask
if [ "$old" = "$current" ]; then
echo "IPv6 address unchanged"
exit
fi
# send addresses to dynv6
$bin "http://dynv6.com/api/update?hostname=$hostname&ipv6=$current&token=$token"
# save current address
echo $current > $file
如果你有ssl证书:
把证书传到/jffs下,浏览器进入路由,打开”工具箱“--”用户脚本“--”外网连接成功脚本“,填入如下内容,保存。- #!/bin/sh
- ip -6 route add 0::/0 dev ppp0
- ip -6 route add default dev ppp0 metric 1
- sleep 30
- mount -o bind /jffs/xxxxxx.key /etc/key.pem
- mount -o bind /jffs/fullchain.cer /etc/cert.pem
- service restart_httpd
- /jffs/6tunnel -6 443 -4 192.168.1.1 8443
- cru a ddns "* * * * * /jffs/ddns-start"
- cru a 6t "* * * * * /jffs/6t.sh"
复制代码
还有,别忘记了开放端口。浏览器进入路由,打开”工具箱“--”用户脚本“--”防火墙脚本“,填入如下内容,保存。
- #!/bin/sh
- ip6tables -I INPUT -p tcp --dport 22 -j ACCEPT
- ip6tables -I INPUT -p tcp --dport 80 -j ACCEPT
- ip6tables -I INPUT -p tcp --dport 443 -j ACCEPT
复制代码
重启。
然后就可以直接用ipv6打开k2pb1梅林界面了。
当然你家里有n1或群晖等,也可以用nginx或caddy反代,但是只能进路由看看,关键操作是不行的。
|
本帖子中包含更多资源
您需要 登录 才可以下载或查看,没有账号?立即注册
×
|