Armadilloフォーラム

IPV6のDHCPサーバ機能について

kkk_1709

2024年2月21日 13時33分

Armadillo-IoT A6E(Wifi版)の有線LAN側について、DHCPサーバ機能を有効にし、IPアドレス(IPV6)を固定化したいです。

以下リンクの手順を参考にしようとしたのですが、本手順書はIPV4のアドレスで表記されているので困っている状況です。
https://armadillo.atmark-techno.com/blog/10899/16550#

ひとまず、上記リンクの「DHCPサーバの設定」に手順に従って、DHCPサーバを有効化したものの
再起動のたびにIPV6のIPアドレスが変わってしまいます。(IPV4のアドレスは固定されています)
そのため、下記コマンドにて、eth0のIPV6のIPアドレスを固定化してみたのですが、
nmcli connection add con-name ethernet-eth0 type ethernet ifname eth0
nmcli connection modify ethernet-eth0 ipv6.method manual ipv6.addresses [IPアドレス]
persist_file /etc/NetworkManager/system-connections/ethernet-eth0.nmconnection

再起動後ifconfigコマンドでIPアドレスを確認すると
IPV6のアドレスが以下2つ表示されてしまいます。
 ・コマンドで指定したIPアドレス
 ・再起動のたびに代わってしまうIPアドレス

ちなみに、ネットワークは以下の通り接続しています。
Armadillo の有線LAN - スイッチングハブ - WindowsPC

私が実施した手順には誤りがあると考えており、IPV6での正しい手順を教えていただきたいです。
お手数ですが、ご回答をよろしくお願いいたします。

コメント

at_dominique.m…

2024年2月21日 17時27分

kkk_1709さん、

お世話になっています、
マルティネです。

> Armadillo-IoT A6E(Wifi版)の有線LAN側について、DHCPサーバ機能を有効にし、IPアドレス(IPV6)を固定化したいです。
>
> 以下リンクの手順を参考にしようとしたのですが、本手順書はIPV4のアドレスで表記されているので困っている状況です。
> https://armadillo.atmark-techno.com/blog/10899/16550#

申し訳ございません、
ipv6 での DHCP サーバー設定はアップストリーム接続(LTEなど)によっていくつかのパターンにわけてあるため対応が分かりにくくなって、現在 ABOS Web で対応してません。

手動では対応できると思いますので、いくつか確認させてください:
* ネットワークは「Armadillo の有線LAN - スイッチングハブ - WindowsPC」とのことですが、プライベートネットワークだけという認識でよろしいでしょうか?(ipv4 で言えば 10.0.0.0/8 か 192.168.0.0/16 のような、インタネットへ接続できないネットワーク)
* nmcli で設定しようとした固定の ipv6 アドレスの最初の4桁( fe80など)を教えてください。
プライベートネットワークの場合だけでも二つのパターンがあって、fe80 のままの「link local」サブネットを使って dhcp サーバーなしで接続するか、fd00::/8 から「unique local address(ULA)」のサブネットをランダムで選んでからそれを dhcp / ra で宣伝して使うかの二つのパターンです。
PC を直接に armadillo に接続するだけのであれば、fe80 のアドレスのままにサーバーは不要です。

> 再起動後ifconfigコマンドでIPアドレスを確認すると
> IPV6のアドレスが以下2つ表示されてしまいます。
>  ・コマンドで指定したIPアドレス
>  ・再起動のたびに代わってしまうIPアドレス

ipv6 では fe80 のアドレスは必ず自動的に設定されます。
色々設定できますが(ipv6.addr-gen-modeなど)、2つ目以上のアドレスを無視していいです。

よろしくお願いします。

マルティネさん

お世話になります。
ご情報ありがとうございます。
ご質問いただいた内容については下記の通りとなります。

> * ネットワークは「Armadillo の有線LAN - スイッチングハブ - WindowsPC」とのことですが、プライベートネットワークだけという認識でよろしいでしょうか?(ipv4 で言えば 10.0.0.0/8 か 192.168.0.0/16 のような、インタネットへ接続できないネットワーク)

