「Dhcpd」の版間の差分

提供: ArchWiki
ナビゲーションに移動 検索に移動
(ページの作成:「{{Lowercase title}} Category:ネットワーク de:Dhcpd en:Dhcpd ru:Dhcpd {{Related articles start}} {{Related|dhcpcd}} {{Related articles end}} dhcpd...」)
 
(Archwiki: Keaページへのリンクに変更)
 
(3人の利用者による、間の12版が非表示)
1行目: 1行目:
 
{{Lowercase title}}
 
{{Lowercase title}}
[[Category:ネットワーク]]
+
[[Category:DHCP]]
 
[[de:Dhcpd]]
 
[[de:Dhcpd]]
 
[[en:Dhcpd]]
 
[[en:Dhcpd]]
  +
[[pt:Dhcpd]]
 
[[ru:Dhcpd]]
 
[[ru:Dhcpd]]
  +
[[zh-hans:Dhcpd]]
 
{{Related articles start}}
 
{{Related articles start}}
 
{{Related|dhcpcd}}
 
{{Related|dhcpcd}}
 
{{Related articles end}}
 
{{Related articles end}}
   
dhcpd は [http://www.isc.org/downloads/dhcp/ Internet Systems Consortium] による DHCP サーバーです。LAN ルーターとして動作するマシンどで有用です。
+
[https://www.isc.org/dhcp/ dhcpd] は、古い Internet Systems Consortium (ISC) DHCP サーバーです。''dhcpd'' は 2023 年 1 月時点保守されなくなっているこに注意してください。ISC は、[[Kea]] を正式後継者として推進します。
  +
  +
{{Note|''dhcpd'' (DHCP '''(サーバー)''' デーモン) は [[dhcpcd]] (DHCP '''クライアント'''デーモン) とは違います。}}
   
 
== インストール ==
 
== インストール ==
  +
 
[[公式リポジトリ]]の {{pkg|dhcp}} パッケージを[[インストール]]してください。
 
[[公式リポジトリ]]の {{pkg|dhcp}} パッケージを[[インストール]]してください。
  +
  +
== 使用方法 ==
  +
  +
''dhcpd'' にはユニットファイル {{ic|dhcpd4.service}} が含まれており、これを使ってデーモンを[[有効化|制御]]できます。全ての[[ネットワーク設定#ネットワークインターフェース|ネットワークインターフェイス]]でデーモンが起動します。[[#一つのインターフェイスだけを使う]] も見て下さい。
   
 
== 設定 ==
 
== 設定 ==
20行目: 29行目:
 
# ip addr add 139.96.30.100/24 dev eth0 # arbitrary address
 
# ip addr add 139.96.30.100/24 dev eth0 # arbitrary address
   
  +
{{Tip|通常、プライベートネットワークでは、特別に予約されている以下の3つのサブネットのどれかを使用します。インターネット上のホストと衝突することはありません:
{{Tip|Usually, the one of next three subnets is used for private networks, which are specially reserved and won't conflict with any host in the Internet:
 
* {{ic|192.168/16}} (subnet {{ic|192.168.0.0}}, netmask {{ic|255.255.0.0}})
+
* {{ic|192.168/16}} (サブネット {{ic|192.168.0.0}}, ネットマスク {{ic|255.255.0.0}})
* {{ic|172.16/12}} (subnet {{ic|172.16.0.0}}, netmask {{ic|255.240.0.0}})
+
* {{ic|172.16/12}} (サブネット {{ic|172.16.0.0}}, ネットマスク {{ic|255.240.0.0}})
* {{ic|10/8}} (for large networks; subnet {{ic|10.0.0.0}}, netmask {{ic|255.0.0.0}})
+
* {{ic|10/8}} (大規模ネットワーク用; サブネット {{ic|10.0.0.0}}, ネットマスク {{ic|255.0.0.0}})
See also [http://www.ietf.org/rfc/rfc1918.txt RFC 1918].}}
+
[https://www.ietf.org/rfc/rfc1918.txt RFC 1918] も参照。}}
   
 
起動時に固定 ip を割り当てるには、[[ネットワーク設定#固定 IP アドレス]]を参照。
 
起動時に固定 ip を割り当てるには、[[ネットワーク設定#固定 IP アドレス]]を参照。
43行目: 52行目:
 
}}
 
}}
   
  +
特定のデバイスで固定 IP アドレスを使う必要がある場合、以下の構文を使います:
{{ic|domain-name-servers}} option contains addresses of DNS servers which are supplied to clients. In our example we are using Google's public DNS servers. If you know a local DNS servers (for example, provided by your ISP), you should use it. If you've configured your own DNS on a local machine, then use its address in your subnet (e. g. {{ic|139.96.30.100}} in our example).
 
   
  +
{{hc|/etc/dhcpd.conf|
{{ic|subnet-mask}} and {{ic|routers}} defines a subnet mask and a list of available routers on the subnet. In most cases for small networks you can use {{ic|255.255.255.0}} as a mask and specify an IP address of the machine on which you're configuring DHCP server as a router.
 
  +
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{
{{ic|subnet}} blocks defines options for separate subnets, which are mapped to the network interfaces on which ''dhcpd'' is running. In our example this is one subnet {{ic|139.96.30.0/24}} for single interface {{ic|eth0}}, for which we defined the range of available IP addresses. Addresses from this range will be assigned to the connecting clients.
 
  +
hardware ethernet 70:56:81:22:33:44;
  +
fixed-address 139.96.30.199;
  +
}
  +
}
  +
}}
   
  +
{{ic|domain-name-servers}} オプションにはクライアントに供給する DNS サーバーのアドレスを記入します。上の例では Google のパブリック DNS サーバーを使っています。(ISP などによる) ローカルの DNS サーバーがある場合、それを使ってください。ローカルマシンで DNS を自分で設定している場合、そのアドレスを使ってください (例: {{ic|139.96.30.100}})。
設定後、[[Systemd#ユニット使う|systemctl]] を使って {{ic|dhcpd4.service}} を起動することで ''dhcpd'' デーモンを起動できます。任意で、ブート時に自動的に起動するように有効化してください。
 
   
  +
{{ic|subnet-mask}} と {{ic|routers}} はサブネットマスクとサブネット上の利用可能なルーターのリストを定義します。小規模なネットワークであれば大抵は {{ic|255.255.255.0}} をマスクとして、ルーターとして DHCP サーバーを設定しているマシンの IP アドレスを指定します。
Now, to any computer you connect to the {{ic|eth0}} will be assigned an IPv4 address (from {{ic|139.96.30.150}} to {{ic|139.96.30.250}} in this example).
 
  +
  +
{{ic|subnet}} ブロックには各サブネットのオプションを定義します。''dhcpd'' が動作するネットワークインターフェイスにマッピングされます。上記の場合、サブネット {{ic|139.96.30.0/24}} でインターフェイス {{ic|eth0}} を使用して、利用可能な IP アドレスの範囲を定義しています。この範囲のアドレスが接続してきたクライアントに割り当てられます。
  +
  +
設定後、[[Systemd#ユニット使う|systemctl]] を使って {{ic|dhcpd4.service}} を起動することで ''dhcpd'' デーモンを起動できます。任意で、ブート時に自動的に起動するように有効化してください。
   
  +
=== 一つのインターフェイスだけを使う ===
== Tips and Tricks ==
 
  +
既にコンピュータがネットワークの一部となっている場合、他のネットワークからマシンに ip アドレスを付与すると問題になる可能性があります。dhcpd を設定したり [[Systemd#ユニットを使う|systemctl]] を使ってデーモンとして dhcpd を起動することで使用するインターフェイスを一つに絞ることができます。
=== Listening on only one interface ===
 
If your computer is already part of one or several networks, it could be a problem if your computer starts giving ip addresses to machines from the other networks. It can be done by either configuring dhcpd or starting it as a daemon with [[Systemd#Using units|systemctl]].
 
   
 
==== dhcpd の設定 ====
 
==== dhcpd の設定 ====
  +
インターフェイスを除外するには、除外したいインターフェイスでサブネットの空の宣言を作成する必要があります。
In order to exclude an interface, you must create an empty declartion for the subnet that will be configured on that interface.
 
   
  +
設定ファイルを編集することで作成できます (例):
This is done by editing the configuration file (for example):
 
 
{{hc|/etc/dhcpd.conf|<nowiki>
 
{{hc|/etc/dhcpd.conf|<nowiki>
 
# No DHCP service in DMZ network (192.168.2.0/24)
 
# No DHCP service in DMZ network (192.168.2.0/24)
68行目: 90行目:
   
 
==== サービスファイル ====
 
==== サービスファイル ====
There is no service files provided by default to use ''dhcpd'' only on one interface so you need to create one:
 
   
  +
''dhcpd'' によって提供されるデフォルトのサービスファイルはインターフェイスを指定しません。次のように、{{ic|dhcpd4.service}} に [[ドロップインファイル]] を使用します。
{{hc| /etc/systemd/system/dhcpd4@.service|<nowiki>
 
[Unit]
 
Description=IPv4 DHCP server on %I
 
Wants=network.target
 
After=network.target
 
   
  +
{{hc|/etc/systemd/system/dhcpd4.service.d/override.conf|2=
 
[Service]
 
[Service]
  +
ExecStart=
Type=forking
 
PIDFile=/run/dhcpd4.pid
+
ExecStart=/usr/bin/dhcpd -4 -q -cf /etc/dhcpd.conf -pf /run/dhcpd4/dhcpd.pid %I
  +
}}
ExecStart=/usr/bin/dhcpd -4 -q -pf /run/dhcpd4.pid %I
 
KillSignal=SIGINT
 
   
  +
これにより、{{ic|dhcpd4.service}} をテンプレートユニットとして使用し、''dhcpd'' を特定のインターフェイスにバインドできるようになります。たとえば、{{ic|dhcpd4@''eth0''.service}}、''eth0'' は [https://freedesktop.org/wiki/Software/systemd/PredictableNetworkInterfaceNames で最初に列挙されたイーサネットデバイス] です。
[Install]
 
  +
WantedBy=multi-user.target
 
  +
=== PXE ===
  +
  +
PXE の設定は以下の2つのオプションで行います:
  +
  +
{{hc|/etc/dhcpd.conf|<nowiki>
  +
next-server 192.168.0.2;
  +
filename "/pxelinux.0";
 
</nowiki>}}
 
</nowiki>}}
   
  +
上記のセクションは {{ic|subnet}} 全体の中か {{ic|host}} の定義の中のどちらかに記述できます。{{ic|next-server}} は TFTP サーバーの IP に、{{ic|filename}} は起動するイメージのファイル名に置き換えてください。詳しくは [[PXE]] を参照。
Now you can start ''dhcpd'' as a daemon which only listen to a specific interface, for example {{ic|eth0}}.
 
  +
# systemctl start dhcpd4@eth0.service
 
  +
== 参照 ==
  +
  +
* [https://kb.isc.org/docs/aa-00333 ISC DHCP ドキュメント]

2024年4月13日 (土) 11:35時点における最新版

関連記事

dhcpd は、古い Internet Systems Consortium (ISC) DHCP サーバーです。dhcpd は 2023 年 1 月時点で保守されなくなっていることに注意してください。ISC は、Kea を正式な後継者として推進します。

ノート: dhcpd (DHCP (サーバー) デーモン) は dhcpcd (DHCP クライアントデーモン) とは違います。

インストール

公式リポジトリ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
ヒント: 通常、プライベートネットワークでは、特別に予約されている以下の3つのサブネットのどれかを使用します。インターネット上のホストと衝突することはありません:
  • 192.168/16 (サブネット 192.168.0.0, ネットマスク 255.255.0.0)
  • 172.16/12 (サブネット 172.16.0.0, ネットマスク 255.240.0.0)
  • 10/8 (大規模ネットワーク用; サブネット 10.0.0.0, ネットマスク 255.0.0.0)
RFC 1918 も参照。

起動時に固定 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-maskrouters はサブネットマスクとサブネット上の利用可能なルーターのリストを定義します。小規模なネットワークであれば大抵は 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 によって提供されるデフォルトのサービスファイルはインターフェイスを指定しません。次のように、dhcpd4.serviceドロップインファイル を使用します。

/etc/systemd/system/dhcpd4.service.d/override.conf
[Service]
ExecStart=
ExecStart=/usr/bin/dhcpd -4 -q -cf /etc/dhcpd.conf -pf /run/dhcpd4/dhcpd.pid %I

これにより、dhcpd4.service をテンプレートユニットとして使用し、dhcpd を特定のインターフェイスにバインドできるようになります。たとえば、dhcpd4@eth0.serviceeth0で最初に列挙されたイーサネットデバイス です。

PXE

PXE の設定は以下の2つのオプションで行います:

/etc/dhcpd.conf
next-server 192.168.0.2;
filename "/pxelinux.0";

上記のセクションは subnet 全体の中か host の定義の中のどちらかに記述できます。next-server は TFTP サーバーの IP に、filename は起動するイメージのファイル名に置き換えてください。詳しくは PXE を参照。

参照