Bongani  Ngema

Bongani Ngema

1652232840

A Malicious DNS Server for Executing DNS Rebinding Attacks on The Fly

Whonow DNS Server

A malicious DNS server for executing DNS Rebinding attacks on the fly. whonow lets you specify DNS responses and rebind rules dynamically using domain requests themselves.

# respond to DNS queries for this domain with 34.192.228.43 the first time
# it is requested and then 192.168.1.1 every time after that
A.34.192.228.43.1time.192.168.1.1.forever.rebind.network

# respond first with 34.192.228.43, then 192.168.1.1 the next five times,
# and then start all over again (1, then 5, forever...)
A.34.192.228.43.1time.192.168.1.1.5times.repeat.rebind.network

What's great about dynamic DNS Rebinding rules is that you don't have to spin up your own malicious DNS server to start exploiting the browser's Same-origin policy. Instead, everyone can share the same public whonow server running on port 53 of rebind.network.

Note: You should include UUIDs (e.g. a06a5856-1fff-4415-9aa2-823230b05826 ) as a subdomain in each DNS lookup to a whonow server. These have been omitted from examples in this README for brevity, but assume requests to *.rebind.network should be *.a06a5856-1fff-4415-9aa2-823230b05826.rebind.network. See the Gotchas section for more info as to why.

DISCLAIMER: This software is for educational purposes only. This software should not be used for illegal activity. The author is not responsible for its use. Don't be a dick.

Subdomains = Rebind Rules

The beauty of whonow is that you can define the behavior of DNS responses via subdomains in the domain name itself. Using only a few simple keywords: A, (n)times, forever, and repeat, you can define complex and powerful DNS behavior.

Anatomy of a whonow request

A.<ip-address>.<rule>[.<ip-address>.<rule>[.<ip-address>.<rule>]][.uuid/random-string].example.com
  • A: The type of DNS request. Currently only A records are supported, but AAAA should be coming soon.
  • <ip-address>: an ipv4 (ipv6 coming soon) address with each octet seprated by a period (e.g. 192.168.1.1.
  • <rule>: One of three rules
    • (n)time[s]: The number of times the DNS server should reply with the previous IP address. Accepts both plural and singular strings (e.g. 1time, 3times, 5000times)
    • forever: Respond with the previous IP address forever.
    • repeat: Repeat the entire set of rules starting from the beginning.
  • [uuid/random-string]: A random string to keep DNS Rebind attacks against the same IP addresses separate from each other. See Gotchas for more info.
  • example.com: A domain name you have pointing to a whonow nameserver, like the publicly available rebind.network:53 whonow instance.

Rules can be chained together to form complex response behavior.

Examples

# always respond with 192.168.1.1. This isn't really DNS rebinding
# but it still works
A.192.168.1.1.forever.rebind.network

# alternate between localhost and 10.0.0.1 forever
A.127.0.0.1.1time.10.0.0.1.1time.repeat.rebind.network

# first respond with 192.168.1.1 then 192.168.1.2. Now respond 192.168.1.3 forever.
A.192.168.1.1.1time.192.168.1.2.2times.192.168.1.3.forever.rebind.network

# respond with 34.192.228.43 the first time, then whatever `whonow --default-address`
# is set to forever after that (default: 127.0.0.1)
A.34.192.228.43.1time.rebind.network

Limitations

Each label [subdomain] may contain zero to 63 characters... The full domain name may not exceed the length of 253 characters in its textual representation. (from the DNS Wikipedia page)

Additionally, there may not be more than 127 labels/subdomains.

Gotchas

Use Unique Domain Names

Each unique domain name request to whonow creates a small state-saving program in the server's RAM. The next time that domain name is requested the program counter increments and the state may be mutated. All unique domain names are their own unique program instances. To avoid clashing with other users or having your domain name program's state inadvertently incremented you should add a UUID subdomain after your rule definitions. That UUID should never be reused.

# this
A.127.0.0.1.1time.10.0.0.1.1time.repeat.8f058b82-4c39-4dfe-91f7-9b07bcd7fbd4.rebind.network

# not this
A.127.0.0.1.1time.10.0.0.1.1time.repeat.rebind.network

--max-ram-domains

The program state associated with each unique domain name is stored by whonow in RAM. To avoid running out of RAM an upper-bound is placed on the number of unique domains who's program state can be managed at the same time. By default, this value is set to 10,000,000, but can be configured with the --max-ram-domains. Once this limit is reached, domain names and their saved program state will be removed in the order they were added (FIFO).

Running your own whonow server

To run your own whonow server in the cloud use your domain name provider's admin panel to configure a custom nameserver pointing to your VPS. Then install whonow on that VPS and make sure it's running on port 53 (the default DNS port) and that port 53 is accessible to the Internet.

# install
npm install --cli -g whonow@latest

# run it!
whonow --port 53

# you can also run it with more logging to stdout and save DNS activity to CSV
whonow --port 53 --logfile log.csv --verbose

whonow screenshot

If that ☝ is too much trouble, feel free to just use the public whonow server running on port 53 of rebind.network.🌐.

Usage

$ whonow --help
usage: whonow [-h] [-v] [-p PORT] [-d DEFAULT_ANSWER] [-b MAX_RAM_DOMAINS]
              [-l LOGFILE] [-m]
              

A malicious DNS server for executing DNS Rebinding attacks on the fly.

Optional arguments:
  -h, --help            Show this help message and exit.
  -v, --version         Show program's version number and exit.
  -p PORT, --port PORT  What port to run the DNS server on (default: 53).
  -d DEFAULT_ANSWER, --default-answer DEFAULT_ANSWER
                        The default IP address to respond with if no rule is 
                        found (default: "127.0.0.1").
  -b MAX_RAM_DOMAINS, --max-ram-domains MAX_RAM_DOMAINS
                        The number of domain name records to store in RAM at 
                        once. Once the number of unique domain names queried 
                        surpasses this number domains will be removed from 
                        memory in the order they were requested. Domains that 
                        have been removed in this way will have their program 
                        state reset the next time they are queried (default: 
                        10000000).
  -l LOGFILE, --logfile LOGFILE
                        Log to CSV file (default: false)
  -m, --verbose         Log request timestamp and sender IP address to stdout 
                        (default: false)

Testing

A whonow server must be running on localhost:15353 to perform the tests in test.js

# in one terminal
whonow -p 15353
# in another terminal
cd path/to/node_modules/whonow
npm test

Author: Brannondorsey
Source Code: https://github.com/brannondorsey/whonow 
License: MIT license

#node #dns #server 

A Malicious DNS Server for Executing DNS Rebinding Attacks on The Fly
野村  陽一

野村 陽一

1650842520

ドメイン、サーバーとは?ホームページの仕組みを解説😃

サーバー・ドメインの基礎知識や取得方法について解説。さらにIPアドレスやDNSなどホームページの仕組みがバッチリわかる!

✅目次
00:00 ドメイン、サーバーとは?ホームページの仕組みを解説〜イントロ
00:16 サーバーとは?
00:55 サーバーの種類|WEBサーバー、メールサーバー、ファイルサーバーなど
2:04 ドメインとは?
3:23 ホームページ公開の流れ|ドメイン取得・レンタルサーバー取得
4:21 IPアドレスとDNSサーバーとは?
5:14 DNSレコード設定

#dns #web-service #web #ip 

ドメイン、サーバーとは?ホームページの仕組みを解説😃

DNS: DNS library in Go

Alternative (more granular) approach to a DNS library

Less is more.

Complete and usable DNS library. All Resource Records are supported, including the DNSSEC types. It follows a lean and mean philosophy. If there is stuff you should know as a DNS programmer there isn't a convenience function for it. Server side and client side programming is supported, i.e. you can build servers and resolvers with it.

We try to keep the "master" branch as sane as possible and at the bleeding edge of standards, avoiding breaking changes wherever reasonable. We support the last two versions of Go.

Goals

  • KISS;
  • Fast;
  • Small API. If it's easy to code in Go, don't make a function for it.

Users

A not-so-up-to-date-list-that-may-be-actually-current:

Send pull request if you want to be listed here.

Features

  • UDP/TCP queries, IPv4 and IPv6
  • RFC 1035 zone file parsing ($INCLUDE, $ORIGIN, $TTL and $GENERATE (for all record types) are supported
  • Fast
  • Server side programming (mimicking the net/http package)
  • Client side programming
  • DNSSEC: signing, validating and key generation for DSA, RSA, ECDSA and Ed25519
  • EDNS0, NSID, Cookies
  • AXFR/IXFR
  • TSIG, SIG(0)
  • DNS over TLS (DoT): encrypted connection between client and server over TCP
  • DNS name compression

Have fun!

Miek Gieben - 2010-2012 - miek@miek.nl DNS Authors 2012-

Building

This library uses Go modules and uses semantic versioning. Building is done with the go tool, so the following should work:

go get github.com/miekg/dns
go build github.com/miekg/dns

Examples

A short "how to use the API" is at the beginning of doc.go (this also will show when you call godoc github.com/miekg/dns).

Example programs can be found in the github.com/miekg/exdns repository.

Supported RFCs

all of them

  • 103{4,5} - DNS standard
  • 1348 - NSAP record (removed the record)
  • 1982 - Serial Arithmetic
  • 1876 - LOC record
  • 1995 - IXFR
  • 1996 - DNS notify
  • 2136 - DNS Update (dynamic updates)
  • 2181 - RRset definition - there is no RRset type though, just []RR
  • 2537 - RSAMD5 DNS keys
  • 2065 - DNSSEC (updated in later RFCs)
  • 2671 - EDNS record
  • 2782 - SRV record
  • 2845 - TSIG record
  • 2915 - NAPTR record
  • 2929 - DNS IANA Considerations
  • 3110 - RSASHA1 DNS keys
  • 3123 - APL record
  • 3225 - DO bit (DNSSEC OK)
  • 340{1,2,3} - NAPTR record
  • 3445 - Limiting the scope of (DNS)KEY
  • 3597 - Unknown RRs
  • 403{3,4,5} - DNSSEC + validation functions
  • 4255 - SSHFP record
  • 4343 - Case insensitivity
  • 4408 - SPF record
  • 4509 - SHA256 Hash in DS
  • 4592 - Wildcards in the DNS
  • 4635 - HMAC SHA TSIG
  • 4701 - DHCID
  • 4892 - id.server
  • 5001 - NSID
  • 5155 - NSEC3 record
  • 5205 - HIP record
  • 5702 - SHA2 in the DNS
  • 5936 - AXFR
  • 5966 - TCP implementation recommendations
  • 6605 - ECDSA
  • 6725 - IANA Registry Update
  • 6742 - ILNP DNS
  • 6840 - Clarifications and Implementation Notes for DNS Security
  • 6844 - CAA record
  • 6891 - EDNS0 update
  • 6895 - DNS IANA considerations
  • 6944 - DNSSEC DNSKEY Algorithm Status
  • 6975 - Algorithm Understanding in DNSSEC
  • 7043 - EUI48/EUI64 records
  • 7314 - DNS (EDNS) EXPIRE Option
  • 7477 - CSYNC RR
  • 7828 - edns-tcp-keepalive EDNS0 Option
  • 7553 - URI record
  • 7858 - DNS over TLS: Initiation and Performance Considerations
  • 7871 - EDNS0 Client Subnet
  • 7873 - Domain Name System (DNS) Cookies
  • 8080 - EdDSA for DNSSEC
  • 8499 - DNS Terminology
  • 8659 - DNS Certification Authority Authorization (CAA) Resource Record
  • 8914 - Extended DNS Errors
  • 8976 - Message Digest for DNS Zones (ZONEMD RR)

Loosely Based Upon

Author: miekg
Source Code: https://github.com/miekg/dns 
License: View license

#go #golang #dns 

DNS: DNS library in Go
坂本  篤司

坂本 篤司

1650582000

MacでDNSをフラッシュする方法–MacOSでDNSキャッシュをクリアする

このチュートリアルでは、DNSキャッシュをフラッシュすることが重要である理由と、ローカルシステムのキャッシュをクリアする方法を学習します。

DNSキャッシュとは何ですか?

DNSはインターネット電話帳のように機能します。電話帳の機能を考えてみてください。電話帳は、人の名前を尊敬する電話番号にマッピングします。

DNS(ドメインネームシステムの略)は、ドメイン名を関連するIPアドレスにマップします。

などのドメイン名は、freecodecamp.org人間が簡単に読み取ったり、理解したり、思い出したりできます。

IPアドレス(IPはインターネットプロトコルの略)は、機械で読み取り可能で、一意の一連の番号で構成されるアドレスです。これらの番号は、インターネットに接続されているデバイスを識別します。

Webサイトにアクセスするたびに正確な数列を覚えるのは難しいため、これらの形式はそれほど人間に優しいものではありません。

freecodecamp.org次に、DNSは関連するIPアドレスにマップされます- 104.26.3.33

DNSキャッシュは、Macのローカルストレージ領域と考えてください。

最近のWebサイトへのアクセスなど、コンピューターのアクティビティ記録を一時的に保存および追跡します。

URL(Uniform Resource Locatorの略)を入力してWebサイトにアクセスするたびに、DNSキャッシュはそのWebサイトに関連付けられているIPアドレスを保存します。

同じWebサイトに再度アクセスすると、ルックアッププロセスがより効率的になり、ルックアップ時間がはるかに短くなります。

それはかなりの時間を節約するのに役立ちます。

DNSキャッシュのフラッシュが重要な理由

いくつかの理由でDNSキャッシュをフラッシュする必要があります。

最も重要な2つは次のとおりです。

  1. DNSのフラッシュは、インターネット接続の問題をトラブルシューティングするのに役立つ手順です

サイトにアクセスして接続を確立しようとすると、「DNSサーバーが応答していません」というメッセージなどのDNSエラーがブラウザに表示される場合があります。

ローカルキャッシュ情報は時間の経過とともに古くなる可能性があることに注意してください。

WebサイトでDNSの更新が発生した場合でも、Macは古い不正確な情報を使用して要求されたページを読み込みます。

DNSキャッシュをフラッシュすると、キャッシュ情報が最新であることを確認できます。

  1. DNSキャッシュをフラッシュすることで、ネットワークセキュリティの脅威、悪意のある攻撃、およびDNSキャッシュポイズニングの発生を防ぎます

ハッカーは、保存されたDNSキャッシュレコードにアクセスして破損する可能性があります。

たとえば、既にアクセスしたWebサイトのドメイン名に関連付けられているIPアドレスを操作および変更し、悪意のあるWebサイトにマッピングする可能性があります。

次に同じWebサイトへのアクセスを要求すると、偽の破損したURLにリダイレクトされます。

ハッカーは、クレジットカード番号などの個人情報や機密情報を要求し、それを盗むことができます。

DNSキャッシュを頻繁にフラッシュすると、これを防ぐのに役立ちます。

MacOSでDNSキャッシュをフラッシュする方法

MacのDNSキャッシュをクリアすることは、技術的な知識があまりない場合でも、比較的簡単なプロセスです。

必要なものは次のとおりです。

  • コマンドラインへのアクセス、
  • コンピューターのパスワード、
  • テキストコマンドを入力するには(コマンドは、実行しているmacOSのバージョンによって異なります)。

MacOSでターミナルアプリケーションにアクセスする方法

macOSには、という名前のCLI(コマンドラインインターフェイス)が組み込まれてTerminal.appいます。これにより、オペレーティングシステムが実行するテキストベースのコマンドを入力できます。

ターミナルを開くにはいくつかの方法があります。

最も簡単な方法は、Spotlight検索を使用することです。

このために、次のことができます。

  • 画面の右上隅に移動して、虫眼鏡のようなアイコンをクリックします。
  • または、Command Spaceショートカットを使用することもできます。

どちらも次のウィンドウを開きます。

スクリーンショット-2022-04-20-at-10.07.52-AM

そこから入力terminalを開始し、表示されるオプションをクリックしTerminal.appます。

次のようなウィンドウが開いているはずです。

スクリーンショット-2022-04-20-at-10.12.29-AM

MacOSバージョンのDNSキャッシュをクリアする方法

次に、ターミナルウィンドウで、コマンドを入力する必要があります。

コマンドは、実行しているmacOSのバージョンによって異なります。

macOSの各バージョンには、バージョン番号とバージョン名があります。

コンピュータのmacOSバージョンを確認するには、画面の左上隅にあるAppleアイコンをクリックします。表示されるドロップダウンメニューから、を選択しますAbout This Mac

Overviewタブには、最初にバージョン名が表示されます。次に、その下にバージョン番号が表示されます。

スクリーンショット-2022-04-20-at-11.07.26-AM

次の表では、macOSのバージョンが新しいものから古いものへと時系列の逆順で表示されます。

お使いのバージョンのMacに移動し、それぞれのコマンドをコピーします。

MACOSバージョン指図
macOS 12(モントレー)sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
macOS 11(ビッグサー)sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
macOS 10.15(カタリナ)sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
macOS 10.14(モハベ)sudo killall -HUP mDNSResponder
macOS 10.13(ハイシエラ)sudo killall -HUP mDNSResponder
macOS 10.12(シエラ)sudo killall -HUP mDNSResponder
OS X 10.11(El Capitan)sudo killall -HUP mDNSResponder
OS X 10.10(ヨセミテ)sudo discoveryutil udnsflushcaches
OS X 10.9(マーベリックス)sudo killall -HUP mDNSResponder
OS X 10.8(マウンテンライオン)sudo killall -HUP mDNSResponder
Mac OS X 10.7(ライオン)sudo killall -HUP mDNSResponder
Mac OS X 10.6(ユキヒョウ)sudo dscacheutil -flushcache
Mac OS X 10.5(Leopard)sudo lookupd -flushcache
Mac OS X 10.4(タイガー)lookupd -flushcache

コマンドを入力してEnterキーを押すと、コンピューターのパスワードを入力するためのプロンプトが表示されます。

パスワードを入力しているときは、入力している内容を表示できず、アスタリスクも表示できないことに注意してください。

何も起きていないように見えますが、何かが起こっているので安心してください。

パスワードを入力してEnterキーを押すと、プロセスが完了したことを示すメッセージは表示されません。

代わりに、新しいターミナルプロンプトが表示されます。

結論

これで、ローカルDNSキャッシュがクリアされました。

うまくいけば、これはあなたが経験しているかもしれない接続の問題を解決するのに役立ちました。

DNSを頻繁にクリアすることは、厄介なインターネット接続を修正し、潜在的な脅威からシステムを保護するために常に良い考えです。

読んでくれてありがとう! 

ソース:https ://www.freecodecamp.org/news/how-to-flush-dns-on-mac-macos-clear-dns-cache/

#macos #dns #mac 

MacでDNSをフラッシュする方法–MacOSでDNSキャッシュをクリアする

Cómo Vaciar DNS En Mac - MacOS Clear DNS Cache

En este tutorial, aprenderá por qué es importante vaciar su caché de DNS y cómo puede borrar el caché en su sistema local.

¿Qué es la caché de DNS?

DNS actúa como una guía telefónica de Internet. Piense en lo que hace una guía telefónica: asigna el nombre de una persona a su número de teléfono respetado.

DNS (abreviatura de Sistema de nombres de dominio) asigna nombres de dominio a sus direcciones IP asociadas.

freecodecamp.orgLos seres humanos pueden leer, comprender y recordar fácilmente un nombre de dominio, como .

Las direcciones IP (IP es la abreviatura de Protocolo de Internet) son direcciones legibles por máquina y consisten en una serie única de números. Estos números identifican un dispositivo conectado a Internet.

Su formato no es tan amigable para los humanos, ya que es difícil recordar una secuencia exacta de números cada vez que desea visitar un sitio web.

El DNS luego se asigna freecodecamp.orga su dirección IP asociada: 104.26.3.33.

Piense en el caché de DNS como un área de almacenamiento local en su Mac.

Almacena temporalmente y realiza un seguimiento de los registros de actividad de su computadora, como visitas recientes al sitio web.

Cada vez que visite un sitio web escribiendo su URL (abreviatura de Uniform Resource Locator), el caché de DNS guardará la dirección IP asociada con ese sitio web.

Cuando visita ese mismo sitio web por segunda vez, el proceso de búsqueda es más eficiente y el tiempo de búsqueda es mucho más corto.

Ayuda a ahorrar un tiempo significativo.

Por qué es importante vaciar la caché de DNS

Debe vaciar la caché de DNS por varias razones.

Los dos más importantes son:

  1. Vaciar DNS es un paso útil para solucionar problemas de conectividad a Internet .

Es posible que reciba errores de DNS en su navegador, como el mensaje "El servidor DNS no responde" cuando intenta acceder a un sitio y establecer una conexión.

Tenga en cuenta que la información de su caché local puede quedar obsoleta con el tiempo.

Cuando se realizan actualizaciones de DNS en un sitio web, su Mac todavía usa la información anterior e inexacta para cargar la página solicitada.

Vaciar la caché de DNS garantiza que la información de la caché esté actualizada.

  1. Vaciar la caché de DNS evita que se produzcan amenazas a la seguridad de la red, ataques malintencionados y envenenamiento de la caché de DNS .

Los piratas informáticos pueden acceder y corromper sus registros de caché de DNS guardados.

Por ejemplo, podrían manipular y cambiar la dirección IP asociada con un nombre de dominio de un sitio web que ya ha visitado y asignarlo a uno malicioso.

La próxima vez que solicite acceder a ese mismo sitio web, habrá una redirección a una URL falsa y corrupta.

Los piratas informáticos pueden solicitar información personal y confidencial, como números de tarjetas de crédito, y robarla.

El vaciado frecuente de la caché de DNS ayudará a evitar que esto ocurra.

Cómo vaciar la caché de DNS en MacOS

Borrar la caché de DNS en tu Mac es un proceso relativamente sencillo, incluso si no tienes muchos conocimientos técnicos.

Esto es lo que necesitará:

  • Acceso a la línea de comando,
  • La contraseña de su computadora,
  • Para ingresar un comando de texto (el comando dependerá de la versión de macOS que esté ejecutando).

Cómo acceder a la aplicación Terminal en MacOS

macOS tiene una CLI (interfaz de línea de comandos) integrada llamada Terminal.app, que le permite ingresar comandos basados ​​en texto que llevará a cabo el sistema operativo.

Hay algunas formas de abrir la terminal.

La forma más fácil es a través de la búsqueda de Spotlight.

Para esto, puedes:

  • Navegue hasta la esquina superior derecha de la pantalla y haga clic en el icono que parece una lupa.
  • O bien, también puede utilizar el Command Spaceacceso directo.

Ambos abrirán la siguiente ventana:

Captura de pantalla-2022-04-20-a-10.07.52-AM

A partir de ahí, comienza a escribir terminaly haz clic en la Terminal.appopción que aparece.

Debería ver una ventana abierta similar a la siguiente:

Captura de pantalla-2022-04-20-a-10.12.29-AM

Cómo borrar la caché de DNS para su versión de MacOS

En la ventana del terminal, deberá ingresar un comando.

El comando es diferente según la versión de macOS que esté ejecutando.

Cada versión de macOS tiene un número de versión y un nombre de versión.

Para averiguar la versión de macOS en su computadora, haga clic en el ícono de Apple en la esquina superior izquierda de su pantalla. En el menú desplegable que aparece, seleccione About This Mac.

En la Overviewpestaña, primero verá el nombre de la versión. Luego, debajo de eso, verá el número de versión.

Captura de pantalla-2022-04-20-a-11.07.26-AM

En la siguiente tabla, verá las versiones de macOS en orden cronológico inverso, desde la más reciente hasta la más antigua.

Navegue a su versión de Mac y copie el comando respectivo.

VERSIÓN MACOSDOMINIO
macOS 12 (Monterey)sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
macOS 11 (Gran Sur)sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
macOS 10.15 (Catalina)sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder
macOS 10.14 (Mojave)sudo killall -HUP mDNSResponder
macOS 10.13 (Sierra Alta)sudo killall -HUP mDNSResponder
macOS 10.12 (Sierra)sudo killall -HUP mDNSResponder
OS X 10.11 (El Capitán)sudo killall -HUP mDNSResponder
OS X 10.10 (Yosemite)sudo discoveryutil udnsflushcaches
OS X 10.9 (Mavericks)sudo killall -HUP mDNSResponder
OS X 10.8 (león de montaña)sudo killall -HUP mDNSResponder
Mac OS X 10.7 (León)sudo killall -HUP mDNSResponder
Mac OS X 10.6 (Leopardo de las Nieves)sudo dscacheutil -flushcache
Mac OS X 10.5 (Leopardo)sudo lookupd -flushcache
Mac OS X 10.4 (Tigre)lookupd -flushcache

Después de escribir el comando y presionar enter, aparecerá un mensaje para ingresar la contraseña de su computadora.

Tenga en cuenta que cuando escriba su contraseña, no podrá ver lo que está escribiendo, ni siquiera los asteriscos.

Parece como si nada estuviera pasando, pero tenga la seguridad de que algo está pasando.

Una vez que haya ingresado su contraseña y presionado enter, no verá un mensaje que indica que el proceso está completo.

En su lugar, verá un nuevo indicador de terminal.

Conclusión

Y ahí lo tiene: su caché de DNS local ahora está limpia.

Con suerte, esto ha ayudado a resolver cualquier problema de conectividad que pueda estar experimentando.

Limpiar el DNS con frecuencia siempre es una buena idea para ayudar a solucionar las conexiones de Internet problemáticas y garantizar que su sistema esté protegido contra posibles amenazas.

¡Gracias por leer! 

Fuente: https://www.freecodecamp.org/news/how-to-flush-dns-on-mac-macos-clear-dns-cache/ 

#macos #dns #mac 

Cómo Vaciar DNS En Mac - MacOS Clear DNS Cache
Hoang  Kim

Hoang Kim

1649817325

Cách Sửa Lỗi Máy Chủ DNS Không Phản Hồi

Đôi khi, bạn có thể đột nhiên phát hiện ra rằng bạn không thể truy cập Internet trên máy tính của mình do lỗi “Máy chủ DNS không phản hồi”.

Nếu bạn chạy trình gỡ rối cho sự cố, bạn sẽ nhận được thông báo như sau:
ss1-1

Trong trình duyệt Chrome của mình, bạn cũng có thể gặp lỗi như bên dưới:
ss2-2

Điều này là do máy chủ Hệ thống tên miền (DNS) rất quan trọng trong việc tạo kết nối Internet trên máy tính của bạn.

Đối với các trang web có liên quan, lỗi "Máy chủ DNS không phản hồi" có thể do khoảng trống DNS và cuộc tấn công DDoS (Từ chối Dịch vụ Phân tán) gây ra. Nếu đây là sự cố, bạn có thể phải đợi 72 giờ để khoảng trống miền được khắc phục hoặc quản trị viên trang web khắc phục sự cố bảo mật với trang web.

Về phía người dùng, lỗi “Máy chủ DNS không phản hồi” có thể do nhiều nguyên nhân như cài đặt DNS bị định cấu hình sai và trình duyệt lỗi thời.

Nếu đây là nguyên nhân, tôi sẽ chỉ cho bạn 7 cách sửa lỗi để bạn có thể khôi phục kết nối internet của mình.

Hệ thống DNS hoạt động như thế nào?

Bất cứ khi nào bạn cố gắng truy cập một trang web, chẳng hạn như freeCodeCamp.org, bạn nhập URL như “freecodecamp.org” vào thanh địa chỉ và nhấn ENTER.

Bên dưới, máy chủ DNS tra cứu địa chỉ số cho freeCodeCamp.org. Địa chỉ số này được gọi là địa chỉ Giao thức Internet (IP).

Khi trình duyệt nhận được địa chỉ IP này, trang web (freeCodeCamp.org hoặc bất kỳ trang nào khác) sẽ được hiển thị cho bạn. Nếu trình duyệt không tìm thấy địa chỉ này, thì bạn có thể gặp lỗi "Máy chủ DNS không phản hồi".

7 cách khắc phục lỗi máy chủ DNS không phản hồi

Bây giờ chúng ta hãy xem xét bảy cách bạn có thể sử dụng để loại bỏ lỗi "máy chủ DNS không phản hồi" để kết nối internet của bạn có thể được khôi phục.

Giải pháp 1: Chuyển đổi trình duyệt

Lỗi "Máy chủ DNS không phản hồi" có thể hiển thị do trình duyệt bạn hiện đang sử dụng. Một số trình duyệt có bộ nhớ cache DNS riêng và nếu có vấn đề với bộ nhớ cache, trải nghiệm internet của bạn trên trình duyệt đó có thể bị ảnh hưởng tiêu cực.

Vì vậy, một cách khắc phục không phức tạp là thay đổi sang một trình duyệt khác và xem lỗi có còn hay không.

Ví dụ: nếu bạn đang sử dụng Chrome, hãy chuyển sang Edge nếu bạn đang sử dụng Windows hoặc Safari nếu bạn đang sử dụng Mac.

Nếu trang web tải lên trong một trình duyệt khác, thì bạn có thể cần phải cập nhật trình duyệt khác của mình hoặc cài đặt lại nó.

Giải pháp 2: Tạm thời vô hiệu hóa phần mềm chống vi-rút của bạn

Các chương trình chống vi-rút nổi tiếng là can thiệp vào các ứng dụng và ngăn chúng hoạt động bình thường.

Nếu bạn gặp lỗi “Máy chủ DNS không phản hồi”, hãy xem xét việc tắt chương trình chống vi-rút của bạn để xem kết nối internet của bạn có hoạt động tốt hay không.

Nếu bạn có thể truy cập Internet sau khi tắt phần mềm chống vi-rút, thì đó là lý do bạn gặp lỗi.

Trong trường hợp này, bạn có thể muốn xem xét việc tải xuống một chương trình chống vi-rút khác.

Nếu bạn đang sử dụng Windows 10, bạn có thể tắt Bảo mật Windows (AKA Windows Defender) bằng cách làm theo các bước dưới đây:
Bước 1 : Nhấn ALT+ SHIFT+ ESCtrên bàn phím của bạn để mở Trình quản lý tác vụ

Bước 2 : Chuyển sang tab Khởi động

Bước 3 : Tìm Chương trình chống vi-rút của bạn trong danh sách, nhấp chuột phải vào chương trình đó và chọn "Tắt".
ss3-1

Giải pháp 3: Khởi động lại Bộ định tuyến hoặc Modem của bạn

Nếu kết nối internet của bạn phụ thuộc vào bộ định tuyến hoặc modem, việc khởi động lại nó có thể giúp bạn thoát khỏi lỗi “Máy chủ DNS không phản hồi”.

Điều này là do việc tắt và sau đó bật bộ định tuyến hoặc modem sẽ xóa bộ nhớ cache của địa chỉ IP. Điều này có thể sửa lỗi về lâu dài.

Để khởi động lại bộ định tuyến hoặc modem của bạn, hãy tìm nút nguồn và nhấn và giữ để tắt, sau đó bật lại.

Giải pháp 4: Xóa DNS Cache của bạn

Nếu lỗi “Máy chủ DNS không phản hồi” là do định cấu hình sai trên thiết bị của bạn, xóa DNS là một trong những cách đáng tin cậy nhất để khắc phục. Điều này là do quá trình này sẽ xóa các cấu hình IP không hợp lệ và thông tin lỗi thời trong bộ đệm DNS.

Để xóa DNS của máy tính của bạn trên Windows, hãy làm theo các bước được đánh dấu bên dưới:

Bước 1 : Nhấn WINnút trên bàn phím của bạn và tìm kiếm "cmd". Sau đó chọn "Run as Administrator" ở bên phải.

Bước 2 : Nhập và thực hiện lần lượt các lệnh sau:

  • ipconfig /flushdns
  • ipconfig /release
  • ipconfig /renew
    ss4

Bước 3 : Khởi động lại máy tính của bạn

Giải pháp 5: Thay đổi máy chủ DNS của bạn theo cách thủ công

Việc sử dụng máy chủ DNS mặc định của nhà cung cấp dịch vụ internet của bạn có thể là lý do khiến bạn gặp phải lỗi “Máy chủ DNS không phản hồi”.

Bạn có thể thay đổi máy chủ DNS của mình thành một trong những máy chủ miễn phí do Google và Cloudflare cung cấp.

Các bước dưới đây hướng dẫn bạn cách thay đổi máy chủ DNS của mình thành của Google:

Bước 1 : Nhấp chuột phải vào Bắt đầu và chọn “Kết nối mạng”:
ss5

Bước 2 : Cuộn xuống và chọn “Thay đổi tùy chọn bộ điều hợp”:
ss6

Bước 3 : Trong cửa sổ bật lên xuất hiện, nhấp chuột phải vào mạng bạn được kết nối và chọn “Thuộc tính”:
ss7

Bước 4 : Trong cửa sổ bật lên tiếp theo xuất hiện, nhấp đúp vào “Giao thức Internet Phiên bản 4 (TCP / IPv4)”:
ss8

Bước 5 : Trong cửa sổ bật lên sau xuất hiện, hãy nhấp vào nút radio có nội dung “Sử dụng các địa chỉ máy chủ DNS sau”:
ss9

Bước 6 : Nhập 8.8.8.8 cho “Máy chủ DNS ưa thích” và 8.8.4.4 cho “Máy chủ DNS thay thế”:
ss10

Đây là máy chủ DNS miễn phí do Google cung cấp.

Bước 7 : Nhấp vào “Ok” và “Ok” một lần nữa.

NB: Nếu máy tính của bạn được định cấu hình để sử dụng IPv6 thay vì IPv4, thì ở bước 4, bạn nên chọn “Giao thức Internet Phiên bản 6 (TCP / IPv6)” thay vì “Giao thức Internet Phiên bản 4 (TCP / IPv4)”.

Giải pháp 6: Cập nhật trình điều khiển bộ điều hợp mạng của bạn

Cập nhật trình điều khiển bộ điều hợp mạng của bạn có thể khắc phục nhiều sự cố kỹ thuật - bao gồm cả lỗi "Máy chủ DNS không phản hồi", vì trình điều khiển mới có thể bao gồm các bản sửa lỗi.

Để cập nhật trình điều khiển bộ điều hợp mạng, bạn có thể thực hiện theo các bước bên dưới:

Bước 1 : Nhấp vào Bắt đầu và chọn Trình quản lý thiết bị.

Bước 2 : Mở rộng Bộ điều hợp mạng.

Bước 3 : Nhấp chuột phải vào trình điều khiển bị ảnh hưởng và chọn Cập nhật trình điều khiển:
ss11

Bước 4 : Chọn Tự động tìm kiếm phần mềm trình điều khiển được cập nhật:
ss12

Bước 5 : Cho phép máy tính của bạn tìm kiếm trình điều khiển trực tuyến và cài đặt nó cho bạn. Khi quá trình cài đặt hoàn tất, hãy khởi động lại máy tính của bạn.

Giải pháp 7: Vô hiệu hóa IPv6

Nếu mạng hiện tại của bạn được định cấu hình để sử dụng IPv4 và IPv6 được bật trên máy tính của bạn, điều này có thể dẫn đến nhiễu tiêu cực khiến bạn gặp phải lỗi "Máy chủ DNS không phản hồi".

Để tắt IPv6, các bước sau có thể giúp bạn:

Bước 1 : Nhấp chuột phải vào Bắt đầu và chọn “Kết nối mạng”:
ss5

Bước 2 : Cuộn xuống và chọn “Thay đổi tùy chọn bộ điều hợp”:
ss6

Bước 3 : Trong cửa sổ bật lên xuất hiện, nhấp chuột phải vào mạng bạn được kết nối và chọn “Thuộc tính”:
ss7

Bước 4 : Trong cửa sổ bật lên tiếp theo xuất hiện, bỏ chọn “Giao thức Internet Phiên bản 6 (TCP / IPv6)”:
ss13

Bước 6 : Nhấp vào “Ok” và “Ok” một lần nữa.

Lời kết

Lỗi “Máy chủ DNS không phản hồi” có thể gây khó chịu và làm ảnh hưởng đến trải nghiệm Internet của bạn. Nhưng trong bài viết này, bạn đã biết cách khắc phục nếu lỗi xảy ra do định cấu hình sai DNS từ phía người dùng.

Tôi hy vọng một trong những giải pháp cho lỗi được giải thích trong bài viết này sẽ giúp bạn sửa lỗi.

Nguồn: https://www.freecodecamp.org/news/dns-server-not-responding-service-unavailable-dns-failure-solved/

#dns 

Cách Sửa Lỗi Máy Chủ DNS Không Phản Hồi
Thai  Son

Thai Son

1649650680

Máy Chủ DNS Là Gì? Giải Thích Về Máy Chủ DNS

Web sẽ không hoạt động nếu không có máy chủ DNS. Họ chịu trách nhiệm dịch tên miền thành địa chỉ IP. Sau đó, các máy tính sử dụng các địa chỉ IP đó để định vị và kết nối với máy chủ web, đồng thời đưa người dùng đến đúng trang web.

Nhiều người biết đến hệ thống DNS lần đầu tiên vào tháng 10 năm 2021, khi tất cả các ứng dụng và trang web của Facebook đều bị sập cùng một lúc do cấu hình sai DNS nghiêm trọng.

Địa chỉ IP là gì?

Địa chỉ IP là một số nhận dạng duy nhất cho một thiết bị trên mạng. Chúng được sử dụng để định tuyến lưu lượng truy cập đến đúng thiết bị trên mạng.

Ví dụ: địa chỉ IP chính của google.com là 172.217.165.14.

Địa chỉ IP có thể khó nhớ. Đặc biệt nếu chúng dài và phức tạp. Những cái tên có thể đọc được của con người sẽ dễ nhớ hơn nhiều.

Các loại Máy chủ DNS chính là gì?

Có nhiều loại máy chủ DNS khác nhau, mỗi loại có những khả năng riêng biệt.

Loại máy chủ DNS phổ biến nhất là máy chủ DNS đệ quy. Điều này chịu trách nhiệm thực hiện tra cứu DNS thay mặt cho các khách hàng của mình.

Cách máy chủ DNS đệ quy hoạt động

Một máy khách - thường là một trình duyệt web - gửi một truy vấn DNS (địa chỉ IP của tên miền này là gì?) Đến một máy chủ DNS đệ quy. Máy chủ đó giải quyết truy vấn, sau đó trả lại câu trả lời cho máy khách.

Máy chủ DNS đệ quy thường được điều hành bởi Nhà cung cấp dịch vụ Internet (ISP). Đây là những công ty bạn trả tiền cho việc truy cập internet của bạn mỗi tháng.

Cách máy chủ DNS ủy quyền hoạt động

Một loại máy chủ DNS khác là máy chủ DNS ủy quyền. Chúng chịu trách nhiệm lưu trữ các bản ghi DNS cho một miền. Chúng chứa cơ sở dữ liệu địa chỉ IP công cộng và tên máy chủ tương ứng.

Máy chủ DNS có thẩm quyền chịu trách nhiệm dịch tên miền sang địa chỉ IP. Điều này cho phép người dùng truy cập các trang web bằng tên miền thay vì địa chỉ IP.

Máy chủ DNS có thẩm quyền thường được cung cấp bởi các công ty đăng ký tên miền.

Các cách có thể cấu hình máy chủ DNS là gì?

Bạn có thể định cấu hình máy chủ DNS bằng một trong các phương pháp sau:

  • Máy chủ Địa chỉ IP tĩnh - địa chỉ IP cố định đã được gán cho các máy tính cụ thể. Địa chỉ IP tĩnh là lý tưởng cho các máy tính cần luôn có thể truy cập - chẳng hạn như máy chủ.
  • Máy chủ Địa chỉ IP động - những máy chủ này hữu ích khi các thiết bị không được kết nối vĩnh viễn với mạng (chẳng hạn như với mạng Wi-Fi công cộng). Bạn cũng có thể sử dụng những thứ này để cân bằng lưu lượng mạng hoặc gán địa chỉ IP tạm thời cho các thiết bị chỉ thường xuyên kết nối với mạng.
  • Các máy chủ Round Robin - các máy chủ này phân giải tên miền bằng cách trả về danh sách các địa chỉ IP - mỗi địa chỉ tương ứng với một máy chủ có thể cung cấp thông tin được yêu cầu. Máy chủ Round Robin có thể phân phối lưu lượng truy cập đồng đều trên một nhóm máy chủ. Điều này đảm bảo rằng không có máy chủ đơn lẻ nào bị quá tải với các yêu cầu và các máy chủ khác cũng nhận được phần lưu lượng truy cập hợp lý của chúng.
  • Máy chủ Cân bằng tải - những máy chủ này tìm ra cách hiệu quả nhất để phân phối yêu cầu trên các máy chủ. freeCodeCamp.org sử dụng các máy chủ cân bằng tải (còn được gọi là "Load Balancers") và tôi tưởng tượng hầu hết các trang web lớn cũng vậy.

Bạn cũng có thể định cấu hình máy chủ DNS để sử dụng các loại bộ nhớ đệm khác nhau, có thể cải thiện hiệu suất.

Bộ nhớ đệm là gì?

Bộ nhớ đệm là một kỹ thuật mà bạn lưu trữ dữ liệu từ các yêu cầu trước đây vào một vị trí bộ nhớ tạm thời. Suy nghĩ là: nếu ai đó cần thông tin này, thì ai đó cũng có thể sẽ cần thông tin này.

Khi ai đó yêu cầu dữ liệu từ máy chủ của bạn, trước tiên bạn có thể kiểm tra xem dữ liệu có được lưu trữ trong bộ nhớ cache của bạn hay không. Nếu có, bạn có thể truy xuất nó từ bộ nhớ cache thay vì vị trí ban đầu.

Đây là cách hoạt động của Mạng phân phối nội dung (CDN). Bộ nhớ đệm có thể tăng tốc đáng kể hiệu suất của trang web hoặc dịch vụ của bạn.

DNS có thay đổi địa chỉ IP của bạn không?

Không. Việc chuyển đổi máy chủ DNS sẽ không thay đổi địa chỉ IP của bạn.

Máy chủ DNS dịch tên miền sang địa chỉ IP. Theo mặc định, tất cả các trình duyệt web đều có tùy chọn để tự động phát hiện cài đặt DNS của mạng hiện tại của chúng.

Vì vậy, khi bạn kết nối với Mạng riêng ảo (VPN), máy chủ DNS của VPN sẽ thay thế máy chủ DNS của ISP của bạn.

Làm cách nào để thiết lập máy chủ DNS?

Nếu bạn muốn thiết lập máy chủ DNS của riêng mình cho công ty hoặc tổ chức của mình, đây là một số bước để bắt đầu:

  1. Chọn phần mềm máy chủ DNS phù hợp. Một số tùy chọn phổ biến bao gồm BIND, ISC DHCP và PowerDNS.
  2. Cài đặt phần mềm máy chủ DNS trên một máy chủ chuyên dụng. Điều này sẽ giúp bạn đảm bảo rằng máy chủ của bạn có các tài nguyên cần thiết để chạy một cách đáng tin cậy. Nếu bạn sử dụng đám mây, bạn sẽ không phải lo lắng nhiều về việc mất điện hoặc mất mạng sẽ làm hỏng DNS của bạn.
  3. Định cấu hình phần mềm máy chủ DNS. Điều này bao gồm thiết lập các vùng và bản ghi DNS.
  4. Kiểm tra máy chủ DNS. Sau khi nó bắt đầu và chạy, bạn có thể căng thẳng kiểm tra nó bằng cách mô phỏng lưu lượng truy cập để đảm bảo nó không bị "đổ".

Ngoài ra còn có rất nhiều công cụ máy chủ DNS được lưu trữ mà bạn có thể sử dụng, những công cụ này sẽ hoạt động hiệu quả và tiết kiệm thời gian cho bạn. Những việc này tốn một chút tiền mỗi tháng, nhưng đòi hỏi ít chuyên môn hơn để giám sát.

Tôi hy vọng bạn đã học được nhiều điều về Máy chủ DNS.

Tôi hy vọng bạn thấy điều này hữu ích. Nếu bạn muốn tìm hiểu thêm về lập trình và công nghệ, hãy thử chương trình học viết mã cốt lõi của freeCodeCamp . Nó miễn phí.

Nguồn: https://www.freecodecamp.org/news/what-is-a-dns-server/

#dns 

Máy Chủ DNS Là Gì? Giải Thích Về Máy Chủ DNS
Diego  Elizondo

Diego Elizondo

1649537340

Cómo Vaciar DNS Con El Comando Ipconfig /Flushdns De Windows

Probablemente haya notado que, después de visitar un sitio web por primera vez, el sitio web se carga mucho más rápido la próxima vez que lo visita.

Esto se debe a que su sistema operativo, o navegador en el caso de Google Chrome, almacena en caché las direcciones IP y la información DNS (Sistema de nombres de dominio) de cualquier sitio web que visite. La caché de DNS contiene:

  • la dirección del sitio web o el nombre de host, técnicamente llamados datos de recursos (rdata)
  • el nombre de dominio del sitio web
  • tipo de registro (IPv4 o IPv6)
  • la validez del caché o TTL (time to live)

Cuando el TTL expire, la memoria caché se borrará y el DNS se vaciará automáticamente. Pero hay momentos en los que no desea esperar horas o días para que caduque el TTL y desea vaciar su DNS manualmente.

En este artículo, explicaré por qué debe vaciar su DNS y cómo hacerlo en Windows 10 y Chrome.

Entonces, ¿por qué debería vaciar (o borrar) su DNS?

Vaciar su DNS tiene varias ventajas, tales como:

  • ocultar su comportamiento de búsqueda de los recopiladores de datos que podrían mostrarle anuncios basados ​​en su historial de búsqueda
  • solicitar que se cargue una versión actualizada de un sitio web o una aplicación web. Esto puede ayudar a resolver problemas 404 si un sitio web o aplicación web se migró a un nuevo dominio
  • prevenir el envenenamiento de la caché de DNS: una situación de seguridad en la que los piratas informáticos obtienen acceso malicioso a su caché de DNS y la modifican para que sea redirigido a un sitio web donde se puede recopilar información confidencial de usted

Cómo vaciar su DNS en Windows

Para vaciar sus registros DNS en Windows 10, siga los pasos a continuación:

Paso 1 : haga clic en Inicio o presione la [logo]tecla de Windows en su teclado

Paso 2 : escriba "cmd", luego seleccione "Ejecutar como administrador" a la derecha

cmd-admin

Paso 3 : Escriba "ipconfig /flushdns" y presioneENTER

Debería obtener una respuesta de que el caché de DNS se ha vaciado como se muestra a continuación:

fluirDNS

Esto significa que su caché se ha borrado por completo y se cargarán versiones nuevas de cualquier sitio web que visite.

Cómo borrar la caché de DNS en Google Chrome

A pesar de no ser un sistema operativo, Chrome mantiene su propio caché de DNS para ayudarlo a personalizar su experiencia de navegación.

Para vaciar el DNS de Chrome, todo lo que necesita hacer es escribir chrome://net-internals/#dnsen la barra de direcciones y presionar ENTER.

Luego haga clic en "Borrar caché de host":

flushChromeDNS

Conclusión

Como aprendió en este artículo, vaciar su DNS le brinda muchas ventajas que pueden hacer que su experiencia en Internet sea más segura.

Aunque el caché se borra después de que expira el TTL, debe vaciar su DNS con la mayor frecuencia posible para poder obtener estas ventajas.

¡Gracias por leer! 

Fuente: https://www.freecodecamp.org/news/flushdns-how-to-flush-dns-with-the-windows-ipconfig-flushdns-command/ 

#windows #dns #flushdns 

Cómo Vaciar DNS Con El Comando Ipconfig /Flushdns De Windows

Windows Ipconfig/Flushdnsコマンドを使用してDNSをフラッシュする

初めてWebサイトにアクセスした後、次にアクセスしたときにWebサイトの読み込みがはるかに速くなることに気付いたと思います。

これは、オペレーティングシステム(Google Chromeの場合はブラウザ)が、アクセスしたWebサイトのIPアドレスとDNS(ドメインネームシステム)情報をキャッシュしているためです。DNSキャッシュには次のものが含まれます。

  • 技術的にはリソースデータ(rdata)と呼ばれるWebサイトのアドレスまたはホスト名
  • ウェブサイトのドメイン名
  • レコードタイプ(IPv4またはIPv6)
  • キャッシュまたはTTLの有効性(存続時間)

TTLが期限切れになると、キャッシュがクリアされ、DNSが自動的にフラッシュされます。ただし、TTLの有効期限が切れるまで何時間も何日も待たずに、DNSを手動でフラッシュしたい場合があります。

この記事では、DNSをフラッシュする必要がある理由と、Windows10およびChromeでそれを行う方法について説明します。

では、なぜDNSをフラッシュ(またはクリア)する必要があるのでしょうか。

DNSのフラッシュには、次のようないくつかの利点があります。

  • 検索履歴に基づいて広告を表示する可能性のあるデータコレクターから検索行動を隠す
  • WebサイトまたはWebアプリの更新バージョンのロードを要求します。これは、ウェブサイトまたはウェブアプリが新しいドメインに移行された場合に404​​の問題を解決するのに役立ちます
  • DNSキャッシュポイズニングの防止–ブラックハットハッカーが悪意を持ってDNSキャッシュにアクセスし、それらを変更して、機密情報が収集される可能性のあるWebサイトにリダイレクトされるセキュリティ状況

WindowsでDNSをフラッシュする方法

Windows 10でDNSレコードをフラッシュするには、次の手順に従います。

ステップ1:[スタート]をクリックするか、キーボードのWindows[logo]キーを押します

ステップ2:「cmd」と入力し、右側の[管理者として実行]を選択します

cmd-admin

ステップ3:「ipconfig/flushdns」と入力してENTER

次のように、DNSキャッシュがフラッシュされたという応答が表示されます。

flushDNS

これは、キャッシュが完全にクリアされ、アクセスしたWebサイトの新しいバージョンがロードされることを意味します。

GoogleChromeでDNSキャッシュをクリアする方法

Chromeはオペレーティングシステムではありませんが、ブラウジングエクスペリエンスをパーソナライズするために、独自のDNSキャッシュを保持しています。

ChromeのDNSをフラッシュするにはchrome://net-internals/#dns、アドレスバーに入力してを押すだけENTERです。

次に、[ホストキャッシュをクリア]をクリックします。

flushChromeDNS

結論

この記事で学んだように、DNSをフラッシュすると、インターネットエクスペリエンスをより安全にすることができる多くの利点が得られます。

TTLの有効期限が切れるとキャッシュがクリアされますが、これらの利点を得るには、DNSをできるだけ頻繁にフラッシュする必要があります。

読んでくれてありがとう! 

ソース:https ://www.freecodecamp.org/news/flushdns-how-to-flush-dns-with-the-windows-ipconfig-flushdns-command/

#windows #dns #flushdns 

Windows Ipconfig/Flushdnsコマンドを使用してDNSをフラッシュする
Hoang  Kim

Hoang Kim

1649381877

Cách Xóa DNS Bằng Lệnh Ipconfig / Flushdns Của Windows

Có thể bạn đã nhận thấy rằng, sau khi truy cập một trang web lần đầu tiên, trang web tải nhanh hơn nhiều vào lần bạn truy cập tiếp theo.

Điều này là do hệ điều hành hoặc trình duyệt của bạn trong trường hợp là Google Chrome, địa chỉ IP bộ nhớ cache và thông tin DNS (Hệ thống tên miền) của bất kỳ trang web nào bạn truy cập. Bộ nhớ cache DNS chứa:

  • địa chỉ trang web hoặc tên máy chủ, về mặt kỹ thuật được gọi là dữ liệu tài nguyên (rdata)
  • tên miền của trang web
  • loại bản ghi (IPv4 hoặc IPv6)
  • tính hợp lệ của bộ nhớ cache hoặc TTL (thời gian tồn tại)

Khi TTL hết hạn, bộ nhớ cache sẽ bị xóa và DNS sẽ tự động được xóa cho bạn. Nhưng đôi khi bạn không muốn đợi hàng giờ hoặc hàng ngày để TTL hết hạn và muốn xóa DNS của mình theo cách thủ công.

Trong bài viết này, tôi sẽ xem xét lý do tại sao bạn nên xóa DNS của mình và cách thực hiện điều đó trong Windows 10 và Chrome.

Vì vậy, tại sao bạn nên xóa (hoặc xóa) DNS của mình?

Xóa DNS của bạn có một số ưu điểm, chẳng hạn như:

  • ẩn hành vi tìm kiếm của bạn khỏi những người thu thập dữ liệu, những người có thể hiển thị cho bạn quảng cáo dựa trên lịch sử tìm kiếm của bạn
  • yêu cầu tải phiên bản cập nhật của trang web hoặc ứng dụng web. Điều này có thể giúp giải quyết các vấn đề 404 nếu một trang web hoặc ứng dụng web đã được di chuyển sang một miền mới
  • ngăn chặn nhiễm độc bộ nhớ cache DNS - một tình huống bảo mật trong đó tin tặc mũ đen có được quyền truy cập vào bộ nhớ cache DNS của bạn một cách ác ý và thay đổi chúng để bạn được chuyển hướng đến một trang web nơi thông tin nhạy cảm có thể được thu thập từ bạn

Cách xóa DNS của bạn trên Windows

Để xóa bản ghi DNS của bạn trên Windows 10, hãy làm theo các bước bên dưới:

Bước 1 : Nhấp vào Bắt đầu hoặc nhấn [logo]phím Windows trên bàn phím của bạn

Bước 2 : Gõ "cmd", sau đó chọn "Run as Administrator" ở bên phải

cmd-admin

Bước 3 : Nhập "ipconfig / flushdns" và nhấnENTER

Bạn sẽ nhận được phản hồi rằng bộ nhớ cache DNS đã được xóa như bên dưới:

flushDNS

Điều này có nghĩa là bộ nhớ cache của bạn đã được xóa hoàn toàn và các phiên bản mới của bất kỳ trang web nào bạn truy cập sẽ được tải.

Cách xóa DNS Cache trên Google Chrome

Mặc dù không phải là một hệ điều hành, nhưng Chrome vẫn giữ một bộ nhớ cache DNS của riêng nó để giúp cá nhân hóa trải nghiệm duyệt web của bạn.

Để xóa DNS của Chrome, tất cả những gì bạn cần làm là nhập chrome://net-internals/#dnsvào thanh địa chỉ và nhấn ENTER.

Sau đó nhấp vào “Xóa bộ nhớ cache của máy chủ lưu trữ”:

flushChromeDNS

Phần kết luận

Như bạn đã tìm hiểu trong bài viết này, việc xóa DNS mang lại cho bạn rất nhiều lợi ích có thể giúp trải nghiệm internet của bạn an toàn hơn.

Mặc dù bộ nhớ cache được xóa sau khi TTL hết hạn, bạn nên xóa DNS của mình thường xuyên để có thể có được những lợi ích này.

Cảm ơn bạn đã đọc!

Nguồn: https://www.freecodecamp.org/news/flushdns-how-to-flush-dns-with-the-windows-ipconfig-flushdns-command/

#dns #chrome #windows 

Cách Xóa DNS Bằng Lệnh Ipconfig / Flushdns Của Windows
Waylon  Bruen

Waylon Bruen

1648624860

Truemail-go: Configurable Golang Email Validator

 Configurable Golang 📨 email validator. Verify email via Regex, DNS, SMTP and even more. Be sure that email address valid and exists. It's Golang port of truemail Ruby gem. Currently ported all validation features only.

Table of Contents

Synopsis

Email validation is a tricky thing. There are a number of different ways to validate an email address and all mechanisms must conform with the best practices and provide proper validation. The truemail-go package helps you validate emails via regex pattern, presence of DNS records, and real existence of email account on a current email server.

Syntax Checking: Checks the email addresses via regex pattern.

Mail Server Existence Check: Checks the availability of the email address domain using DNS records.

Mail Existence Check: Checks if the email address really exists and can receive email via SMTP connections and email-sending emulation techniques.

Features

  • Configurable validator, validate only what you need
  • Supporting of internationalized emails (EAI)
  • Whitelist/blacklist validation layers
  • Ability to configure different MX/SMTP validation flows
  • Ability to configure DEA validation flow
  • Simple SMTP debugger

Requirements

Golang 1.15+

Installation

Install truemail-go:

go get github.com/truemail-rb/truemail-go
go install -i github.com/truemail-rb/truemail-go

Import truemail-go dependency into your code:

package main

import "github.com/truemail-rb/truemail-go"

Usage

Configuration features

You can use global package configuration or custom independent configuration. Available configuration options:

  • verifier email
  • verifier domain
  • email pattern
  • connection timeout
  • response timeout
  • connection attempts
  • default validation type
  • validation type for domains
  • whitelisted domains
  • whitelist validation
  • blacklisted domains
  • blacklisted mx ip-addresses
  • custom DNS gateway
  • RFC MX lookup flow
  • SMTP port number
  • SMTP error body pattern
  • SMTP fail fast
  • SMTP safe check

Creating configuration

To have an access for library features, you must create configuration struct first. Please use truemail.NewConfiguration() built-in constructor to create a valid configuration as in the example below:

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  ConfigurationAttr{
    // Required parameter. Must be an existing email on behalf of which verification will be
    // performed
    VerifierEmail: "verifier@example.com",

    // Optional parameter. Must be an existing domain on behalf of which verification will be
    // performed. By default verifier domain based on verifier email
    VerifierDomain: "somedomain.com",

    // Optional parameter. You can override default regex pattern
    EmailPattern: `\A.+@(.+)\z`,

    // Optional parameter. You can override default regex pattern
    SmtpErrorBodyPattern: `.*(user|account).*`,

    // Optional parameter. Connection timeout in seconds.
    // It is equal to 2 by default.
    ConnectionTimeout: 1,

    // Optional parameter. A SMTP server response timeout in seconds.
    // It is equal to 2 by default.
    ResponseTimeout: 1,

    // Optional parameter. Total of connection attempts. It is equal to 2 by default.
    // This parameter uses in mx lookup timeout error and smtp request (for cases when
    // there is one mx server).
    ConnectionAttempts: 1,

    // Optional parameter. You can predefine default validation type for
    // truemail.Validate("email@email.com", configuration) call without type-parameter
    // Available validation types: "regex", "mx", "mx_blacklist", "smtp"
    ValidationTypeDefault: "mx",

    // Optional parameter. You can predefine which type of validation will be used for domains.
    // Also you can skip validation by domain.
    // Available validation types: "regex", "mx", "smtp"
    // This configuration will be used over current or default validation type parameter
    // All of validations for "somedomain.com" will be processed with regex validation only.
    // And all of validations for "otherdomain.com" will be processed with mx validation only.
    // It is equal to empty map of strings by default.
    ValidationTypeByDomain: map[string]string{"somedomain.com": "regex", "otherdomain.com": "mx"},

    // Optional parameter. Validation of email which contains whitelisted domain always will
    // return true. Other validations will not processed even if it was defined in
    // validationTypeByDomain. It is equal to empty slice of strings by default.
    WhitelistedDomains: []string{"somedomain1.com", "somedomain2.com"},

    // Optional parameter. With this option Truemail will validate email which contains whitelisted
    // domain only, i.e. if domain whitelisted, validation will passed to Regex, MX or SMTP
    // validators. Validation of email which not contains whitelisted domain always will return
    // false. It is equal false by default.
    WhitelistValidation: true,

    // Optional parameter. Validation of email which contains blacklisted domain always will
    // return false. Other validations will not processed even if it was defined in
    // validationTypeByDomain. It is equal to empty slice of strings by default.
    BlacklistedDomains: []string{"somedomain3.com", "somedomain4.com"},

    // Optional parameter. With this option Truemail will filter out unwanted mx servers via
    // predefined list of ip addresses. It can be used as a part of DEA (disposable email
    // address) validations. It is equal to empty slice of strings by default.
    BlacklistedMxIpAddresses: []string{"1.1.1.1", "2.2.2.2"},

    // Optional parameter. This option will provide to use custom DNS gateway when Truemail
    // interacts with DNS. Valid port number is in the range 1-65535. If you won't specify
    // nameserver port Truemail will use default DNS TCP/UDP port 53. It means that you can
    // use ip4 addres as DNS gateway, for example "10.0.0.1". By default Truemail uses
    // DNS gateway from system settings and this option is equal to empty string.
    Dns: "10.0.0.1:5300",

    // Optional parameter. This option will provide to use not RFC MX lookup flow.
    // It means that MX and Null MX records will be cheked on the DNS validation layer only.
    // By default this option is disabled and equal to false.
    NotRfcMxLookupFlow: true,

    // Optional parameter. SMTP port number. It is equal to 25 by default.
    // This parameter uses for SMTP session in SMTP validation layer.
    SmtpPort: 2525,

    // Optional parameter. This option will provide to use smtp fail fast behaviour. When
    // smtpFailFast = true it means that Truemail ends smtp validation session after first
    // attempt on the first mx server in any fail cases (network connection/timeout error,
    // smtp validation error). This feature helps to reduce total time of SMTP validation
    // session up to 1 second. By default this option is disabled and equal to false.
    SmtpFailFast: true,

    // Optional parameter. This option will be parse bodies of SMTP errors. It will be helpful
    // if SMTP server does not return an exact answer that the email does not exist
    // By default this option is disabled, available for SMTP validation only.
    SmtpSafeCheck: true,
  },
)

Using configuration

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(truemail.ConfigurationAttr{VerifierEmail: "verifier@example.com"})

truemail.Validate("some@email.com", configuration)
truemail.IsValid("some@email.com", configuration, "regex")

Validation features

Whitelist/Blacklist check

Whitelist/Blacklist check is zero validation level. You can define white and black list domains. It means that validation of email which contains whitelisted domain always will return true, and for blacklisted domain will return false.

Please note, other validations will not processed even if it was defined in ValidationTypeByDomain.

Sequence of domain list check:

  1. Whitelist check
  2. Whitelist validation check
  3. Blacklist check

Example of usage:

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    WhitelistedDomains: []string{"white-domain.com", "somedomain.com"},
    BlacklistedDomains: []string{"black-domain.com", "somedomain.com"},
    ValidationTypeByDomain: map[string]string{"somedomain.com": "mx"},
  },
)

