Skip to content

Instantly share code, notes, and snippets.

@miio
Last active March 30, 2024 07:10
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save miio/bad29cf67971c67413d0b49a72adc742 to your computer and use it in GitHub Desktop.
Save miio/bad29cf67971c67413d0b49a72adc742 to your computer and use it in GitHub Desktop.
UDM Pro で固定IPv4を使いたい場合やDS-Liteが挙動おかしいときに作ったスクリプト

2024年2月21日時点、UnifiOS 3.2.12でDS-Liteのトンネルがうまく疎通しなかったり、固定IPが使えない問題に対処したもの

WebGUIではDHCP-PD prefix /56, DS-Liteの設定を仕込んだ状態で試したもの

# DS-Lite修正
# 参考
# https://techlog.iij.ad.jp/contents/dslite-raspi
REMOTE=''
# SLAAC シングルの人は多分これでいける
# LOCAL=`ip addr show br0 | grep 'mngtmpaddr' | awk '{print $2}' | awk -F/ '{print $1}'`
# DHCP-PDv6の人はこっち
LOCAL=`ip addr show br0 | grep 'inet6' | grep 'dynamic' | awk '{print $2}' | awk -F/ '{print $1}'`
# IPIP6 tunnel linkup
ip -6 tunnel delete ip6tnl1
ip -6 tunnel add ip6tnl1 mode ip4ip6 remote ${REMOTE} local ${LOCAL} dev br0
ip link set dev ip6tnl1 up
## IPIP設定 (DHCP-PD方式)
# https://www.rtpro.yamaha.co.jp/RT/docs/v6connect/index.html
# https://xmms.jp/blog/index.php?entry=entry200812-194208
# ASAHINETの固定IPの詳細ページからとれる情報
AFTR=''
INTERFACE_ID='' # 下64bitでOK
UPDATE_UID=''
UPDATE_PASSWORD=''
FIXED_IPV4=''
INTERNET_ETH='eth8'
LOCAL_PREFIX=`ip addr show br0 | grep 'inet6' | grep 'dynamic' | awk '{print $2}' | awk -F/ '{print $1}' | sed 's/::1//'`
LOCAL_INET6="${LOCAL_PREFIX}:${INTERFACE_ID}"
# 新しいv6アドレスを用意
ip -6 add add ${LOCAL_INET6}/64 dev br0
# IPv4アドレスをセット
`ip a add dev ${INTERNET_ETH} ${FIXED_IPV4}`
# accept_raを2にしないとtokenセットできないらしい
# https://ral-arturo.org/2021/04/01/ip-token.html
sysctl -w net.ipv6.conf.br0.accept_ra=2
ip token set ::${INTERFACE_ID} dev br0
ip route add default dev ip6tnl1
# アップデートサーバーに通知
curl "https://v6update.asahi-net.or.jp/prefix?key=${UPDATE_UID}&pass=${UPDATE_PASSWORD}"
# IPIP6 tunnel 再構築
ip -6 tunnel delete ip6tnl1
ip -6 tunnel add ip6tnl1 mode ip4ip6 remote ${AFTR} local ${LOCAL_INET6} dev br0
ip link set dev ip6tnl1 up
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment