dnsmasq:ポート53のリッスンソケットの作成に失敗しました:アドレスは既に使用されています


16

以下のリンクhttps://help.ubuntu.com/community/Dnsmasqのようにサーバーをセットアップしました

root@user-desktop:/etc/init.d# sudo apt-get install dnsmasq
Reading package lists... Done
Building dependency tree       
Reading state information... Done
The following NEW packages will be installed:
  dnsmasq
0 upgraded, 1 newly installed, 0 to remove and 0 not upgraded.
Need to get 0 B/15.4 kB of archives.
After this operation, 120 kB of additional disk space will be used.
Selecting previously unselected package dnsmasq.
(Reading database ... 146283 files and directories currently installed.)
Unpacking dnsmasq (from .../dnsmasq_2.59-4_all.deb) ...
Processing triggers for ureadahead ...
Setting up dnsmasq (2.59-4) ...
 * Starting DNS forwarder and DHCP server dnsmasq                                                                                                                                                            
dnsmasq: failed to create listening socket for port 53: Address already in use [fail]
invoke-rc.d: initscript dnsmasq, action "start" failed.

回答:


8

あなたと同じ問題が発生します。12.10以降は正しいと思いますが、このスレッドは12.10のリリース前に閉じられていました。

いくつかのグーグルを作成します(主にここからインスピレーションを受けています)、私はこの解決策を見つけました:

  • 編集/etc/NetworkManager/NetworkManager.confあなたlovestエディタでファイル
  • 行にコメントする dns=dnsmasq
  • ネットワークマネージャーを再起動します。 sudo service network-manager restart

ただし、dnsmasqの設定(/etc/dnsmasq.conf)では、localhost DNSクエリを次の行でリッスンする必要がありますlisten-address=127.0.0.1

dnsmasqの構成を変更する場合は、実行することを忘れないでください sudo /etc/init.d/dnsmasq restart

これが役立つことを願っています。


2
コメントアウトするdns=dnsmasqことで、DNSmasqをインストールする目的が損なわれることはありません。listen-address=127.0.0.1変更を加えたところ、今ではうまく機能しているようです。

1
いいえ。NetworkManagerはdnsmasqを起動せず、代わりに独立して起動します。
MrMas

4

同じ問題がありました。

dnsmasq-baseポート53でインストールおよびリッスンされ、dnsmasq開始できませんでした。

同じ目的でdnsmasq-baseinsead を使用することもできdnsmasqます。別の設定ディレクトリを使用するだけNetwork Managerです:フォルダに置かれたもの:

/etc/NetworkManager/dnsmasq.d/

3

次を使用して、ポート53(ドメイン)でリッスンしているものを確認します。

sudo ss -lp "sport = :domain"

このポートで実行されているサービスを無効にします。通常systemd-resolvedです。

またmask、再起動時に自動起動しないようにします。

sudo systemctl disable systemd-resolved
sudo systemctl mask systemd-resolved

行ったことを元に戻すには:

sudo systemctl unmask systemd-resolved
sudo systemctl enable systemd-resolved

またsudo update-rc.d systemd-resolved disable、起動時に自動起動するのを停止することもありますが、テストしていません。のdefaults代わりに使用してdisable、コマンドを取り消します。


または、構成ファイルを編集して、dnsmasqがリッスンするポートを変更できます。

sudo nano /etc/dnsmasq.conf

Ctrl+ キーを押しWて入力しlisten-address=、Enterキーを押します。

行のコメントを外し、53とは異なるポートで127.0.0.1を追加します。

listen-address=127.0.0.1#5300

0

編集:いくつかのグーグル、私は解決策を見つけまし。ネットワークマネージャは、dnsmasq機能の一部を提供する「dnsmasq-base」と呼ばれるパッケージに依存しているようです。Ubuntu WikiのDnsmasqエントリには、

「パッケージ「dnsmasq」は、インターネット接続を共有するときに「dnsmasq-base」を使用してDHCPサービスを提供できるNetwork Managerに干渉することに注意してください。したがって、ネットワークマネージャーを使用する場合(簡単なセットアップのみで) -base、ただしdnsmasqではありません。より複雑な設定がある場合は、ネットワークマネージャーをアンインストールし、dnsmasqまたは同様のソフトウェア(bind9、dhcpdなど)を使用して、手動で設定してください。

つまり、dnsmasqを使用しますか?その後、あなたは何をしているのかをよく知っています。 前述のソリューションでは、次の方法でdnsmasq-baseをdnsmasqに置き換えることをお勧めします(最初のコマンドはnetwork-managerも削除します)。

sudo apt-get remove dnsmasq-base
sudo apt-get install dnsmasq
sudo apt-get install network-manager network-manager-gnome

そして、あなたのポートをブロックしているものを見つけることに関する一般的なコメントlsof

lsof -Pn +M -i4

-i4によりIPv4ポートがリストされますが、

lsof -Pn +M -i6

IPv6ポートがリストされます。または単に入力する

lsof -Pn +M | grep ':53 (LISTEN)'

これにより、(願わくば)ポート53を使用しているものがわかります。-Pnコマンドラインスイッチは、ポート番号/ホストIPの名前への変換を防ぎます。

または、実行

netstat -utlnp

3
dnsmasq-baseを削除しないでください。dnsmasqパッケージはそれに依存しています!
jdthood

3
これを行うときは注意してください。実行後sudo apt-get remove dnsmasq-base、ネットワークに接続できず、次のステップを実行できませんでした。ソリューションでは、dhclientを実行して新しいIPアドレスを取得することが判明しました。
グレンジャミン

これに噛まれました.. systemd-resolveを再度有効にする必要がありました
Emmanel Osimosu
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.