追記:FreeBSDならば、佐藤さんのFreeBSDworkshopでの発表が詳しく良い設定です。
修正:2016/10/2 dslite-ctl.shを修正しました。sudo sysctl net.inet6.ip6.forwarding=1
のコメントインを削除しました(IIJ Blogと同じ設定にする)。そうしないと以下のエラーで
IPv6のdefault routeが消えていました。
nd6_dad_timer: cancel DAD on gif0 because of ND6_IFF_IFDISABLED.
1) 用いたプロバイダーIIJmio
2) IPv6接続は、IPoE(IIJmioのIPoEオプション)
用いた機器
1) Odroid-C1(ARMが動くボードですが、Raspberry PIやi386/AMD64のFreeBSDが動く機材でも同様な設定で動くと思います。
2) FreeBSD-current
3) NTT PR-500KI (光ルーター) IP: 192.168.100.1
Odroid-C1の/etc/rc.conf amle0がOdroid-C1のLAN portです。
############################################## # # enable IPv4 # ifconfig_amle0_name="net0" ifconfig_net0="192.168.100.2/24" ############################################## # # enable IPv6 # https://www.freebsd.org/doc/handbook/network-ipv6.html # ifconfig_net0_ipv6="inet6 accept_rtadv" rtsold_enable="YES" ############################################## # # enable DHCP Server # dhcpd_enable="YES"
dhcpd.conf
default-lease-time 600; max-lease-time 7200; log-facility local7; subnet 192.168.100.0 netmask 255.255.255.0 { range 192.168.100.101 192.168.100.150; option domain-name-servers 192.168.100.1; option domain-name "example.com"; option routers 192.168.100.2; option broadcast-address 192.168.100.255; default-lease-time 600; max-lease-time 7200; }
MacOS X用dslite.shへのパッチ(http://techlog.iij.ad.jp/contents/dslite-macosx)
変更ポイントは、
- LANのport nameをnet0へ
- 自宅の環境では、gw.transix.jpの名前解決ができなかったため、決め打ちで東日本用アドレスを設定
--- dslite-ctl.sh.org 2016-05-12 07:51:34.905693000 +0900 +++ dslite-ctl.sh.pulic 2016-05-24 22:44:18.206909000 +0900 @@ -15,6 +15,7 @@ echo "Ethernet Interface: ${IF}" echo "MY_GUA: ${MY_GUA}" echo "AFTR_GUA: ${AFTR_GUA}" + sudo ifconfig gif0 create sudo ifconfig gif0 inet6 tunnel ${MY_GUA} ${AFTR_GUA} sudo ifconfig gif0 mtu 1500 sudo ifconfig gif0 inet 192.0.0.2/30 192.0.0.1 @@ -43,15 +44,17 @@ get_my_gua() { for i in ${EN_NUM} do - MY_GUA=`ifconfig en${i} inet6| grep 'inet6 2409:[0-9a-f:]*ff:fe[0-9a-f:]*' | sed 's/\%.*//' | cut -d ' ' -f 2` + MY_GUA=`ifconfig net${i} inet6| grep 'inet6 2409:[0-9a-f:]*ff:fe[0-9a-f:]*' | sed 's/\%.*//' | cut -d ' ' -f 2` if [ "${MY_GUA}" ]; then - IF="en${i}" + IF="net${i}" return fi done } COM=`basename $0` -AFTR_GUA=`host ${AFTR_FQDN} | grep '2404:8e0' | sed -e '1!d' -e 's/.* address //'` +#AFTR_GUA=`host ${AFTR_FQDN} | grep '2404:8e0' | sed -e '1!d' -e 's/.* address //'` +AFTR_GUA="2404:8e00::feed:100" + get_my_gua if [ ! "${MY_GUA}" -o ! "${AFTR_GUA}" ]; then echo "Error: My Global Unicast Address and/or AFTR IPv6 Address not found."