Skip to content

Instantly share code, notes, and snippets.

@metalefty
Last active October 25, 2022 14:32
Show Gist options
  • Save metalefty/7d4ca551e734857d9734759a24f68833 to your computer and use it in GitHub Desktop.
Save metalefty/7d4ca551e734857d9734759a24f68833 to your computer and use it in GitHub Desktop.
#!/bin/sh
#
# Author: Koichiro Iwao <meta@FreeBSD.org>
# License: The FreeBSD Copyright
#
# FreeBSDでDS-LiteのAFTRのIPv6アドレスを取得するやつ
# 必須コマンドチェックとdrillの部分を変えればFreeBSD以外でも動きます。
#
# ref.
# https://github.com/v6pc/v6mig-prov/blob/1.0/spec.md
# https://gist.github.com/stkchp/4daea9158439c32d7a70a255d51e568b
#
error_exit() { echo $@ >&2; exit 1; }
# 必須パッケージをチェック
pkg info --quiet dns/ldns ftp/curl textproc/jq || \
error_exit "Requisite packages are not installed.";
# NGNのDNSサーバーを指定 (スペース区切りで頭に@をつける)
NGN_DNS_SERVERS="@2404:1a8:7f01:a::3 @2404:1a8:7f01:b::3 @2001:a7ff:5f01:1::a @2001:a7ff:5f01::a"
# 使用するコマンドのラッパー
DRILL="/usr/local/bin/drill -Q ${NGN_DNS_SERVERS}"
CURL="curl --silent --disable"
JQ="jq"
# 一時ファイル
JSON_OUT=$(mktemp)
eval $(${DRILL} 4over6.info TXT | tr -d \")
${CURL} --get -d vendorid=c0ffee-metalefty \
-d product=$(uname) \
-d version=1 \
-d capability=dslite \
"$url" > "${JSON_OUT}"
DSLITE_AFTR_NAME=$(${JQ} -r .dslite.aftr "${JSON_OUT}")
DSLITE_AFTR_IP6ADDR=$(${DRILL} "${DSLITE_AFTR_NAME}" AAAA)
echo $DSLITE_AFTR_IP6ADDR
rm "${JSON_OUT}"
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment