Centos 7を実行し、8つのネットワークインターフェイスを備えたマシンを使用しています。これらのインターフェイスのうち3つを構成して実行しています。
ローカルLANインターフェースを処理するようにdhcpdを構成しました。
未構成のインターフェースについて、syslogに次の警告が表示されます。
No subnet declaration for enp6s0 (no IPv4 addresses).
** Ignoring requests on enp6s0. If this is not what
you want, please write a subnet declaration
in your dhcpd.conf file for the network segment
to which interface enp6s0 is attached. **
以前は、/ etc/syslog/dhcpdを編集して、リッスンするインターフェイスを示していました。しかし、そのファイルは今それを行わず、インターフェースのサブネットを指定するように言っています。
これらの未使用のインターフェースにはアドレスがないため、それらのサブネット構成を作成する方法がわかりません。
Dhcpdにこれらのインターフェースを無視させる別の方法はありますか?
最初の編集-
既存のサブネット宣言に対してこれを行うと、警告が消えます。
subnet xx.xx.xx.xx mask yy.yy.yy.yy {
interface zzzzzz;
.... subnet declaration
}
しかし、サブネットのインターフェースオプションを示すドキュメントはありません。それは変だと思います。
別のサブネット上にある場合は、インターフェース行を追加する必要はありません。 Slackware 14.2 Linuxディストリビューションは、次の例を提供します。
# No service will be given on this subnet, but declaring it helps the
# DHCP server to understand the network topology.
subnet 192.168.2.0 netmask 255.255.255.0 {
}
これをdhcpd.conf
に追加すると、次のようなメッセージがログに記録されます。
Listening on LPF/wlan0/a0:2b:6a:b5:24:d0/192.168.2.0/24
Sending on LPF/wlan0/a0:2b:6a:b5:24:d0/192.168.2.0/24
ただし、そのサブネットにはサービスは提供されません。
あるいは、単一のインターフェースを介してDHCPを提供するだけの場合は、dhcpd
を開始するときにコマンドラインでそのインターフェースを指定できます。
dhcpd eth0
この2番目の方法では、dhcpd.conf
で追加のサブネットを指定する必要がなく、物理的に分離されたネットワークにDHCPを提供している場合に特に便利です。
CentOS 7.2の/ etc/sysconfig/dhcpdにある以下のコメント:
# WARNING: This file is NOT used anymore.
# If you are here to restrict what interfaces should dhcpd listen on,
# be aware that dhcpd listens *only* on interfaces for which it finds subnet
# declaration in dhcpd.conf. It means that explicitly enumerating interfaces
# also on command line should not be required in most cases.
私は信じている /etc/sysconfig/dhcpd
は、$ {RHELish} 7システムのsystemdでリッスンするインターフェースを制限する方法を示します。
cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system
sed -i '/^ExecStart/s/$/ blah0 blah1 .../' /etc/systemd/system/dhcpd.service
systemctl --system daemon-reload
systemctl restart dhcpd.service
RHEL6
/ etc/sysconfig/dhcpdのDHCPDARGSを設定して、デーモンがリッスンするインターフェースだけを含めるようにします(たとえば、eth3を無視するeth0 eth1)。
DHCPDARGS = "eth0 eth1"
DHCPDARGS機能をRHEL7に復元する
# cp /usr/lib/systemd/system/dhcpd.service /etc/systemd/system/
# vi /etc/systemd/system/dhcpd.service
# ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid $DHCPDARGS
# systemctl --system daemon-reload
# systemctl restart dhcpd.service
Richardの回答はRHEL 7にも当てはまります。
私は彼の答えにコメントとしてこれを追加したでしょうが、まだ十分な評判がありません。
ドキュメントによると、ユーザーが変更したsystemdユニットファイルを配置する正しい場所は/ etc/systemd/systemです。
Dhcpd.serviceファイルを/ etc/systemd/systemに配置し、このファイルのExecStart行を変更して、彼の回答で示したように、目的のインターフェースを含めることで確認できます。
彼の答えを少し拡張するには:
変更を加えてサービスを開始した後、次のコマンドでステータスを照会できます。
systemctl status dhcpd.service
次の出力が表示され、正しいインターフェイスでリッスンしていること、および必要なインターフェイスのみがリッスンしていることが確認されます。
systemctl status dhcpd.service
●dhcpd.service-DHCPv4サーバーデーモンロード:ロード済み(/etc/systemd/system/dhcpd.service;無効、ベンダープリセット:無効)アクティブ:2011年5月2日03:32:11 CDT以降アクティブ(実行中)。 5秒前ドキュメント:man:dhcpd(8)man:dhcpd.conf(5)メインPID:27814(dhcpd)ステータス: "パケットをディスパッチしています..." CGroup:/system.slice/dhcpd.service└─27814/ usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid enp3s0
May 02 03:32:11 Host.example dhcpd [27814]:Copyright 2004-2013 Internet Systems Consortium。 5月2日03:32:11 Host.example dhcpd [27814]:すべての権利を保有。 May 02 03:32:11 Host.example dhcpd [27814]:詳細については、 https://www.isc.org/software/dhcp/ May 02 03:32:11 Hostにアクセスしてください。例dhcpd [27814]:0がリースファイルへのホストdeclを削除しました。 May 02 03:32:11 Host.example dhcpd [27814]:リースファイルに0の新しい動的ホストdeclsを書き込みました。 May 02 03:32:11 Host.example dhcpd [27814]:リースファイルにリース0を書き込みました。 May 02 03:32:11 Host.example dhcpd [27814]:LPF/enp3s0/00:1e:0b:50:f7:64/10.0.0.0/24をリスニングMay 02 03:32:11 Host.example dhcpd [ 27814]:送信中
LPF/enp3s0/00:1e:0b:50:f7:64/10.0.0.0/24 May 02 03:32:11 Host.example dhcpd [27814]:Socket/fallback/fallback-netで送信5月2日03:32:11 Host.example systemd [1]:DHCPv4サーバーデーモンを開始しました。
/etc/systemd/system/dhcpd.service
[Unit] Description=DHCPv4 Server Daemon
Documentation=man:dhcpd(8) man:dhcpd.conf(5)
Wants=network-online.target After=network-online.target
After=time-sync.target
[Service]
Type=notify
ExecStart=/usr/sbin/dhcpd -f -cf /etc/dhcp/dhcpd.conf -user dhcpd -group dhcpd --no-pid enp3s0
[Install]
WantedBy=multi-user.target
RHEL 7.6 x86_64とdhcp-4.2.5-68.el7でテスト済み
解決策は、dhcpdにそれらのインターフェースを監視することは想定されていないことを伝えることです。デフォルトでは、dhcpdはすべてのブロードキャスト対応インターフェースを監視しようとしますが、管理するインターフェースの明示的なリストをコマンドラインで指定できます。 dhcpdの起動スクリプトを確認すると、操作する特定のethNを挿入できる場所が見つかります。
または、警告を無視することもできます。設定ミスの可能性があるため、期待どおりの結果が得られない可能性があることを示しているだけです。すべてのインターフェースを監視するようにdhcpdに暗黙的に要求し、それができないことを通知しています。