Whitelist case

When email in whitelist, validation type will be redefined. Validation result returns true

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    WhitelistedDomains: []string{"white-domain.com", "somedomain.com"},
    BlacklistedDomains: []string{"black-domain.com", "somedomain.com"},
    ValidationTypeByDomain: map[string]string{"somedomain.com": "mx"},
  },
)

truemail.Validate("email@white-domain.com", configuration) // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@white-domain.com", configuration) // returns true

Whitelist validation case

When email domain in whitelist and WhitelistValidation is sets equal to true validation type will be passed to other validators. Validation of email which not contains whitelisted domain always will return false.

Email has whitelisted domain

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    WhitelistedDomains: []string{"white-domain.com"},
    WhitelistValidation: true,
  },
)

truemail.Validate("email@white-domain.com", configuration, "regex") // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@white-domain.com", configuration, "regex") // returns true

Email hasn't whitelisted domain

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    WhitelistedDomains: []string{"white-domain.com"},
    WhitelistValidation: true,
  },
)

truemail.Validate("email@domain.com", configuration, "regex") // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@domain.com", configuration, "regex") // returns false

Blacklist case

When email in blacklist, validation type will be redefined too. Validation result returns false.

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    WhitelistedDomains: []string{"white-domain.com", "somedomain.com"},
    BlacklistedDomains: []string{"black-domain.com", "somedomain.com"},
    ValidationTypeByDomain: map[string]string{"somedomain.com": "mx"},
  },
)

