サーバーのセキュリティを設定しています。ファイアウォールでの管理を簡単にするために、UFWをインストールしました。 UFWでいくつかの設定を行い、いくつかのポートを許可しました。そのため、有効にするとDNSサービスが応答しなくなりました。
DNSをテストするためにDig www.domain.com.br
コマンドを実行してみましたが、成功しませんでした。 UFWが無効になっている場合、このコマンドは問題なく実行されます。 53ポート(TCPおよびUDP)はすでに許可していますが、DNSが機能しません。
私のUFW設定:
Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
21/tcp ALLOW IN Anywhere
16/tcp ALLOW IN Anywhere
443/tcp ALLOW IN Anywhere
80 ALLOW IN Anywhere
53 ALLOW IN Anywhere
465 ALLOW IN Anywhere
25/tcp ALLOW IN Anywhere
22 ALLOW IN Anywhere
21/tcp (v6) ALLOW IN Anywhere (v6)
16/tcp (v6) ALLOW IN Anywhere (v6)
443/tcp (v6) ALLOW IN Anywhere (v6)
80 (v6) ALLOW IN Anywhere (v6)
53 (v6) ALLOW IN Anywhere (v6)
465 (v6) ALLOW IN Anywhere (v6)
25/tcp (v6) ALLOW IN Anywhere (v6)
22 (v6) ALLOW IN Anywhere (v6)
私はこの問題を解決しました。 DNSサービスポートであるポート53の送信を許可しました。ありがとう。
Sudo ufw allow out 53
完全な正しい構文は
Sudo ufw allow out to any port 53
まずufw allow dns
はDNS要求の受信を許可しますが、これは望んでいることではありません。
次に、他の回答で言及されているすべてのコマンドを実行できます(最も簡単にufw allow out 53
)、ただし順序が重要。したがって、単独で使用するとDNS要求も拒否される拒否ステートメントがある場合、最後に置く!
したがって、最初にポート53をDNSサーバーに許可し、後で一部の要求を拒否または拒否する可能性があります。
私は別のプロジェクトのために自分でいくつかのファイアウォールルールに取り組んでおり、@ diegoklapperのソリューションを機能させることができませんでした。
私自身も複製を試みていますSudo ufw allow dns
より明示的に(つまり、特定のインターフェース)失敗しました:
Sudo ufw allow in on eth0 from any to any port 53 proto tcp
私が間違っていることに気づくまで(プロトコルに注意してください):
Sudo ufw allow in on eth0 from any to any port 53 proto udp
注:これは、DNSリクエストを処理または転送していて、アウトバウンドリクエストがデフォルトですでに許可されている場合のdnsmasq
に特に当てはまります。
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To Action From
-- ------ ----
53/udp on eth0 ALLOW IN Anywhere