DHCPCDを使用したネットワーク管理
この記事は Gentoo Forum の投稿 をもとに書いたもので、完全なネットワークスタック管理のために dhcpcd を用いる方法を解説しています。
もちろん net.* スクリプトとあわせて dhcpcd を使用することもできます。実際、dhcpcd がインストールされていて、
/etc/conf.d/net
内で
config_eth0="dhcp"
が設定されていれば、dhcpcd がデフォルトの DHCP クライアントとして使用されます。この記事は dhcpcd をスタンドアロンで使用する場合に特化して書かれています。
セットアップ
dhcpcd をインストールしてください。つぎに、default ランレベルに追加し、サービスを開始してください。
OpenRC を使用している場合は:
root
#
rc-update add dhcpcd default
root
#
rc-service dhcpcd start
あるいは、 systemd を使用している場合は:
root
#
systemctl enable dhcpcd
root
#
systemctl start dhcpcd
このセットアップ手法は、Gentoo ハンドブック記載のデフォルトのネットワーク設定と異なります。有線と無線でネットワークインタフェイスを自動的に切り替えられるのが利点です。
無線
wpa_supplicant
wpa_supplicant は無線および有線のネットワークインターフェースの認証に利用できます。設定ファイルが存在しない場合は作成してください:
/etc/wpa_supplicant/wpa_supplicant.conf
# 'wheel' グループのユーザに wpa_supplicant の操作を許可する
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=wheel
# このファイルに wpa_gui / wpa_cli が書き込めるようにする
update_config=1
有線インターフェースの認証のためには、 Wpa_supplicant/ja#有線_802.1X_セットアップ で書かれている設定ファイルを追加してください。
まずは dhcpcd のセットアップガイドに従ってください。
wpa_supplicant を emerge してください ( 2017 年 4 月に追加された CONFIG_MATCH_IFACE オプションを使用するためにはバージョン 2.6-r2 以上が必要です):
root
#
emerge --ask net-wireless/wpa_supplicant
OpenRC を使う場合
無線ネットワークインターフェースに
-M
オプションを指定して、 wpa_supplicant の
conf.d
ファイルを完成させてください:
/etc/conf.d/wpa_supplicant
wpa_supplicant_args="-B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"
有線インターフェース のために認証が必要な場合は、設定ファイルは次のようになるでしょう
/etc/conf.d/wpa_supplicant
wpa_supplicant_args="-ieth0 -Dwired -c/etc/wpa_supplicant/wpa_supplicant_wired.conf -B -M -c/etc/wpa_supplicant/wpa_supplicant.conf"
構成が完了したら、サービスとして開始してください:
root
#
rc-update add wpa_supplicant default
root
#
rc-service wpa_supplicant start
Systemd を使う場合
Systemd
では、上のように
conf.d
ファイルを作成する必要なしに、より簡単にデバイス別のセットアップを行うことができます。
既に存在するサービス
セクションの
wpa_supplicant
の項目で説明されているように、
wpa_supplicant@wlan0.service
のようなサービスシンボリックリンクを作成すれば、この場合はデバイス
wlan0
を管理するための個別の設定ファイルを探します。
この方法で特定のデバイスを設定するには、まず
/etc/wpa_supplicant/wpa_supplicant.conf
ファイルをコピーまたはリネームして、
/etc/wpa_supplicant/wpa_supplicant-DEVNAME.conf
としてください。ここで
DEVNAME
は
wlan0
のようなデバイスの名前です。
次に、 /etc/systemd/system/multi-user.target.wants に移動してシンボリックリンクを作成してください:
root
#
ln -s /lib/systemd/system/wpa_supplicant@.service wpa_supplicant@DEVNAME.service
ここで、
DEVNAME
は上の conf ファイルで使ったのと
同じ
デバイス名です。
シンボリックリンク作成ステップの 2 個の引数の双方にある @ 記号に注意してください。
システムをテストしてください:
root
#
systemctl daemon-reload
root
#
systemctl start wpa_supplicant@DEVNAME
root
#
systemctl status wpa_supplicant@DEVNAME
net-wireless/iwd を使う場合
iwd の記事をお読みください。
テスト
dhcpcd サービスを停止させて、-d ( --debug ) と -B ( --nobackground ) オプションを有効にした状態で dhcpcd を実行します。接続処理を進める過程が表示されますので確認します:
root
#
rc-service etc/init.d/dhcpcd stop
root
#
dhcpcd -dB
dhcpcd-6.11.3 starting dev: loaded udev eth0: executing `/lib/dhcpcd/dhcpcd-run-hooks' PREINIT eth0: executing `/lib/dhcpcd/dhcpcd-run-hooks' NOCARRIER wlan0: executing `/lib/dhcpcd/dhcpcd-run-hooks' PREINIT wlan0: executing `/lib/dhcpcd/dhcpcd-run-hooks' CARRIER DUID xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx wlan0: IAID XX:XX:XX:XX wlan0: delaying IPv6 router solicitation for 0.9 seconds wlan0: delaying IPv4 for 0.3 seconds eth0: waiting for carrier wlan0: reading lease `/var/lib/dhcpcd/dhcpcd-wlan0-.lease' wlan0: rebinding lease of 192.168.178.23 wlan0: sending REQUEST (xid 0x66820be2), next in 3.3 seconds wlan0: acknowledged 192.168.178.23 from 192.168.178.1 wlan0: leased 192.168.178.23 for 864000 seconds wlan0: renew in 432000 seconds, rebind in 756000 seconds wlan0: writing lease `/var/lib/dhcpcd/dhcpcd-wlan0-.lease' wlan0: IP address 192.168.178.23/24 already exists wlan0: changing route to 192.168.178.0/24 wlan0: changing default route via 192.168.178.1 wlan0: ARP announcing 192.168.178.23 (1 of 2), next in 2.0 seconds wlan0: executing `/lib/dhcpcd/dhcpcd-run-hooks' BOUND wlan0: soliciting an IPv6 router wlan0: sending Router Solicitation wlan0: ARP announcing 192.168.178.23 (2 of 2)
静的 IP アドレス
ネットワークインタフェイスカードによっては 静的 IP アドレス で設定することを要します。その場合は GUI で設定してください。もしくは、 Dhcpcd#Static_IP_addresses にかかれているように、 /etc/dhcpcd.conf に項目を 自ら記載する (現在オフラインです) ことでも設定可能です。
Gentoo net.* スクリプトからの移行
Gentoo の net.* スクリプト から移行するには、 net.* スクリプトをランレベルから除去することが必要です。スクリプトが現在どのランレベルに属しているか確認するには:
user
$
rc-config list | grep 'wpa_supplicant\|dhcpcd\|net\.'
net.wlp8s0 default dhcpcd default
net.
で始まるどのサービスも、ランレベルに入っていてはいけません。上記の例だと、
net.wlp8s0
を除去せねばなりません:
root
#
rc-update del net.wlp8s0
root
#
rc-service net.wlp8s0 stop
ネットワーク設定がうまく動作したら、Gentoo の
net.*
スクリプト自体を完全に削除することも可能です。もし削除するのならば、
sys-apps/openrc
を
netifrc
USE フラグを無効にして再インストールし、
net-misc/netifrc
をアンインストールしましょう:
root
#
echo 'sys-apps/openrc -netifrc' >> /etc/portage/package.use
root
#
emerge --ask --newuse --oneshot sys-apps/openrc
root
#
emerge --ask --verbose --depclean net-misc/netifrc
以前の設定ファイルやシンボリックリンクも削除可能です:
root
#
rm /etc/conf.d/net
root
#
rm /etc/init.d/net.*
ネットワークが必要なサービス
ネットワークが必要なサービスを dhcpcd で操作することは、openrc-0.16.4 で廃止されました。
GUI
dhcpcd 用の GUI は、 net-misc/dhcpcd-ui に入っています。
関連項目
- Dhcpcd — IPv4 と IPv6 の両方の構成に対応し、幅広く利用されている DHCP クライアントです。
- Dhcpcd-ui — a Qt and GTK monitor and configuration graphical user interface for dhcpcd .