実現したいこと
RPIをIPoE接続でIPv4 over IPv6 として接続するルータとして稼働させたい。
発生している問題・分からないこと
設定を進めていますが(以下設定項目参照)、
エンド端末でWiFi接続しようとすると「インターネット接続なし」になり接続できません。
DS-LITEのクロスパス接続のための設定で、光回線側の契約としてはルータが対応していれば接続できる状態です。
初心者のため見逃しているところなどあるかもしれません。
どこがボトルネックになってIPv4 over IPv6としてのインターネット接続ができないのかわからないのでご助言いただければ幸いです。
該当のソースコード
dhcpcd
1#/etc/dhcpcd.conf 2denyinterfaces wlan0 3interface br0 4static ip_address=192.XXX.XXX.1/24 5interface eth0 6ipv6rs 7ia_pd 1 br0 8persistent 9option rapid_commit 10option interface_mtu 11require dhcp_server_identifier 12 13#/etc/network/interfaces 14auto br0 15iface br0 inet manual 16 bridge_ports wlan0 17 bridge_stp on 18 bridge_maxwait 3 19 20#/etc/sysctl.conf 21net.ipv6.conf.all.forwarding=1 22net.ipv6.conf.eth0.accept_ra=2 23net.ipv6.conf.dslite0.accept_ra=0 24net.ipv6.conf.br0.accept_ra=0
dnsmasq
1#/etc/dnsmasq.conf 2server=8.8.8.8 3server=8.8.4.4 4server=2001:4860:4860::8888 5server=2001:4860:4860::8844 6domain=lan 7local=/lan/ 8expand-hosts 9address=/hoge.lan/192.XXX.XXX.1 10dhcp-range=192.XXX.XXX.10,192.XXX.XXX.110,12h 11dhcp-option=option:router,192.XXX.XXX.1 12dhcp-option=option:dns-server,8.8.8.8 13dhcp-option=option6:dns-server,[2001:4860:4860::8888] 14dhcp-option=option:domain-name,hoge 15enable-ra 16interface=br0 17dhcp-range=::,constructor:br0,ra-stateless,slaac,ra-names,64,12h 18dhcp-host=XX:XX:XX:XX:XX:XX[Mac address が入ってます],192.XXX.XXX.1,hoge.lan 19 20 21#/etc/hostapd/hostapd.conf 22interface=wlan0 23bridge=br0 24ssid=Hoge_WiFi2.4 25hw_mode=g 26channel=11 27macaddr_acl=0 28auth_algs=1 29wmm_enabled=1 30ignore_broadcast_ssid=0 31wpa=2 32wpa_passphrase=*************** 33wpa_key_mgmt=WPA-PSK 34wpa_pairwise=TKIP 35rsn_pairwise=CCMP
iptables
1#/etc/iptables.settings 2:INPUT DROP 3:FORWARD DROP 4:OUTPUT ACCEPT 5-A INPUT -i lo -j ACCEPT 6-A INPUT -p icmp -j ACCEPT 7-A INPUT -s XXX.XXX.XXX.0/24 -i br0 -j ACCEPT 8-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 9-A FORWARD -s XXX.XXX.XXX.0/24 -i br0 -o dslite0 -j ACCEPT 10-A FORWARD -d XXX.XXX.XXX.0/24 -i dslite0 -o br0 -j ACCEPT 11-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 12COMMIT 13 14#/etc/ip6tables.settings 15:INPUT DROP 16:FORWARD DROP 17:OUTPUT ACCEPT 18-A INPUT -i lo -j ACCEPT 19-A INPUT -p ipv6-icmp -j ACCEPT 20-A INPUT -s XXXX:XXXX:XXXX:XXXX::1/64 -i br0 -j ACCEPT 21-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT 22-A FORWARD -s XXXX:XXXX:XXXX:XXXX::1/64 -i br0 -o dslite0 -j ACCEPT 23-A FORWARD -d XXXX:XXXX:XXXX:XXXX::1/64 -i dslite0 -o br0 -j ACCEPT 24-A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 25COMMIT 26 27
dhcpcd
1#/lib/dhcpcd/dhcpcd-hooks/12-dslite0 2[ "$reason" != "BOUND6" ] && [ "$reason" != "RENEW6" ] && [ "$reason" != "REBIND6" ] && [ "$reason" != "ROUTERADVERT" ] && return 3LOCAL=$(ip -6 addr show dev eth0 | grep "inet6 2001" | awk '{print $2}' | cut -d'/' -f1) 4if [ -z "$LOCAL" ]; then 5 logger -t dslite0 "ERROR: No IPv6 address found for eth0" 6 return 1 7fi 8CURLOCAL=$(ip -6 addr show dev eth0 | grep inet6 | grep $LOCAL | awk '{print $2}' | cut -d'/' -f1) 9[ "$LOCAL" = "$CURLOCAL" ] && return 10REMOTE='[Aftrのアドレスが入ってます]' 11ip -6 tunnel add dslite0 mode ipip6 remote $REMOTE local $LOCAL encaplimit none dev eth0 12ip link set dev dslite0 up 13sleep 5 14ip route add default dev dslite0 15return 0 16 17#/lib/dhcpcd/dhcpcd-hooks/16-br0-prefixsetup 18[ "$interface" != "eth0" ] && return 19[ "$reason" != "BOUND6" ] && [ "$reason" != "ROUTERADVERT" ] && [ "$reason" != "RENEW6" ] && [ "$reason" != "REBIND6" ] && return 20PREFIX=$(ip -6 addr show dev eth0 | awk '/inet6/ && /global/ {split($2,a,"/"); print a[1]}' | cut -d':' -f1-4) 21[ -z "$PREFIX" ] && return #PREFIXがなければSkip 22BR0_PREFIX=$(ip -6 addr show br0 | awk '/inet6 2001:/{print $2}' | cut -d'/' -f1 | sed 's/::.*//') 23[ "$PREFIX" = "$BR0_PREFIX" ] && return #PREFIX とBR0 に割り当てられたPREFIXが同じだったらスキップ 24ip -6 addr flush dev br0 25ip -6 addr add "$PREFIX::1/64" dev br0 26 27#/lib/dhcpcd/dhcpcd-hooks/25-update-ip6tables 28[ "$reason" != "BOUND6" ] && [ "$reason" != "RENEW6" ] && [ "$reason" != "REBIND6" ] && ["$reason" != "ROUTERADVERT"] return 29BR0_PREFIX=$(ip -6 addr show br0 | grep -v "fe80" | grep -v "fd00" | awk '/inet6/ {print $2}' | cut -d'/' -f1 | sed 's/:[^:]*$/:0\/64/' | head -n 1) 30PREFIX=${new_ia_pd_1_prefix:-$BR0_PREFIX} 31if [ -z "$PREFIX" ]; then 32 logger -t ip6tables "ERROR: No prefix found for br0" 33 return 1 34fi 35isGLOBALPREFIX=$(echo "$PREFIX" | grep -E '^2[0-9a-fA-F]{3}:|^3[0-9a-fA-F]{3}:') 36OLD_PREFIX_FILE="/tmp/old_prefix" 37OLD_PREFIX=$(cat "$OLD_PREFIX_FILE" 2>/dev/null) 38if [ ! -f $OLD_PREFIX_FILE ] && [ -n "$isGLOBALPREFIX" ]; then 39 logger -t ip6tables "Updating INPUT br0 rule from initial value..." 40 UPDATE_REQUIRED=1 41fi 42if [ "$PREFIX" != "$OLD_PREFIX" ]; then 43 UPDATE_REQUIRED=1 44fi 45[ -z "$UPDATE_REQUIRED" ] && return 46ip6tables -D INPUT -s $OLD_PREFIX -i br0 -j ACCEPT 47ip6tables -A INPUT -s $PREFIX -i br0 -j ACCEPT 48ip6tables -F FORWARD 49ip6tables -A FORWARD -s "$PREFIX" -i br0 -o dslite0 -j ACCEPT 50ip6tables -A FORWARD -d "$PREFIX" -i dslite0 -o br0 -j ACCEPT 51ip6tables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT 52ip6tables -P FORWARD DROP 53logger -t ip6tables "Prefix CHANGED: $OLD_PREFIX --> $PREFIX" 54echo "$PREFIX" > "$OLD_PREFIX_FILE"
#/etc/systemd/system/iptables-load.service [Unit] Description=Load iptables rules After=network-online.target dhcpcd.service Requires=dhcpcd.service [Service] Type=oneshot ExecStart=/sbin/iptables-restore /etc/iptables.settings ExecStart=/sbin/ip6tables-restore /etc/ip6tables.settings RemainAfterExit=yes [Install] WantedBy=multi-user.target
試したこと・調べたこと
- teratailやGoogle等で検索した
- ソースコードを自分なりに変更した
- 知人に聞いた
- その他
上記の詳細・結果
/var/log/messages, syslog どちらも原因と見られるエラーは見当たらなかったのと、
ip a ではトンネルが設定されていること、eth0 / br0 に2001で始まるプレフィックスが設定されていることは確認しています。デフォルトルートは
default via fe80::xxxx:xxxx:xxxx:xxxx dev eth0 proto ra metric 202 mtu 1500 pref medium
といった形で表示されています。
dslite0 interface をデフォルトルートとして2001のAFTRアドレスを設定しようとすると「No route to host」となってしまい設定はできないようです。
ちなみにIPv4での接続はAndroid10以下の場合はなぜかうまくいき(インターネットにもつながるし、IPv4アドレスも取れている状態)、
それ以外(PCやiphone, Android 10以上)の場合は「接続中」の表示のまま止まったままになり接続できません。
dhcpcd サービスをリスタートするとWiFiへの接続だけできるようになりますが、WiFi接続からインターネットには出れず、SSHもできません。
補足
特になし

あなたの回答
tips
プレビュー