dhcpd
関連記事
dhcpd は Internet Systems Consortium による DHCP サーバーです。LAN 上でルーターとして動作するマシンなどで有用です。
目次
インストール
公式リポジトリの dhcp パッケージをインストールしてください。
設定
使用したいインターフェイスに固定 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; }
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. 139.96.30.100
in our example).
subnet-mask
and routers
defines a subnet mask and a list of available routers on the subnet. In most cases for small networks you can use 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.
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 139.96.30.0/24
for single interface eth0
, for which we defined the range of available IP addresses. Addresses from this range will be assigned to the connecting clients.
設定後、systemctl を使って dhcpd4.service
を起動することで dhcpd デーモンを起動できます。任意で、ブート時に自動的に起動するように有効化してください。
Now, to any computer you connect to the eth0
will be assigned an IPv4 address (from 139.96.30.150
to 139.96.30.250
in this example).
Tips and Tricks
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 systemctl.
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):
/etc/dhcpd.conf
# No DHCP service in DMZ network (192.168.2.0/24) subnet 192.168.2.0 netmask 255.255.255.0 { }
サービスファイル
There is no service files provided by default to use dhcpd only on one interface so you need to create one:
/etc/systemd/system/dhcpd4@.service
[Unit] Description=IPv4 DHCP server on %I Wants=network.target After=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
Now you can start dhcpd as a daemon which only listen to a specific interface, for example eth0
.
# systemctl start dhcpd4@eth0.service