truemail.Validate("email@black-domain.com", configuration) // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@domain.com", configuration) // returns false

Duplication case

Validation result for this email returns true, because it was found in whitelisted domains list first. Also validatorResult.ValidationType for this case will be redefined.

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    WhitelistedDomains: []string{"white-domain.com", "somedomain.com"},
    BlacklistedDomains: []string{"black-domain.com", "somedomain.com"},
    ValidationTypeByDomain: map[string]string{"somedomain.com": "mx"},
  },
)

truemail.Validate("email@somedomain.com", configuration) // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@somedomain.com", configuration) // returns true

Regex validation

Validation with regex pattern is the first validation level. It uses whitelist/blacklist check before running itself.

[Whitelist/Blacklist] -> [Regex validation]

By default this validation not performs strictly following RFC 5322 standard, so you can override truemail default regex pattern if you want.

Example of usage:

With default regex pattern

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
  },
)

truemail.Validate("email@example.com", configuration, "regex") // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@example.com", configuration, "regex") // returns true

With custom regex pattern

You should define your custom regex pattern in a gem configuration before.

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    EmailPattern: `\A(.+)@(.+)\z`,
  },
)

truemail.Validate("email@example.com", configuration, "regex") // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@example.com", configuration, "regex") // returns true
truemail.IsValid("not_email", configuration, "regex") // returns false

