OpenWRT 配置PPPoE IPv6 NAT

本文发布于 ,内容可能和实际情况存在出入。如果文章存在错误欢迎指正,我会根据情况对文章进行修改或做隐藏处理

一直以来都是在使用TUNA的6in4隧道,前几天发现TUNA取消了公网DNS的访问,感觉6in4被限制也是迟早的事了
今天进光猫打开v6之后尝试着拨了一下,发现联通给了一个/128的v6地址,每次拨号会变(联通真的抠
QQ截图20190516190833.png

参考着之前isatap的脚本,和网上找了一些文章,做了一个cron脚本用来在开机和重连之后更新路由

ULA前缀为c000

#!/bin/sh
LASTIP=$(cat /tmp/lastip.txt)
IP6=$(/sbin/ifconfig -a | grep inet6 | grep -v c000 | grep -v fe80 | grep -v ::1 | awk '{print $3}' | sed 's/\/64//g')

if [ $LASTIP = $IP6 ] ; then
    echo "IP NOT CHANGED ($LASTIP) to ($IP6)"
else
    echo "IP CHANGED ($LASTIP) to ($IP6)"
    
    IP6R=$(route -A inet6 | grep ::/0 | grep pppoe-wan | awk '{print $2}' | grep fe80)
    
    echo "Set up iptables rules"
    ip6tables -t nat -F
    ip6tables -t nat -A POSTROUTING -o pppoe-wan -j MASQUERADE
    ip6tables -A FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
    ip6tables -A FORWARD -i $(uci -q get network.lan.ifname) -j ACCEPT

    #映射内网BT端口
    ip6tables -t nat -I PREROUTING -p tcp -d $IP6 --dport 12345 -j DNAT --to-destination [c000::2]:12345
    ip6tables -t nat -I PREROUTING -p udp -d $IP6 --dport 12345 -j DNAT --to-destination [c000::2]:12345

    echo "Set up IPv6 route"
    ip -6 route del 2000::/3
    route -A inet6 add 2000::/3 gw $IP6R dev pppoe-wan
fi
echo $IP > /tmp/lastip.txt

联通给4G用户发了/64但是只给家宽用户/128,这什么操作(
PS:刚刚发现联通原来是给了/60的PD的,但是WAN口只会显示一个/64,打开PD之后LAN和下面的设备也会分配到一个/64的地址

标签: openwrt, nat6, ipv6 nat, pppoe

已有 11 条评论

  1. 不懂运营商到2019年都还不分配ipv6,难道运营成本更高?

    1. 从骨干网到用户家的光猫和路由器都要更新一遍,结果访问大部分网站还是通过IPv4
      要不是工信部下了命令运营商才懒得搞呢

      1. 我感觉IPv6分发到每个客户端上,免得再去做麻烦的NAT转换,分组交换效率会不会更高? 如此,反而能降低维护成本。

        1. 然而现在三大运营商给的v6都是每次拨号随机分配的前缀,播一次变一次,结果反映到客户端就是ipv6地址随着时间推移越来越多,最后还不如直接内网只分配fc00然后做NAT6方便

        2. 另外就看国内目前这个ipv6线路质量就知道为什么部分手机厂商会修改系统来强制使用ipv4访问网络了

  2. 也许国内IPv4用户体量足够庞大,供应链已经完善了。再一搞IPv6又得重新组网,供应链几乎没有。但好歹供应商应该未雨绸缪,而阿里云、腾讯云这些都勉强灰度部署,完全没有像AWS这样完整的IPv6网络体验。

    1. 其实我觉得国内才是最需要ipv6的
      同学留学去日本,那边学校wifi热点连上去分配的都是公网ip。人家v4地址都多到用不完

  3. beijihan
    beijihan

    请问一下,像这条转发命令里ip6tables -t nat -I PREROUTING -p udp -d $IP6 --dport 12345 -j DNAT --to-destination [c000::2]:12345的[c000::2]这串地址在我这里是动态的,要怎么修改才行?局域网我用的就是电信ipv6 pd分配的地址,局域网的ipv6地址前缀随着每次拨号会变动,但是可以给电脑指定有状态的后缀ipv6地址,那这个[c000::2]要怎么替换?

    1. 可以试试用ifconfig搞到PD前缀然后拼一下就可以了
      我这边联通4G都给PD但是家宽打死不给

    2. 另外比起PD前缀我还是习惯于配置NAT6,除非他PD前缀不变

      1. beijihan
        beijihan

        谢谢,我在试试,就差转发了。
        我之前也是只用NAT6,无奈电信一直下发配置开ipv6,推送ipv6 PD。而只用教育网ipv6的话,教育网ipv6跟国内各大网站ipv6好像没直连,微信、QQ等有ipv6的网站速度慢。根据恩山的isatap帖子,现在配置策略路由,PT走教育网ipv6路由,其他的走电信ipv6路由,推荐

添加新评论