Module-LLMのIPアドレスを固定するには

##  目的

Module-LLMのデバック基板のイーサネットアダプタは、MACアドレスが起動毎に変化するため、DHCPでIPアドレスを割り振っている場合に、再起動をかけるとIPアドレスが変化してしまいます。
~~これはSSHやSambaでアクセスするときに面倒なので、IPアドレスを固定する方法を調べました。~~

## 調査結果

Module-LLMは、DNSにより、ホスト名 m5stack-LLM.local　で接続することができます。
WindowsだとPowerShell開いて以下で参照できます。

```
> Resolve-DnsName m5stack-LLM.local
Name                                           Type   TTL   Section    IPAddress
----                                           ----   ---   -------    ---------
m5stack-LLM.local                              AAAA   120   Answer     fe80::f499:b3ff:fe7b:97fb
m5stack-LLM.local                              A      120   Answer     192.168.20.6
```

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">2つ目買って後から届いたModule LLM 元々新しいファームが入ってるのね(いまさらｗ)<br><br>あとDHCPでIP分からん問題がｍDNSで解決されてる<br>ホスト名 m5stack-LLM.local で繋がる<br>WindowsだとPowerShell開いて<br>　Resolve-DnsName m5stack-LLM.local<br>で引けます<br>※複数持ってる人はホスト名変えましょうｗ</p>&mdash; わしし (@washishi) <a href="https://twitter.com/washishi/status/1878368824971719139?ref_src=twsrc%5Etfw">January 12, 2025</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>

~~以下の方法は、Module-LLMではうまく設定できなくなりました。~~
12月にM5Stackがリリースしたファームウェア(M5_LLM_ubuntu_v1.3_20241203-mini)にしてから、DNSが有効になりましたが、その代わり、以下の方法でのhwaddressでMACアドレス固定するとDHCPが失敗するようになりました。(2025/1/18)
~~@ciniml 氏が見つけた方法が一番良さそうだとなりました。~~

![GhnYQ6FaYAAWAYg.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/73020/8f941472-6b0a-5cc8-7dbd-b3ab6549cfa2.png)


@nyasu3w2022氏がIPアドレス固定する方法を見つけられました。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">やっぱりMACアドレスがコロコロ変わるのうざいので、今のアドレスに固定することにした。とりあえず<br>/lib/systemd/system/ifupdown-pre.serviceのExecStartの前にもう一行<br>ExecStart=/usr/sbin/ip link set dev eth0 address xx:xx:xx:xx:xx:xx （xxは書きかえる）<br>で何とかなった模様</p>&mdash; nyasu3w (@nyasu3w2022) <a href="https://twitter.com/nyasu3w2022/status/1883851364595585356?ref_src=twsrc%5Etfw">January 27, 2025</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>



## MACアドレスを固定する
~~ifconfigでMACアドレスを調べます。Module-LLMのMACアドレスは、"aa:f6:f8:b8:45:b6"となっていました。これが再起動するごとに変わってしまいます。~~

```
root@m5stack-LLM:~# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.20.6  netmask 255.255.255.0  broadcast 192.168.20.255
        inet6 fe80::f8c2:69ff:fe35:455c  prefixlen 64  scopeid 0x20<link>
        ether aa:f6:f8:b8:45:b6  txqueuelen 1000  (Ethernet)
        RX packets 760  bytes 73762 (73.7 KB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 753  bytes 68037 (68.0 KB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0
        device interrupt 27
```

~~/etc/network/interfacesで、Module-LLMのMACアドレスをhwaddressを設定します。
この時に、ネットワーク上に同じMACアドレスがいないことを確認してください。
hwaddressを設定すると、Ubuntuが起動したときに、そのネットワークインターフェースのMACアドレスが指定した値（この場合は`aa:f6:f8:b8:45:b6`）に変更されます。~~

```
root@m5stack-LLM:~# vi /etc/network/interfaces
```


```
# interfaces(5) file used by ifup(8) and ifdown(8)
# Include files from /etc/network/interfaces.d:
source /etc/network/interfaces.d/*

allow-hotplug eth0
iface eth0 inet dhcp
hwaddress 42:11:ad:11:e7:44 #これを追加する
```

## 注意

~~この設定を行う際は、いくつかの重要な注意点があります。~~

~~1. 同じネットワーク内で他の機器が同じMACアドレスを使用していないか確認することが重要です。さらに、ルーターでMACアドレスフィルタリングを使用している場合、通信がブロックされる可能性があります。~~

~~2. 設定後はネットワークの再起動が必要です。
また、DHCPサーバーが新しいMACアドレスを認識するまでに時間がかかる場合もあります。~~



## 参考

<blockquote class="twitter-tweet"><p lang="en" dir="ltr">I think the key reason is that, we have not bought the macaddress, so officialy we should not assign any MAC out, since they may not be unique. We should get some MAC in the future.</p>&mdash; HanxiaoMeow (@HanxiaoM) <a href="https://twitter.com/HanxiaoM/status/1853812794925388005?ref_src=twsrc%5Etfw">November 5, 2024</a></blockquote> <script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>