MX validation

In fact it's DNS validation because it checks not MX records only. DNS validation is the second validation level, historically named as MX validation. It uses Regex validation before running itself. When regex validation has completed successfully then runs itself.

[Whitelist/Blacklist] -> [Regex validation] -> [MX validation]

Please note, truemail MX validator not performs strict compliance of the RFC 5321 standard for best validation outcome.

RFC MX lookup flow

Truemail MX lookup based on RFC 5321. It consists of 3 substeps: MX, CNAME and A record resolvers. The point of each resolver is attempt to extract the mail servers from email domain. If at least one server exists that validation is successful. Iteration is processing until resolver returns true.

Example of usage:

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
  },
)

truemail.Validate("email@example.com", configuration, "mx") // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@example.com", configuration, "mx") // returns bool

Not RFC MX lookup flow

Also Truemail has possibility to use not RFC MX lookup flow. It means that will be used only one MX resolver on the DNS validation layer. By default this option is disabled.

Example of usage:

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    NotRfcMxLookupFlow: true,
  },
)

truemail.Validate("email@example.com", configuration, "mx") // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@example.com", configuration, "mx") // returns bool

MX blacklist validation

MX blacklist validation is the third validation level. This layer provides checking extracted mail server(s) IP address from MX validation with predefined blacklisted IP addresses list. It can be used as a part of DEA (disposable email address) validations.

