概要
DHCPをつかったネットワーク設定をしたかったが、デフォルトで使用可能なdhcpcdがうまく動かなかったので、
dhclientを使うことにした。
やったこと
dhcpcdがうまく動かない
Arch Linuxの公式ドキュメントではdhcpcdを使用した例が記載されているが、下記のようなメッセージが出て成功しなかった。
# dhcpcd enp2s0
enp2s0: soliciting a DHCP lease
enp2s0: solicting an IPv6 router
enp2s0: no IPv6 Routers available
timed out
dhcpcd exited
dhclientなら動いた
ためしにdhclient enp2s0
を実行したらIPアドレスが設定されたので、こちらを使うことにした。
※なぜenp2s0を指定しているかというと、ip a
で見えているデバイス名がこれだったから
systemdにお任せする
起動時に実行してほしいので、systemdにお任せする。
# systemctl enable dhclient@enp2s0.service
コマンドは正常終了したが、OS再起動後に確認すると、IPアドレスが設定されていない
ログを見る。
# journalctl -u dhclient@enp2s0.service
...
Cannot find device "enp2s0"
...
もう一度ip a
を実行してみるが、やっぱりある。
起動時のログをみる
# dmesg | grep enp2s0
どうやらeth0からenp2s0にリネームしているらしい
デバイス名の指定を変える
# systemctl enable dhclient@eth0.service
再起動したところ、正しくIPアドレスは設定されていた。
ただし、ip a
で確認できるデバイス名がenp2s0からeth0に変わっていた。実害ないし、いいか…
余談:systemdのサービス名(ユニット名?)に含めた" @eth0"という記法
ユニット設定ファイル(/usr/lib/systemd/system以下にある)内で、"%I"がeth0に置換されるようになる。
余談:dhclientはデフォルトでインストールされていない
pacmanコマンドでdhclientをインストールする必要があるが、ネットワークが繋がっていない状態のはず。
こんな感じで一時的に手動でネットワーク設定をするのがよいかもしれない。(IPアドレスは各々の環境に合わせること)
# ip link set eth0 up
# ip addr add 192.168.1.2/24 broadcast 192.168.1.255 dev eth0
# ip route add default via 192.168.1.1
DNSも忘れずに設定しよう。(一時的な設定)
# cat /etc/resolv.conf
nameserver 8.8.8.8
やり残し
- なぜdhcpcdが動かなかったか
- なんとなくIPv6を無効にしたり、こっちもeth0にしてみたら、動かないかな
- tcpdumpしたら何かわかるかも
- systemdでdhclientを起動するようにしたら、デバイス名がenp2s0がeth0に変わってしまった
- 気にはなるけど、今のところ困っていない