dhcpd
関連記事
dhcpd は Internet Systems Consortium による DHCP サーバーです。LAN 上でルーターとして動作するマシンなどで有用です。
インストール
公式リポジトリの dhcp パッケージをインストールしてください。
使用方法
dhcpd にはユニットファイル dhcpd4.service
が含まれており、これを使ってデーモンを制御できます。全てのネットワークインターフェイスでデーモンが起動します。#一つのインターフェイスだけを使う も見て下さい。
設定
使用したいインターフェイスに固定 IPv4 アドレスを割り当ててください (このページでは例として eth0
を使います)。アドレスの最初の3バイトを他のインターフェイスのアドレスと全く同じにすることはできません。
# ip link set up dev eth0 # ip addr add 139.96.30.100/24 dev eth0 # arbitrary address
起動時に固定 ip を割り当てるには、ネットワーク設定#固定 IP アドレスを参照。
デフォルトの dhcpd.conf
にはアンコメントされている例がたくさん含まれているので、ファイルを移動してください:
# mv /etc/dhcpd.conf /etc/dhcpd.conf.example
最小限の設定ファイルは以下のようになります:
/etc/dhcpd.conf
option domain-name-servers 8.8.8.8, 8.8.4.4; option subnet-mask 255.255.255.0; option routers 139.96.30.100; subnet 139.96.30.0 netmask 255.255.255.0 { range 139.96.30.150 139.96.30.250; }
特定のデバイスで固定 IP アドレスを使う必要がある場合、以下の構文を使います:
/etc/dhcpd.conf
option domain-name-servers 8.8.8.8, 8.8.4.4; option subnet-mask 255.255.255.0; option routers 139.96.30.100; subnet 139.96.30.0 netmask 255.255.255.0 { range 139.96.30.150 139.96.30.250; host macbookpro{ hardware ethernet 70:56:81:22:33:44; fixed-address 139.96.30.199; } }
domain-name-servers
オプションにはクライアントに供給する DNS サーバーのアドレスを記入します。上の例では Google のパブリック DNS サーバーを使っています。(ISP などによる) ローカルの DNS サーバーがある場合、それを使ってください。ローカルマシンで DNS を自分で設定している場合、そのアドレスを使ってください (例: 139.96.30.100
)。
subnet-mask
と routers
はサブネットマスクとサブネット上の利用可能なルーターのリストを定義します。小規模なネットワークであれば大抵は 255.255.255.0
をマスクとして、ルーターとして DHCP サーバーを設定しているマシンの IP アドレスを指定します。
subnet
ブロックには各サブネットのオプションを定義します。dhcpd が動作するネットワークインターフェイスにマッピングされます。上記の場合、サブネット 139.96.30.0/24
でインターフェイス eth0
を使用して、利用可能な IP アドレスの範囲を定義しています。この範囲のアドレスが接続してきたクライアントに割り当てられます。
設定後、systemctl を使って dhcpd4.service
を起動することで dhcpd デーモンを起動できます。任意で、ブート時に自動的に起動するように有効化してください。
一つのインターフェイスだけを使う
既にコンピュータがネットワークの一部となっている場合、他のネットワークからマシンに ip アドレスを付与すると問題になる可能性があります。dhcpd を設定したり systemctl を使ってデーモンとして dhcpd を起動することで使用するインターフェイスを一つに絞ることができます。
dhcpd の設定
インターフェイスを除外するには、除外したいインターフェイスでサブネットの空の宣言を作成する必要があります。
設定ファイルを編集することで作成できます (例):
/etc/dhcpd.conf
# No DHCP service in DMZ network (192.168.2.0/24) subnet 192.168.2.0 netmask 255.255.255.0 { }
サービスファイル
デフォルトではインターフェイスを一つだけ使用する dhcpd のサービスファイルは存在しないため、作成する必要があります:
/etc/systemd/system/dhcpd4@.service
[Unit] Description=IPv4 DHCP server on %I Wants=network.target After=network-pre.target Before=network.target [Service] Type=forking PIDFile=/run/dhcpd4.pid ExecStart=/usr/bin/dhcpd -4 -q -pf /run/dhcpd4.pid %I KillSignal=SIGINT [Install] WantedBy=multi-user.target
上記は、特定のインターフェイスに bind するテンプレートユニットです。例えば dhcpd4@eth0.service
などとして使います (eth0 は ip link
で確認できるインターフェイスに置き換えて下さい)。
PXE
PXE の設定は以下の2つのオプションで行います:
/etc/dhcpd.conf
next-server 192.168.0.2; filename "/pxelinux.0";
上記のセクションは subnet
全体の中か host
の定義の中のどちらかに記述できます。next-server
は TFTP サーバーの IP に、filename
は起動するイメージのファイル名に置き換えてください。詳しくは PXE を参照。