[Whitelist/Blacklist] -> [Regex validation] -> [MX validation] -> [MX blacklist validation]

Example of usage:

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    BlacklistedMxIpAddresses: []string{"127.0.1.2", "127.0.1.3"},
  },
)

truemail.Validate("email@example.com", configuration, "mx_blacklist") // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@example.com", configuration, "mx_blacklist") // returns bool

SMTP validation

SMTP validation is a final, fourth validation level. This type of validation tries to check real existence of email account on a current email server. This validation runs a chain of previous validations and if they're complete successfully then runs itself.

[Whitelist/Blacklist] -> [Regex validation] -> [MX validation] -> [MX blacklist validation] -> [SMTP validation]

If total count of MX servers is equal to one, truemail SMTP validator will use value from ConnectionAttempts as connection attempts. By default it's equal 2.

By default, you don't need pass with-parameter to use it. Example of usage is specified below:

SMTP fail fast enabled

Truemail can use fail fast behaviour for SMTP validation layer. When SmtpFailFast = true it means that truemail ends smtp validation session after first attempt on the first mx server in any fail cases (network connection/timeout error, smtp validation error). This feature helps to reduce total time of SMTP validation session up to 1 second.

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    SmtpFailFast: true,
  },
)

truemail.Validate("email@example.com", configuration) // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@example.com", configuration) // returns bool

