インターフェイスが動作していても、DNSMASQは「不明なインターフェイスエラー」として起動を拒否します。

インターフェイスが動作していても、DNSMASQは「不明なインターフェイスエラー」として起動を拒否します。

これは、インターネットの他の場所では見つからない奇妙な質問です。これは私が台無しにしたものかもしれないことを示唆しています。しかし、何ですか?

dnsmasq.serviceすべてのネットワークサービスが利用可能で動作中に起動時またはユーザーセッションから起動しようとすると、エラーで失敗しますunknown interface enp2s0

andrzej@andrzej-PC ~ $ sudo systemctl start dnsmasq
Job for dnsmasq.service failed because the control process exited with 
error code. See "systemctl status dnsmasq.service" and "journalctl -xe" for details.
andrzej@andrzej-PC ~ $ systemctl status dnsmasq
● dnsmasq.service - dnsmasq - A lightweight DHCP and caching DNS server
   Loaded: loaded (/lib/systemd/system/dnsmasq.service; disabled; vendor preset:
  Drop-In: /run/systemd/generator/dnsmasq.service.d
           └─50-dnsmasq-$named.conf, 50-insserv.conf-$named.conf
   Active: failed (Result: exit-code) since Mon 2017-07-10 02:09:41 CEST; 3s ago
  Process: 5551 ExecStart=/etc/init.d/dnsmasq systemd-exec (code=exited, status=
  Process: 5548 ExecStartPre=/usr/sbin/dnsmasq --test (code=exited, status=0/SUC

Jul 10 02:09:41 andrzej-PC systemd[1]: Starting dnsmasq - A lightweight DHCP and
Jul 10 02:09:41 andrzej-PC dnsmasq[5548]: dnsmasq: syntax check OK.
Jul 10 02:09:41 andrzej-PC dnsmasq[5551]: dnsmasq: unknown interface enp2s0
Jul 10 02:09:41 andrzej-PC systemd[1]: dnsmasq.service: Control process exited, 
Jul 10 02:09:41 andrzej-PC systemd[1]: Failed to start dnsmasq - A lightweight D
Jul 10 02:09:41 andrzej-PC systemd[1]: dnsmasq.service: Unit entered failed stat
Jul 10 02:09:41 andrzej-PC systemd[1]: dnsmasq.service: Failed with result 'exit

以下を除いて正しいです。

andrzej@andrzej-PC ~ $ ifconfig
enp2s0    Link encap:Ethernet  HWaddr /*correct address*/  
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:921 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000 
          RX bytes:0 (0.0 B)  TX bytes:147421 (147.4 KB)

そして同じip addr

2: enp2s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    link/ether /*same*/ brd ff:ff:ff:ff:ff:ff

ついに:

andrzej@andrzej-PC ~ $ cat /sys/class/net/enp2s0/operstate
up

何?ああ、私の設定ファイルは次のとおりです。

port=0
interface=enp2s0
dhcp-range=192.168.0.50,192.168.0.150,12h
dhcp-boot=/install/netboot/pxelinux.0
dhcp-option-force=209,install/netboot/pxelinux.cfg
dhcp-option-force=210,/
dhcp-option-force=66,192.168.0.1
enable-tftp
tftp-root=/mnt

答え1

DNSMasq サービス記述の変更

sudo nano /lib/systemd/system/dnsmasq.service

インターフェイスの起動後に起動するには、RequiresとAfterを変更してください。

Requires=network-online.target
After=network-online.target

答え2

私は同じ状況に直面しました。 dnsmasqは、他のシステムに連続的に(スイッチなし)接続されているPXEに使用されるセカンダリethインターフェイスからの起動を拒否しました。

リンクが確立されると(一部のネットワークトラフィック、NICインジケータが点灯)、dnsmasqが正常に動作し始めました。

私はそれが非常に科学的ではないことを知っていますが、それは私にとって効果的でした(Ubuntu 20.04)

答え3

システムの再起動に役立ちました。 dnsmasqが問題なく開始されました。 dnsmasq で使用するように設定されたインターフェイスのデバイス設定がまだ適用されていない可能性があります。

答え4

Linuxを使用している場合は有効にできます。動的バインディング。文書によると:

混合ネットワークモードの有効化--bind-interfaces とデフォルト値。 Dnsmasqはアドレスを個々のインターフェイスにバインドしてdnsmasqの複数のインスタンスを受け入れますが、新しいインターフェイスまたはアドレスが表示されると自動的にそれを受信します(アクセス制御の設定によって異なります)。これにより、動的に生成されたインターフェイスがプライマリインターフェイスと同じように機能します。このオプションを実装するには、非標準ネットワークAPIが必要で、Linuxでのみ使用できます。他のプラットフォームでは、次のように置き換えられます。--bind-interfacesモデル。

削除することを忘れないでくださいバインディングインターフェース

引用:https://thekelleys.org.uk/dnsmasq/docs/dnsmasq-man.html

関連情報