はい。上記の認識で間違いありません。

> * nmcli で設定しようとした固定の ipv6 アドレスの最初の4桁( fe80など)を教えてください。

最初の4桁は、fe80です。
ちなみに、今回の質問の背景としては以下の通りです。
Armadillo 用に用意されたソフトウェア(非公開)があり、
そのソフトウェアの要件が以下のようになっている。
 ・Armadillo(eth0) をDHCPサーバにすること。
 ・Armadillo (eth0) のIPアドレスは固定にすること。
 ・IPアドレスはIPV6を利用すること。
 ・ネットワークはインターネットへ接続しない、閉じたネットワークであること。
また、現状はWindowsPCを一台しか接続していませんが、最大で3台まで増える予定です。

回答としては以上になります。
お手数ですが、よろしくお願いいたします。

at_dominique.m…

2024年2月27日 10時20分

kkk_1709さん

ご回答ありがとうございます。

> 上記の認識で間違いありません。
> 最初の4桁は、fe80です。

それでしたら、最初の返事の説明のとおりに固定した fe80 のアドレスは使用可能になっているはずです。
ただし、fe80 のアドレスはいくつかあるため使いづらいところもあります:
- いくつかのインターフェースがあるため、fe80::... のアドレスだけではなく、送信のネットワークインターフェースも指定する必要があります(linux では 「fe80::...%eth0」 など、windows では「fe80::...%4」などの ipconfig /all に表示されている番号で使います)
- ブラウザのアドレスバーで使用できません (参照: https://github.com/whatwg/url/issues/392 )
- 前回の返事で気づいてませんでしたが、podman の NAT でも使用できないらしい(理由は最後まで確認してないですが、 https://manual.atmark-techno.com/armadillo-iot-g4/armadillo-base-os-dev… のようなコンフィグで ULA からアクセスできますが fe80 では「no route to host」のエラーになります。「set_network host」では fe80 でも使用可能です。)

なので、そのまま DHCP サーバーがなくても fe80 のアドレスを使えますが、アプリケーションに問題があった場合に「unique local address(ULA)」のサブネットを選んでそちらを設定した方がいいかもしれません。

ABOS Web では設定できませんが、手動の手順は以下のとおりです:
- サブネットの選択。例えば https://www.unique-local-ipv6.com/ でランダムに表示されるサブネットを使います。以下では「fd44:a2a6:9a6b::/48」とします。
- Armadillo にサブネット内のアドレスの設定。以下では「fd44:a2a6:9a6b::1/64」を選びました。

armadillo:~# nmcli connection add con-name ethernet-eth0 type ethernet ifname eth0
armadillo:~# nmcli connection modify ethernet-eth0 ipv6.method manual ipv6.addresses fd44:a2a6:9a6b::1/64
armadillo:~# persist_file /etc/NetworkManager/system-connections/ethernet-eth0.nmconnection
armadillo:~# nmcli c up ethernet-eth0

- Armadillo の dnsmasq でそのサブネットの DHCP/RA 追加

armadillo:~# vi /etc/dnsmasq.d/ipv6.conf
interface=eth0
bind-dynamic
dhcp-range=tag:eth0, fd44:a2a6:9a6b::, slaac
enable-ra
dhcp-authoritative
# dns が必要な場合にdhcp-optionで設定できます
dhcp-option=option6:dns-server,[fd44:a2a6:9a6b::1]
armadillo:~# persist_file /etc/dnsmasq.d/ipv6.conf
armadillo:~# rc-service dnsmasq restart

以上、windows PC を再接続した後に fd44:a2a6:9a6b::1 へ接続できるようになるはずです。

コンテナのデフォルトネットワークでは ipv6 が無効になっていますので(podman のデフォルトで)、コンテナへアクセスしたい場合は上記のリンクのようにネットワークに --ipv6 を指定するか、host ネットワークを使用してください。

よろしくお願いします。

マルティネさん

情報ありがとうございます。
いただいた方法で作業したところ、固定IP、DHCPサーバともにうまくいきました。
色々と教えていただきありがとうございました。