SMTP safe check disabled

When this feature disabled, it means that SMTP validation will be failed when it consists at least one smtp error.

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
  },
)

truemail.Validate("email@example.com", configuration) // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@example.com", configuration) // returns bool

SMTP safe check enabled

When this feature enabled, it means that SMTP validation will be successful for all cases until truemail SMTP validator receive RCPT TO error that matches to SmtpErrorBodyPattern, specified in configuration.

import "github.com/truemail-rb/truemail-go"

configuration := truemail.NewConfiguration(
  truemail.ConfigurationAttr{
    VerifierEmail: "verifier@example.com",
    SmtpSafeCheck: true,
  },
)

truemail.Validate("email@example.com", configuration) // returns pointer to validatorResult with validation details and error
truemail.IsValid("email@example.com", configuration) // returns bool

Truemail helpers

.IsValid()

You can use the .IsValid() helper for quick validation of email address. It returns a boolean:

truemail.IsValid("email@example.com", configuration)

Truemail family

All Truemail solutions: https://truemail-rb.org

NameTypeDescription
truemailruby gemConfigurable framework agnostic plain Ruby email validator, main core
truemail serverruby appLightweight rack based web API wrapper for Truemail gem
truemail-rack-dockerdocker imageLightweight rack based web API dockerized image :whale: of Truemail server
truemail-ruby-clientruby gemWeb API Ruby client for Truemail Server
truemail-crystal-clientcrystal shardWeb API Crystal client for Truemail Server
truemail-java-clientjava libWeb API Java client for Truemail Server
truemail-rspecruby gemTruemail configuration, auditor and validator RSpec helpers

Contributing

Bug reports and pull requests are welcome on GitHub at https://github.com/truemail-rb/truemail-go. This project is intended to be a safe, welcoming space for collaboration, and contributors are expected to adhere to the Contributor Covenant code of conduct. Please check the open tickets. Be sure to follow Contributor Code of Conduct below and our Contributing Guidelines.

Actual and maintainable documentation 📚 for developers is living here.

Code of Conduct

Everyone interacting in the Truemail project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the code of conduct.

Credits

Versioning

Truemail uses Semantic Versioning 2.0.0

Author: Truemail-rb
Source Code: https://github.com/truemail-rb/truemail-go 
License: MIT License

#go #golang #email #dns 

Truemail-go: Configurable Golang Email Validator
Waylon  Bruen

Waylon Bruen

1648482846

GoDNS: A Dynamic DNS (DDNS) Client Tool

GoDNS is a dynamic DNS (DDNS) client tool. It is a rewrite in Go of my early DynDNS open source project.

Currently supports updating A records for subdomains. Doesn't support updating of root domains.

 ██████╗  ██████╗ ██████╗ ███╗   ██╗███████╗
██╔════╝ ██╔═══██╗██╔══██╗████╗  ██║██╔════╝
██║  ███╗██║   ██║██║  ██║██╔██╗ ██║███████╗
██║   ██║██║   ██║██║  ██║██║╚██╗██║╚════██║
╚██████╔╝╚██████╔╝██████╔╝██║ ╚████║███████║
 ╚═════╝  ╚═════╝ ╚═════╝ ╚═╝  ╚═══╝╚══════╝

Pre-conditions

To use GoDNS, it is assumed:

  • You registered (now own) a domain
  • Domain was delegated to a supported DNS provider (i.e. it has nameserver NS records pointing at a supported provider)

Alternatively, you can sign in to DuckDNS (with a social account) and get a subdomain on the duckdns.org domain for free.

Installation

Build GoDNS by running (from the root of the repository):

cd cmd/godns        # go to the GoDNS directory
go mod download     # get dependencies
go build            # build

You can also download a compiled binary from the releases.

Usage

Print usage/help by running:

$ ./godns -h
Usage of ./godns:
  -c string
        Specify a config file (default "./config.json")
  -h    Show help

Configuration

Overview

  • Make a copy of config_sample.json and name it as config.json, or make a copy of config_sample.yaml and name it as config.yaml.
  • Configure your provider, domain/subdomain info, credentials, etc.
  • Configure a notification medium (e.g. SMTP to receive emails) to get notified when your IP address changes
  • Place the file in the same directory of GoDNS or use the -c=path/to/your/file.json option

Configuration file format

GoDNS supports 2 different configuration file formats:

  • JSON
  • YAML

By default, GoDNS uses JSON config file. However, you can specify to use the YAML format via: ./godns -c /path/to/config.yaml

Configuration properties

  • provider — One of the supported provider to use: Cloudflare, Google, DNSPod, AliDNS, HE, DuckDNS or Dreamhost.
  • email — Email or account name of the DNS provider.
  • password — Password of the DNS provider.
  • login_token — API token of the DNS provider.
  • domains — Domains list, with your sub domains.
  • ip_url — A URL for fetching one's public IPv4 address.
  • ipv6_url — A URL for fetching one's public IPv6 address.
  • ip_type — Switch deciding if IPv4 or IPv6 should be used (when supported). Available values: IPv4 or IPv6.
  • interval — How often (in seconds) the public IP should be updated.
  • socks5_proxy — Socks5 proxy server.
  • resolver — Address of a public DNS server to use. For instance to use Google's public DNS, you can set 8.8.8.8 when using GoDNS in IPv4 mode or 2001:4860:4860::8888 in IPv6 mode.

Update root domain

By simply putting @ into sub_domains, for example:

"domains": [{
      "domain_name": "example.com",
      "sub_domains": ["@"]
    }]

Configuration examples

Cloudflare

For Cloudflare, you need to provide the email & Global API Key as password (or to use the API token) and config all the domains & subdomains.

Using email & Global API Key

