IPv6
Table of Contents
WPS
Q: WiFiアクセスポイントにWPS機能ボタンと言うのが付いていました。 これは何ですか?
what is WPS
A: WPS(Wi-Fi Protected Setup)機能ボタンは、WiFiアクセスポイントやルーターに搭載されている機能で、ワイヤレスネットワークへの接続を簡単かつ迅速に行うためのものです。以下にその概要を説明します:
### WPS機能とは? WPSは、WiFiネットワークにデバイス(スマートフォン、パソコン、プリンターなど)を接続する際に、SSIDやパスワードを手動で入力する手間を省くための仕組みです。WPSボタンを押すことで、ルーターとデバイスが自動的にセキュアな接続を確立します。
### WPSボタンの役割 WPSボタンを押すと、ルーターが一時的に「接続待機モード」に入り、対応するデバイスが簡単にネットワークに参加できるようになります。通常、以下のような手順で使用されます:
- ルーターのWPSボタンを押す(数秒間押すか、機種によっては短く押す)。
- 接続したいデバイス(例:スマホやPC)でWPS接続を選択する。
- 数秒から2分以内に、ルーターとデバイスが自動的に接続を確立。
### 主な特徴
- /簡便性/:パスワードを入力せずに接続可能。
- /セキュリティ/:WPSはWPA/WPA2暗号化を使用し、比較的安全(ただし、設定や使い方によっては注意が必要)。
- /2つの主な接続方法/:
- /プッシュボタン方式/(上記のボタンを押す方法):最も一般的。
- /PINコード方式/:ルーターに表示されたPINコードをデバイスに入力する。
### 注意点
- /セキュリティリスク/:WPS(特にPINコード方式)は、過去に脆弱性が指摘されたことがあります。可能であれば、WPSを無効化し、通常のパスワード認証を使う方が安全とされる場合もあります。
- /互換性/:WPS対応デバイスでないと利用できません。
- /使用環境/:WPSボタンを押した後、一定時間内にデバイス側で操作が必要です。
### まとめ WPSボタンは、WiFi接続を簡単にする便利な機能ですが、セキュリティ面を考慮して使用するかどうかを判断してください。もしセキュリティを最優先する場合は、WPSをオフにして、従来のSSIDとパスワード入力による接続を選ぶことをおすすめします。ルーターのマニュアルや設定画面でWPSのオン/オフを確認できます。
もし具体的な使い方や設定方法について知りたい場合、ルーターのメーカーやモデルを教えていただければ、さらに詳しくお答えできます!
pixel 8a
A: Pixel 8a (Android 15) でWi-FiのWPS(Wi-Fi Protected Setup)機能を使用するための手順を説明します。
WPSを使うと、パスワードを入力することなく、ボタン一つでWi-Fiに接続できるので、便利です。ただし、注意点として、WPS機能はルーターが対応している必要があります。
### WPSを使用するための手順:
- Wi-Fiルーターの準備
- まず、Wi-FiルーターのWPSボタンを確認します。多くの場合、ルーターに物理ボタンがあり、それを押すとWPSが有効になります。ボタンを押すタイミングについては、ルーターのマニュアルを確認してください。
- ルーターのWPS機能が有効になったことを確認してください。
- Pixel 8aでWi-Fi設定を開く
- ホーム画面から「設定」アプリを開きます。
- 「ネットワークとインターネット」 > 「Wi-Fi」の順に選択します。
- Wi-Fi設定画面でWPSを使用
- 「Wi-Fiの設定」画面で、右上にある三点メニュー(⋮)をタップします。
- 「WPSで接続」または「WPSボタンを押す」といったオプションが表示されるはずです。これをタップします。
- WPS接続を実行
- Pixel 8aがWi-FiルーターのWPS信号を検出し、接続を試みます。接続が成功すると、Wi-Fiに自動的に接続されます。
### 注意点:
- ルーター側のWPS機能が一時的に有効になるので、ボタンを押してから30秒以内にPixel 8aで操作を行う必要があります。
- もしWPSが使えない場合は、手動でWi-Fiネットワークのパスワードを入力して接続する必要があります。
これで、Wi-FiのWPS機能を使って接続できるはずです!
many IP's
忘れたように、IPv6問題です。厚い本を読むのは苦痛ゆえ。
3 inet6 address
Q: ifconfigした時、3種のIPv6アドレスが提示されました。これらは何ですか?
A: いいですね!IPv6 を初めて見ると、=ifconfig= でやたらとアドレスが多く見えて驚かれると思います。
OpenBSD 7.6 の ifconfig em0
に表示されている3種類の inet6
アドレスについて、それぞれの意味と背景技術を整理してご説明します。
## 出力の整理
inet6 fe80::5054:ff:fe12:3456%em0 prefixlen 64 scopeid 0x1 inet6 fec0::5a5c:74d4:6287:eb12 prefixlen 64 autoconf pltime 14119 vltime 86119 inet6 fec0::d91a:a268:3238:6650 prefixlen 64 autoconf temporary pltime 14119 vltime 86119
出ているのは 3種類の IPv6 アドレス です。
## 1. リンクローカルアドレス (Link-Local Address)
inet6 fe80::5054:ff:fe12:3456%em0 prefixlen 64 scopeid 0x1
- 特徴
fe80::/10
の範囲は「リンクローカル」専用。- /必ず全ての IPv6 インターフェースに自動的に割り当てられる/。
- 同じリンク(=同じLANセグメント)内だけで有効。
- ルータを越えて外には出られない。
- 役割
- IPv6 の通信確立のための「足がかり」。
- IPv6 の ARP に相当する Neighbor Discovery (ND) やルータ探索(RA)で使用される。
- SSH や ping で直接指定することも可能だが、インターフェース指定(例: =%em0=)が必須。
## 2. グローバルユニキャストアドレス(通常のアドレス)
inet6 fec0::5a5c:74d4:6287:eb12 prefixlen 64 autoconf pltime 14119 vltime 86119
- 特徴
fec0::/10
は元々 サイトローカルアドレス と呼ばれていましたが、現在は /非推奨/。- おそらくホストに対して RA (Router Advertisement) でプレフィックスが配布され、自動生成されたもの。
autoconf
→ 自動設定 (stateless autoconfiguration: SLAAC) で作られたアドレス。- =pltime=(preferred lifetime)と =vltime=(valid lifetime)は、そのアドレスの有効期限を示す。
- 役割
- IPv4 でいう「通常のグローバルIPアドレス」に相当。
- インターネットやLAN内の通信で使われる「正式な」アドレス。
## 3. 一時アドレス (Privacy / Temporary Address)
inet6 fec0::d91a:a268:3238:6650 prefixlen 64 autoconf temporary pltime 14119 vltime 86119
- 特徴
temporary
と付いているのがポイント。- IPv6 では通常、MACアドレスから生成した「安定したアドレス」を使うが、それだと端末を追跡されやすい。
- そこで RFC 4941 に従って、/ランダムに生成される「使い捨てアドレス」/ を作る仕組みがある。
- OpenBSD ではデフォルトで有効になっており、外向き通信にこちらのアドレスが選ばれる。
- 役割
- Webアクセスやメール送信など、外部に接続するときにプライバシーを保護するために使用。
- 数時間〜数日のサイクルで新しい一時アドレスが生成され、古いものは期限切れになる。
## IPv4 と比較したときの違い
- IPv4
- 通常は「1台につき1つのアドレス」。
- NAT が多用される。
- IPv6
- インターフェースには /複数のアドレスが同時に割り当てられるのが前提/。
- リンクローカル (必須)
- グローバルユニキャスト (正規アドレス)
- 一時アドレス (プライバシー用)
- NAT は基本的に使わず、各端末がグローバルで一意なアドレスを持つ。
- インターフェースには /複数のアドレスが同時に割り当てられるのが前提/。
## まとめ
fe80::...%em0
→ /リンクローカルアドレス/。LAN 内だけで使われる必須アドレス。fec0::5a5c:...
→ /通常の IPv6 アドレス/。外との通信に使える。fec0::d91a:... temporary
→ /一時アドレス/。プライバシー保護のため、外向き通信で使われる。
👉 質問ですが、あなたの環境では fec0::/10
のアドレスが見えていますが、本来これは「非推奨」とされている帯域です。
もしかして QEMU/KVM や VMware のような /仮想環境/で動かしていますか?(仮想ネットワークでよくこの帯域が使われるケースがあります)
open or not open ?
なるほど!ご配慮ありがとうございます 👍
結論から言うと、/実マシンの ifconfig
出力をそのまま公開するのは注意が必要/です。理由は以下の通りです。
## 公開してよい情報 / 注意すべき情報
### 公開してよい情報
- リンクローカルアドレス (fe80::/10) → これは全世界で同じ仕組みで自動生成されるアドレスで、外部から直接アクセスされることはないため公開しても基本的に問題ありません。
- MAC アドレス (52:54:00:12:34:56 などの仮想 NIC 系) → 仮想環境のランダム生成なら安全。ただし実機の物理 NIC の場合は製造ベンダや機種が推測できることがあります。
### 公開に注意すべき情報
- グローバルユニキャスト IPv6 アドレス (2000::/3 の帯域) → これは「あなたの端末に世界で一意に割り当てられた住所」です。 公開すると「どの ISP を使っているか」「どの国や地域にいるか」が推測される可能性があります。
- IPv4 グローバルアドレス (例: 126.x.x.x) → IPv6 と同じ理由で ISP や場所を特定されやすいです。
- ホスト名やDNS名
→
hostname
が出る場合もあり、これも個人の環境を推測される手掛かりになります。
## 公開するならどうするか?
- /実機の出力をそのまま載せるのは避ける/のが無難です。
- 書き換えても構造が分かれば説明はできますので、例えば次のようにマスクして公開すれば安心です:
inet6 2001:db8:1234:abcd::123 prefixlen 64 autoconf inet6 2001:db8:1234:abcd::456 prefixlen 64 autoconf temporary
👉 この 2001:db8::/32
は「ドキュメント用に予約された IPv6 アドレス」で、公開しても安全です。
## まとめ
- 実機の
ifconfig
出力を「そのまま」公開すると、グローバル IPv6/IPv4 アドレスから ISP や地域が推測される可能性がある。 - 公開する場合は
2001:db8::/32
に置き換えるなどしてから載せるのがおすすめ。
🔎 もし「実機の出力を加工するのが面倒だな」と思われるなら、私の方で「実機っぽいけど安全なサンプル出力」に書き換える方法をご提案できますが、やってみますか?
nslookup, dig and host
とある方とtcpdumpが昔はあたり前、その次はetherealで今の若者ならwiresharkでしょ、 なんて話をしてたんだ。そしたら、別の件で昔のコマンド達を思い出したぞ。
インターネットの名前検索ね。馬鹿の一つ覚えでnslookupを使ってた。そしたら、 そんなの古いと馬鹿にされ、digを教えてもらった。
qe$ dig www.google.com ; <<>> dig 9.10.8-P1 <<>> www.google.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7381 ;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;www.google.com. IN A ;; ANSWER SECTION: www.google.com. 60 IN A 142.251.42.132 ;; Query time: 22 msec ;; SERVER: 10.0.2.3#53(10.0.2.3) ;; WHEN: Tue Aug 26 06:50:49 JST 2025 ;; MSG SIZE rcvd: 59
これじゃ、必要な情報を抜き出すに不便って事で、こんなのが主流みたいだ。
qe$ host openbsd.as250.net openbsd.as250.net has address 193.227.234.138 openbsd.as250.net has IPv6 address 2001:4ce8::138 qe$ host www.google.com www.google.com has address 142.251.42.132 www.google.com has IPv6 address 2404:6800:4004:80f::2004
Internet Systems Consortium, Inc. いずれのプロダクトも、こちら製だ。 前回やったDHCPサーバー/クライアントも、こちらの奴を採用してたな。
今ソースの在処を調べたら、usr.bin/dig/ の中に、nslookupもhostも鎮座してた。
ad$ wc *.c 1966 5521 48049 dig.c 3892 11122 102498 dighost.c 850 2284 20637 host.c 943 2731 23385 nslookup.c
arp and ndp
もう一つ懐かしいコマンド
qe$ arp -a Host Ethernet Address Netif Expire Flags 10.0.2.2 (incomplete) em0 expired 10.0.2.3 52:55:0a:00:02:03 em0 17m2s 10.0.2.15 52:54:00:12:34:56 em0 permanent l
それのIPv6版 かな?
qe$ ndp -a Neighbor Linklayer Address Netif Expire S Flags fe80::2%em0 52:56:00:00:00:02 em0 23h53m54s S R fe80::5054:ff:fe12:3456%em0 52:54:00:12:34:56 em0 permanent R l fec0::5a5c:74d4:6287:eb12 52:54:00:12:34:56 em0 permanent R l fec0::974a:8275:a1e7:a558 52:54:00:12:34:56 em0 permanent R l
RA
Q: inet6のアドレスは、どの様な経路を経て、OpenBSDが知る事となったのでしょうか?
RAって何だ?
A: とても鋭い視点ですね 👏 IPv6 の「どうやってホストが自分のアドレスを知るのか?」という仕組みは、IPv4 (DHCP or 静的設定+NAT) に慣れていると最初に引っかかるポイントです。順を追って説明します。
## IPv4 の場合(復習)
- プライベートアドレス (例: 10.x.x.x) を LAN 側で設定。
- NATルータが 1つのグローバル IPv4 アドレス を持ち、それを変換して外部に出す。
- なので端末が自分の「本当のグローバル IPv4」を知る術はなく、確認したければ
myIPAddress
サイトのような外部サービスにアクセスして「お前はこのアドレスで見えてるよ」と教えてもらう必要がある。
## IPv6 の場合(今回のケース)
### 1. ルータが プレフィックス情報 をアナウンスする
- IPv6 のルータは LAN に対して RA (Router Advertisement) を送信します。
- 「デフォルトルータは私だよ」
- 「このネットワークのプレフィックスは 2401:xxxx:yyyy:zzzz::/64 だよ」 という情報が含まれる。
### 2. ホストは 自分のアドレスを自動生成する
- ホスト(OpenBSD)は、RAで受け取ったプレフィックスを使って、インターフェースID(下位64bit)を自分で決めてくっつけます。
- 例: 2401:abcd:1234:5678::/64 が来たら、 → 2401:abcd:1234:5678:xxxx:xxxx:xxxx:xxxx を生成。
- このときの下位64bit(インターフェースID)は大きく分けて2種類の生成方法があります:
- 安定アドレス (EUI-64形式) → MACアドレスを元に作る。昔の方式。
- テンポラリアドレス (RFC4941) → ランダムに生成して、数時間~数日でローテーション。OpenBSD もこれを使っている。
### 3. ホストが自分の inet6
アドレスとして設定
- こうして生成したアドレスを
ifconfig
で表示できるようになる。 - つまり 「自分で作って自分で持っている」 という点が IPv4 と大きく違います。
- NAT は不要、ISPから来るのは「/64 のプレフィックス」で、それを各端末が自由に展開する。
## まとめると
- OpenBSD が知る IPv6 アドレスは ルータからのRAで得たプレフィックス を元に、自分自身で生成したもの。
- ifconfig に出る 2401:… は ISP がルータに割り当てたプレフィックスを基に生成されたアドレス。
- 一方、myIPAddress で見えるアドレスも同じプレフィックスですが、実際に外向き通信で選ばれた「テンポラリアドレス」が表示されている。
🔎 ここで気になるのですが…
あなたの環境では IPv6 のアドレス生成は「テンポラリだけ」見えていましたか?それとも「安定アドレス(固定っぽい 2401\:xxxx:…)とテンポラリの両方」が ifconfig
に並んでいましたか?
どんな経路で受信するの
Q: RAの経路を教えてください。
A:いい質問です!🌟 まさに「RA (Router Advertisement) は IPv6 界の DHCP のような役割を果たしている」と捉えていただいてOKです。 ただし、IPv6 では DHCPv6 という別の仕組みもあり、RA と DHCPv6 は役割が分担されています。 さて、本題の OpenBSD で RA をどう受け取って処理しているか について整理します。
## RA (Router Advertisement) の受信と処理の流れ
### 1. カーネルが ICMPv6 を直接処理する
- RA は /ICMPv6 の一種/(Type 134 のパケット)。
- OpenBSD カーネルには、IPv6 の Neighbor Discovery Protocol (NDP) の実装が組み込まれていて、ユーザーデーモンを介さず /カーネルが直接受信して解釈/します。
- 「デフォルトルータは誰か」
- 「このプレフィックスを使って自動設定して良いか」
- 「MTU はいくつか」 → といった情報がカーネル内の NDP スタックに反映されます。
### 2. autoconf によるアドレス生成
ifconfig em0
にAUTOCONF6
フラグがあると、RA に含まれるプレフィックスを基に SLAAC (Stateless Address Auto Configuration) をカーネルが自動実行します。- これによって
- /安定アドレス/(MAC由来または stable secret 由来)
- /テンポラリアドレス/(RFC4941, プライバシー保護)
が
ifconfig
に登場します。
### 3. デーモンの役割(補助的)
RA の受信・処理そのものはカーネルですが、周辺で次のようなデーモンが関わります。
rtadvd(8)
- これは ルータ側 で使うデーモン。LAN に RA をばらまく役割。
- ホスト側で受信する時には関係ありません。
rtsold(8)
- Router Solicitation Daemon。
- 起動直後に「ルータいませんかー?」と Router Solicitation (RS) を送る。
- それに対してルータが RA を返すので、ホストの IPv6 設定がすぐ反映される。
- (もし
rtsol_flags
をhostname.if
に書いておくと、このデーモンが自動起動して初期 RS を送る)
dhcp6c
(WIDE-DHCPv6)- RA が「もっと細かい設定は DHCPv6 で」と指示してきた場合に使う。
- 例: DNS サーバーの情報を取得する時など。
- OpenBSD ベースシステムには含まれないので、追加インストールが必要。
## まとめると
- /RA の受信と処理はカーネル内蔵の NDP スタックが担当/。
ifconfig ... autoconf6
が有効だと、RA を見て /自動的に IPv6 アドレスを生成/する。rtsold
は「ルータに問い合わせを送る」補助デーモン。dhcp6c
は RA が要求する場合に追加の設定を取りに行くためのデーモン。rtadvd
は逆にルータ側のデーモンで、ホスト受信側には不要。
💡 イメージ的には:
- IPv4 → DHCP クライアントが全部まとめて設定を取得
- IPv6 →
- 住所(アドレス/デフォルトルータ/プレフィックス長):RA + カーネル
- 名前解決などの追加情報:必要に応じて DHCPv6 クライアント
👉 確認ですが、あなたの OpenBSD 実機環境では rtsold を動かしていますか? (ps ax | grep rtsold で確認できます)それとも、ルータ側が定期的に RA を流しているので、特にデーモン無しでもアドレスが付いていましたか?
in kernel
Q: rtsold なんて無いですよ。
A: ご指摘ありがとうございます 🙇 — その通り、/OpenBSD には rtsold(8) は存在せず、FreeBSD 系にある仕組み/と混同していました。 OpenBSD の場合はカーネルが RA をそのまま処理しますし、起動時の RS (Router Solicitation) もカーネル内から自動的に送っている実装です。
## 1. QEMU での RA の周期について
tcpdump の結果を見ると、おおよそ /5分〜10分間隔/で RA が送られていますね。 これは RFC 4861 の仕様に沿っています:
MaxRtrAdvInterval
= 600秒(10分)MinRtrAdvInterval
= 200秒(3分20秒)
なので、QEMU の仮想ルータ(おそらく slirp
か net/if_tap
側のスタック)がこの範囲でランダム化して広告を投げている、と考えられます。
→ 「結構まぬけ」に見えるのは、標準仕様に忠実だからです。
## 2. 「早く RA が欲しい」ときの方法
カーネルの nd6_options()
にブレークポイントを置くなら、RA をすぐに受け取りたいですよね。その場合のやり方は2つあります。
### (A) ホスト側から Router Solicitation (RS) を送る
RA はパッシブに待つだけでなく、ホストが「誰かルータいませんか?」と RS を投げると、それに応じてルータがすぐに RA を返してくれます。
OpenBSD では root で次を実行できます:
# rtsol em0
- OpenBSD には
rtsold
は無いですが、/=rtsol(8)=/ コマンドが存在します。 - これはインターフェースに対して RS を1回送るツールです。
- 実行直後に RA が返ってくるので、
nd6_options()
に確実に到達します。
### (B) ルータ側に強制送信させる
もし仮想環境のルータが rtadvd(8)
なら、ホスト側から「SIGHUP」などで即時広告させることができます。ただし QEMU のユーザーネットワーク(slirp)は内部実装でやってるので、この方法は難しいかもしれません。
現実のルータ(例えば OpenBSD で rtadvd
を動かしている場合)なら、
# kill -HUP <rtadvdのPID>
で即時 RA を送らせることができます。
## 3. gdb で nd6_options()
に仕掛ける例
仮想マシン内でカーネルデバッグするなら QEMU + gdb の組み合わせですよね。 例えば:
(gdb) b nd6_options (gdb) c
しておいて、別シェルから
# rtsol em0
と打てば、/確実にその関数にブレーク/するはずです。
## まとめ
- RA は通常 3〜10分に1回、ランダム間隔で出てくる(RFC 準拠)。
- /即座に受けたいなら
rtsol em0
で RS を送る/のが一番手っ取り早い。 - gdb で
nd6_options()
をウォッチするなら、=rtsol= で確実に RA を発生させるのが良い。
👉 逆に質問なのですが、今の目的は 「 nd6_options()
が実際に RA をどう処理するか観察する」 でしょうか?
それとも 「RA を受け取った後に OpenBSD カーネルがどのように IPv6 アドレスを作るか」 まで追跡されたいですか?
rtsol ?
Q: rtsolも無い様です。
A: ああっ、確かにご指摘の通りで、また混ぜてしまいました 🙇
OpenBSD には rtsol(8)
/ rtsold(8)
は存在しません。
あれは FreeBSD / NetBSD 系にある仕組みで、OpenBSD はもっとシンプルで「RA はカーネルが勝手に処理する、ユーザーランドは関与しない」方針なんです。
## 🐢 OpenBSD の IPv6 アドレス自動設定の流れ(カーネル内)
OpenBSD のカーネルソース(=sys/netinet6/=)をざっと追うと、だいたいこんな流れになります:
- RA の受信
nd6_ra_input()
(nd6_rtr.c
) がエントリポイント。- ICMPv6 Type 134 (Router Advertisement) を受け取るとここに入る。
- オプション解析
nd6_options()
(nd6.c
) でオプションを処理。- 例:
ND_OPT_PREFIX_INFORMATION
が来ると「このプレフィックスで autoconf していいよ」となる。
- プレフィックス登録
prelist_update()
でプレフィックスをプレフィックスリストに追加。- 「この /64 はこのルータが有効にしている」と覚える。
- アドレス生成
in6_ifadd()
でインターフェースに IPv6 アドレスを追加。- 下位 64bit のインターフェースIDは、OpenBSD 独自の「stable secret」方式で作られる。
- 昔は EUI-64 (MACベース) だったが、プライバシーのため今は乱数+秘密キーから生成される。
- テンポラリアドレス
in6_tmpifadd()
あたりで RFC4941 の temporary address を作成。- 一定時間ごとにローテーション。
→ これで ifconfig
に出てくる 「安定アドレス」+「テンポラリアドレス」 のペアが誕生します。
## 🐢 vs 🐇 (BSDカメとLinuxウサギ)
Linux はユーザーランドの rdisc6
や NetworkManager
が絡んだり、=sysctl= が多く、処理の一部が分散しています。
一方 OpenBSD はカーネルがすべてやるので、/追跡するには gdb でカーネル関数にブレークを仕掛けるのが一番分かりやすい/です。
カメさんらしい、シンプルで着実な実装ですね 🐢✨
## 🛠 RA を「早く欲しい」とき(OpenBSD)
OpenBSD はユーザーランドから RS を投げる仕組みがないので、方法は2つです:
- ルータ側から強制的に RA を送らせる
- OpenBSD をルータ役にしているなら
rtadvd(8)
にSIGHUP
を送ると即時 RA を出せます。 - QEMU の slirp や NAT だと難しいかも。
- OpenBSD をルータ役にしているなら
- カーネル内で RS を再送させる
- OpenBSD カーネルはインターフェース UP 時に RS を送ります。
- なので手っ取り早いのは:
doas ifconfig em0 down doas ifconfig em0 up
→ これで RS が飛び、ルータがすぐ RA を返します。
## 🎯 まとめ
- OpenBSD には
rtsol/rtsold
は存在しない(カーネル内完結)。 - RA →
nd6_ra_input()
→nd6_options()
→in6_ifadd()
→ アドレス生成。 - 「早く RA が欲しい」ときは インターフェース down/up で RS を送らせる。
- 最終的にアドレス生成ロジックは /=in6ifadd()= 系/を追うのが良さそう。
👉 ここでお聞きしたいのですが、あなたが gdb で追跡したいのは 「RAを受けてプレフィックスを登録するところ」 ですか? それとも 「インターフェースIDをどう作って最終的にIPv6アドレスを組み立てるところ」 の方にご興味がありますか?
段々タメ口になってくるのが面白いな。正にペア・プログラミングの気分ですよ。 長くなってきたので、これぐらいにしといたる。
IPv6 book
Study IPv6 疑問点は、こちらで解消しましょう。YouTubeも公開されてますよ。 今回、私事としてIPv6に触れたので、より身近だな。目の前に教材が有るからね。
昔IPv6に憧れて挑戦した事が有った。殿様商売のNTTは、まだサポートしてなかった。 v6のパケットをv4のペイロードとして伝送するっていうお涙頂戴方式ね。 訳もわからず、雑誌の通りにやって、海の向うにパケットを転送したら、カメさんが 泳いでくれた。ワーイ・バンザイしたのを良く覚えている。
その頃、第1版の本が公開されたけど、難しすぎて読んでもチンプンカンプンだったよ。 歳を重ねて、やっと説明されてる事が理解できる様になった。
README
歳を重ねてくると、昔の事を良く思い出すようになる。そういう時世にピッタリな 本が有ったので懐かしんでみた。 昭和が愛した言葉たち
ボイン、アイアイサー、バッチグーだとか、よく使ったぞ。ヨーチンから赤チン そして、マキロンなんて言う流れもあったな。それから密かに流行してたらしいんだけど 、着の身着のまま木の実ナナ なんてのも有ったらしい。
そんなにウカレル場合じゃ無いッショ! 異常気象の未来予測
異常気象がニューノーマルになる瀬戸際。臨界点を越えれば、もう後戻りできない そうだ。悪い正帰還がかかってしまって、どうにも止まらない状態になるとか。
トランプ爺に是非読んで欲しい一冊だ。