{
  "provider": "Cloudflare",
  "email": "you@example.com",
  "password": "Global API Key",
  "domains": [{
      "domain_name": "example.com",
      "sub_domains": ["www","test"]
    },{
      "domain_name": "example2.com",
      "sub_domains": ["www","test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300,
  "socks5_proxy": ""
}

Using the API Token

{
  "provider": "Cloudflare",
  "login_token": "API Token",
  "domains": [{
      "domain_name": "example.com",
      "sub_domains": ["www","test"]
    },{
      "domain_name": "example2.com",
      "sub_domains": ["www","test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300,
  "socks5_proxy": ""
}

DNSPod

For DNSPod, you need to provide your API Token(you can create it here), and config all the domains & subdomains.

Example

{
  "provider": "DNSPod",
  "login_token": "your_id,your_token",
  "domains": [{
      "domain_name": "example.com",
      "sub_domains": ["www","test"]
    },{
      "domain_name": "example2.com",
      "sub_domains": ["www","test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300,
  "socks5_proxy": ""
}

Dreamhost

For Dreamhost, you need to provide your API Token(you can create it here), and config all the domains & subdomains.

Example

{
  "provider": "Dreamhost",
  "login_token": "your_api_key",
  "domains": [{
      "domain_name": "example.com",
      "sub_domains": ["www","test"]
    },{
      "domain_name": "example2.com",
      "sub_domains": ["www","test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300,
  "resolver": "ns1.dreamhost.com",
  "socks5_proxy": ""
}

Dynv6

For Dynv6, only need to provide the token, config 1 default domain & subdomains.

Example

{
  "provider": "Dynv6",
  "password": "",
  "login_token": "1234567ABCDEFGabcdefg123456789",
  "domains": [
    {
      "domain_name": "dynv6.net",
      "sub_domains": [
        "myname"
      ]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300,
  "socks5_proxy": ""
}

Google Domains

For Google Domains, you need to provide email & password, and config all the domains & subdomains.

Example

{
  "provider": "Google",
  "email": "Your_Username",
  "password": "Your_Password",
  "domains": [{
      "domain_name": "example.com",
      "sub_domains": ["www","test"]
    },{
      "domain_name": "example2.com",
      "sub_domains": ["www","test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300,
  "socks5_proxy": ""
}

AliDNS

For AliDNS, you need to provide AccessKeyID & AccessKeySecret as email & password, and config all the domains & subdomains.

Example

{
  "provider": "AliDNS",
  "email": "AccessKeyID",
  "password": "AccessKeySecret",
  "login_token": "",
  "domains": [{
      "domain_name": "example.com",
      "sub_domains": ["www","test"]
    },{
      "domain_name": "example2.com",
      "sub_domains": ["www","test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300,
  "socks5_proxy": ""
}

DuckDNS

For DuckDNS, only need to provide the token, config 1 default domain & subdomains.

Example

{
  "provider": "DuckDNS",
  "password": "",
  "login_token": "3aaaaaaaa-f411-4198-a5dc-8381cac61b87",
  "domains": [
    {
      "domain_name": "www.duckdns.org",
      "sub_domains": [
        "myname"
      ]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300,
  "socks5_proxy": ""
}

No-IP

Example

{
  "provider": "NoIP",
  "email": "mail@example.com",
  "password": "YourPassword",
  "domains": [
    {
      "domain_name": "ddns.net",
      "sub_domains": ["timothyye6"]
    }
  ],
  "ip_type": "IPv4",
  "ip_url": "https://api.ip.sb/ip",
  "resolver": "8.8.8.8",
  "interval": 300,
  "socks5_proxy": ""
}

HE.net

For HE, email is not needed, just fill DDNS key to password, and config all the domains & subdomains.

Example

{
  "provider": "HE",
  "password": "YourPassword",
  "login_token": "",
  "domains": [{
      "domain_name": "example.com",
      "sub_domains": ["www","test"]
    },{
      "domain_name": "example2.com",
      "sub_domains": ["www","test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300,
  "socks5_proxy": ""
}

Provider configuration

Add a new "A record" and make sure that "Enable entry for dynamic dns" is checked:

Fill in your own DDNS key or generate a random DDNS key for this new created "A record":

Remember the DDNS key and set it in the password property in the configuration file.

NOTICE: If you have multiple domains or subdomains, make sure their DDNS key are the same.

Scaleway

For Scaleway, you need to provide an API Secret Key as the login_token (How to generate an API key), and configure the domains and subdomains. domain_name should equal a DNS zone, or the root domain in Scaleway. TTL for the DNS records will be set to the interval value. Make sure A or AAAA records exist for the relevant sub domains, these can be set up in the Scaleway console.

Example

{
  "provider": "Scaleway",
  "login_token": "API Secret Key",
  "domains": [{
      "domain_name": "example.com",
      "sub_domains": ["www","@"]
    },{
      "domain_name": "samplednszone.example.com",
      "sub_domains": ["www","test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300
}

Linode

To authenticate with the Linode API you will need to provide a Personal Access Token with "Read/Write" access on the "Domain" scope. Linode has a help page about creating access tokens. Pass this token into the login_token field of the config file.

The domain_name field of the config file must be the name of an existing Domain managed by Linode. Linode has a help page about adding domains. The GoDNS Linode handler will not create domains automatically, but will create subdomains automatically.

The GoDNS Linode handler currently uses a fixed TTL of 30 seconds for Linode DNS records.

Example

{
  "provider": "Linode",
  "login_token": ${PERSONAL_ACCESS_TOKEN},
  "domains": [{
      "domain_name": "example.com",
      "sub_domains": ["www","@"]
    },{
      "domain_name": "samplednszone.example.com",
      "sub_domains": ["www","test"]
    }
  ],
  "resolver": "8.8.8.8",
  "ip_url": "https://api.ip.sb/ip",
  "ip_type": "IPv4",
  "interval": 300
}

Notifications

GoDNS can send a notification each time the IP changes.

Email

Emails are sent over SMTP. Update your configuration with the following snippet:

  "notify": {
    "mail": {
      "enabled": true,
      "smtp_server": "smtp.example.com",
      "smtp_username": "user",
      "smtp_password": "password",
      "smtp_port": 25,
      "send_to": "my_mail@example.com"
    }
  }

Each time the IP changes, you will receive an email like that:

Telegram

To receive a Telegram message each time the IP changes, update your configuration with the following snippet:

  "notify": {
    "telegram": {
      "enabled": true,
      "bot_api_key": "11111:aaaa-bbbb",
      "chat_id": "-123456",
      "message_template": "Domain *{{ .Domain }}* is updated to %0A{{ .CurrentIP }}",
      "use_proxy": false
    },
  }

The message_template property supports markdown. New lines needs to be escaped with %0A.

Slack

To receive a Slack message each time the IP changes, update your configuration with the following snippet:

  "notify": {
    "slack": {
      "enabled": true,
      "bot_api_token": "xoxb-xxx",
      "channel": "your_channel",
      "message_template": "Domain *{{ .Domain }}* is updated to \n{{ .CurrentIP }}",
      "use_proxy": false
    },
  }

The message_template property supports markdown. New lines needs to be escaped with \n.

Discord

To receive a Discord message each time the IP changes, update your configuration with the following snippit:

  "notify": {
    "discord": {
          "enabled": true,
          "bot_api_token": "discord_bot_token",
          "channel": "your_channel",
          "message_template": "(Optional) Domain *{{ .Domain }}* is updated to \n{{ .CurrentIP }}",
        }
  }

Pushover

To receive a Pushover message each time the IP changes, update your configuration with the following snippet:

  "notify": {
    "pushover": {
      "enabled": true,
      "token": "abcdefghijklmnopqrstuvwxyz1234",
      "user": "abcdefghijklmnopqrstuvwxyz1234",
      "message_template": "",
      "device": "",
      "title": "",
      "priority": 0,
      "html": 1
    }
  }

The message_template property supports html if the html parameter is 1. If it is left empty a default message will be used. If the device and title parameters are left empty, Pushover will choose defaults see. More details on the priority parameter can be found on the Pushover API description.

Miscellaneous topics

IPv6 support

Most of the providers support IPv6.

To enable the IPv6 support of GoDNS, there are two solutions to choose from:

Use an online service to lookup the external IPv6

For that:

  • Set the ip_type as IPv6, and make sure the ipv6_url is configured
  • Create an AAAA record instead of an A record in your DNS provider

Let GoDNS find the IPv6 of the network interface of the machine it is running on (more on that later).

For this to happen, just leave ip_url and ipv6_url empty.

Note that the network interface must be configured with an IPv6 for this to work.

Network interface IP address

For some reasons if you want to get the IP address associated to a network interface (instead of performing an online lookup), you can specify it in the configuration file this way:

  "ip_url": "",
  "ip_interface": "interface-name",

With interface-name replaced by the name of the network interface, e.g. eth0 on Linux or Local Area Connection on Windows.

Note: If ip_url is also specified, it will be used to perform an online lookup first and the network interface IP will be used as a fallback in case of failure.

SOCKS5 proxy support

You can make all remote calls go through a SOCKS5 proxy by specifying it in the configuration file this way:

"socks5_proxy": "127.0.0.1:7070"
"use_proxy": true

Display debug info

To display debug info, set debug_info as true to enable this feature. By default, the debug info is disabled.

  "debug_info": true,

Running GoDNS

There are a few ways to run GoDNS.

Manually

Note: make sure to set the run_once parameter in your config file so the program will quit after the first run (the default is false).

Can be added to cron or attached to other events on your system.

{
  "...": "...",
  "run_once": true
}

Then run

./godns

As a manual daemon

nohup ./godns &

Note: when the program stops, it will not be restarted.

As a managed daemon (with upstart)

Install upstart first (if not available already)

Copy ./upstart/godns.conf to /etc/init (and tweak it to your needs)

Start the service:

sudo start godns

As a managed daemon (with systemd)

Install systemd first (it not available already)

Copy ./systemd/godns.service to /lib/systemd/system (and tweak it to your needs)

Start the service:

sudo systemctl enable godns
sudo systemctl start godns

As a Docker container

Visit https://hub.docker.com/r/timothyye/godns to fetch the latest docker image.
With /path/to/config.json your local configuration file, run:

docker run \
-d --name godns --restart=always \
-v /path/to/config.json:/config.json \
timothyye/godns:latest

As a Windows service

Download the latest version of NSSM

In an administrative prompt, from the folder where NSSM was downloaded, e.g. C:\Downloads\nssm\ win64, run:

nssm install YOURSERVICENAME

Follow the interface to configure the service. In the "Application" tab just indicate where the godns.exe file is. Optionally you can also define a description on the "Details" tab and define a log file on the "I/O" tab. Finish by clicking on the "Install service" button.

The service will now start along Windows.

Note: you can uninstall the service by running:

nssm remove YOURSERVICENAME

Supported DNS Providers

ProviderIPv4 supportIPv6 supportRoot DomainSubdomains
Cloudflare
Google Domains
DNSPod
Dynv6
HE.net (Hurricane Electric)
AliDNS
DuckDNS
Dreamhost
No-IP
Scaleway
Linode

Tip: You can follow this issue to view the current status of DDNS for root domains.

Supported Platforms

Linux

MacOS

ARM Linux (Raspberry Pi, etc.)

Windows

MIPS32 platform

To compile binaries for MIPS (mips or mipsle), run:

GOOS=linux GOARCH=mips/mipsle GOMIPS=softfloat go build -a

The binary can run on routers as well.

Author: Timothyye
Source Code: https://github.com/timothyye/godns 
License: Apache-2.0 License

#go #golang #dns 

GoDNS: A Dynamic DNS (DDNS) Client Tool
Ruthie  Bugala

Ruthie Bugala

1637914973

How To Use Azure PaaS-based DNS Service

👉DNS is not only needed for on-premise infra, but for the cloud as well. This article will help you to understand how to use Azure PaaS-based DNS service.

⭐️You can see more at the link at the end of the article. Thank you for your interest in the blog, if you find it interesting, please give me a like, comment and share with everyone. Thanks! ❤️

#azure #paas #dns 


 

How To Use Azure PaaS-based DNS Service

The Importance Of DNS in Kubernetes Cluster

This article talks about customizing DNS resolution for Kubernetes with some detailed examples and explanations around the same.

DNS is an in-built Kubernetes service as a feature to us by the addon manager. The DNS server enables us to have the concept of DNS and service resolving the web requests initiated by the Pods/application.

#kubernetes #dns 

The Importance Of DNS in Kubernetes Cluster
Duane  Purdy

Duane Purdy

1632406949

Visually Breaks Down What DNS (Domain Name System) Is?

Domain Name System (DNS) is what makes it possible for users to connect to websites using Internet domain names and searchable URLs rather than numerical Internet protocol addresses, but how does this all work?

In this lightboard video, Pooja Devarajan with IBM Cloud, visually breaks down what DNS is, how it works, and walks use through the DNS lookup process to show how a DNS record is returned from a DNS Server.

#dns #ibm 

Visually Breaks Down What DNS (Domain Name System) Is?