{"id":21464229,"url":"https://github.com/shuque/checkzoneserial","last_synced_at":"2025-07-15T03:32:41.062Z","repository":{"id":64302124,"uuid":"184680681","full_name":"shuque/checkzoneserial","owner":"shuque","description":"Check zone serial numbers across servers","archived":false,"fork":false,"pushed_at":"2023-07-16T00:08:11.000Z","size":55,"stargazers_count":5,"open_issues_count":1,"forks_count":1,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-06-20T10:06:00.157Z","etag":null,"topics":["authoritative","checker","dns","number","serial","server","zone"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/shuque.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2019-05-03T01:05:56.000Z","updated_at":"2023-01-27T02:46:36.000Z","dependencies_parsed_at":"2024-06-20T09:17:55.075Z","dependency_job_id":null,"html_url":"https://github.com/shuque/checkzoneserial","commit_stats":null,"previous_names":[],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuque%2Fcheckzoneserial","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuque%2Fcheckzoneserial/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuque%2Fcheckzoneserial/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/shuque%2Fcheckzoneserial/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/shuque","download_url":"https://codeload.github.com/shuque/checkzoneserial/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":226017327,"owners_count":17560465,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["authoritative","checker","dns","number","serial","server","zone"],"created_at":"2024-11-23T07:30:25.271Z","updated_at":"2025-07-15T03:32:41.047Z","avatar_url":"https://github.com/shuque.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# checkzoneserial\nCheck zone serial numbers across servers\n\nThis program queries a zone's SOA record at all its authoritative\nservers simultaneously and reports the serial number seen and the response\ntimes. If a master server is specified (with the -m option) it will also\ncompute the difference in the serial numbers seen with the master serial\nnumber.\n\nThe master, if provided, is queried first. Then all the authoritative\nservers are queried in parallel.\n\n### Pre-requisites\n\n* Go\n* Miek Gieben's Go dns package: https://github.com/miekg/dns\n\n### Building\n\nJust run 'go build'. This will generate the executable 'checkzoneserial'.\n\n### Usage\n\n```\n$ checkzoneserial -h\ncheckzoneserial, version 1.1.2\nUsage: checkzoneserial [Options] \u003czone\u003e\n\n        Options:\n        -h          Print this help string\n        -4          Use IPv4 transport only\n        -6          Use IPv6 transport only\n        -cf file    Use alternate resolv.conf file\n        -s          Print responses sorted by domain name and IP version\n        -j          Produce json formatted output (implies -s)\n        -c          Use TCP for queries (default: UDP with TCP on truncation)\n        -t N        Query timeout value in seconds (default 3)\n        -r N        Maximum # SOA query retries for each server (default 3)\n        -d N        Allowed SOA serial number drift (default 0)\n        -b N        Buffer size for DNS messages (default 1400)\n        -nsid       Request NSID option in DNS queries\n        -m ns       Master server name/address to compare serial numbers with\n        -a ns1,..   Specify additional nameserver names/addresses to query\n        -n          Don't query advertised nameservers for the zone\n```\n\n### Return codes\n\n* 0 on success\n* 1 if serials aren't identical or differ by more than allowed drift\n* 2 on detection of server issues (timeout, bad response, etc)\n* 3 if the master server (if specified) fails to respond\n* 4 on program invocation error\n\n\n### Example runs\n\nReport zone serials for all authoritative servers for upenn.edu:\n\n```\n$ checkzoneserial upenn.edu\n## upenn.edu. 2022-12-05T17:57:40EST\n     1007401858 adns3.upenn.edu. 128.91.251.33 7.12ms\n     1007401858 adns1.upenn.edu. 128.91.3.128 5.31ms\n     1007401858 dns1.udel.edu. 128.175.13.16 12.64ms\n     1007401858 dns2.udel.edu. 128.175.13.17 17.41ms\n     1007401858 adns2.upenn.edu. 128.91.254.22 6.42ms\n     1007401858 adns3.upenn.edu. 2607:f470:1003::3:c 5.21ms\n     1007401858 adns1.upenn.edu. 2607:f470:1001::1:a 5.67ms\n     1007401858 adns2.upenn.edu. 2607:f470:1002::2:3 5.12ms\n     1007401858 sns-pb.isc.org. 192.5.4.1 9.99ms\n     1007401858 sns-pb.isc.org. 2001:500:2e::1 8.87ms\n$ echo $?\n0\n```\n\nReport zone serials for siteforce.com servers, compare them to the\nmaster server 10.11.12.13 (-m option) and report the deltas.\n\n```\n$ checkzoneserial -m 10.11.12.13 siteforce.com\n## siteforce.com. 2022-12-05T17:57:40EST\n     2019120538 [  MASTER] 10.11.12.13 10.11.12.13 0.41ms\n     2019120538 [       0] udns1.salesforce.com. 2001:502:2eda::8 5.43ms\n     2019120537 [       1] pch1.salesforce-dns.com. 206.223.122.1 6.71ms\n     2019120538 [       0] pch1.salesforce-dns.com. 2620:171:809::1 7.12ms\n     2019120536 [       2] udns2.salesforce.com. 2001:502:ad09::8 8.88ms\n     2019120538 [       0] udns4.salesforce.com. 156.154.103.8 5.89ms\n     2019120538 [       0] udns1.salesforce.com. 156.154.100.8 6.74ms\n     2019120538 [       0] udns2.salesforce.com. 156.154.101.8 3.39ms\n     2019120536 [       2] udns3.salesforce.com. 156.154.102.8 12.12ms\n     2019120538 [       0] udns4.salesforce.com. 2610:a1:1010::8 9.74ms\n     2019120536 [       2] udns3.salesforce.com. 2610:a1:1009::8 8.61ms\n$ echo $?\n1\n```\n\nThe same as the last run, but only check the IPv6 addresses of the\nservers. Since all the serials are the same, the exit code is 0.\n\n```\n$ checkzoneserial -m 10.11.12.13 -6 siteforce.com\n## siteforce.com. 2022-12-05T17:57:40EST\n     2019120538 [  MASTER] 10.11.12.13 10.11.12.13 0.54ms\n     2019120538 [       0] pch1.salesforce-dns.com. 2620:171:809::1 7.12ms\n     2019120538 [       0] udns1.salesforce.com. 2001:502:2eda::8 6.43ms\n     2019120538 [       0] udns2.salesforce.com. 2001:502:ad09::8 7.77ms\n     2019120538 [       0] udns3.salesforce.com. 2610:a1:1009::8 4.67ms\n     2019120538 [       0] udns4.salesforce.com. 2610:a1:1010::8 8.88ms\n$ echo $?\n0\n```\n\nReport the serials of servers for zone appforce.com, compare them to\nthe master 10.11.12.13, and allow a serial number difference (-d) of\n2. Since the serials of some servers were observed to differ by more\nthan this value (3 is greater than 2), the exit code is 1.\n\n```\n$ checkzoneserial -m 10.11.12.13 -d 2 appforce.com\n## appforce.com. 2022-12-05T17:57:40EST\n     2001771862 [  MASTER]  10.11.12.13 10.11.12.13 0.87ms\n     2001771861 [       1] pch1.salesforce-dns.com. 2620:171:809::1 4.23ms\n     2001771861 [       1] pch1.salesforce-dns.com. 206.223.122.1 4.54ms\n     2001771859 [       3] udns2.salesforce.com. 2001:502:ad09::8 5.56ms\n     2001771859 [       3] udns1.salesforce.com. 2001:502:2eda::8 7.98ms\n     2001771861 [       1] udns4.salesforce.com. 156.154.103.8 8.81ms\n     2001771861 [       1] udns1.salesforce.com. 156.154.100.8 5.43ms\n     2001771861 [       1] udns3.salesforce.com. 156.154.102.8 4.55ms\n     2001771861 [       1] udns2.salesforce.com. 156.154.101.8 7.77ms\n     2001771861 [       1] udns4.salesforce.com. 2610:a1:1010::8 9.43ms\n     2001771861 [       1] udns3.salesforce.com. 2610:a1:1009::8 11.32ms\n$ echo $?\n1\n```\n\nDisplay json formatted output (-j)\n```\n$ checkzoneserial -m 10.1.2.3 -j appforce.com  | jq .\n\n{\n  \"status\": 1,\n  \"error\": \"serial mismatch or exceeds drift\",\n  \"zone\": \"appforce.com.\",\n  \"timestamp\": \"2023-07-15T20:02:06EDT\",\n  \"master\": {\n    \"name\": \"\",\n    \"ip\": \"10.1.2.3\",\n    \"serial\": 2025360499,\n    \"resptime\": 7.909792\n  },\n  \"responses\": [\n    {\n      \"name\": \"udns1.salesforce.com.\",\n      \"ip\": \"2001:502:2eda::8\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 33.851403000000005\n    },\n    {\n      \"name\": \"udns1.salesforce.com.\",\n      \"ip\": \"156.154.100.8\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 3.389384\n    },\n    {\n      \"name\": \"udns2.salesforce.com.\",\n      \"ip\": \"2001:502:ad09::8\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 22.976582\n    },\n    {\n      \"name\": \"udns2.salesforce.com.\",\n      \"ip\": \"156.154.101.8\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 1.929406\n    },\n    {\n      \"name\": \"udns3.salesforce.com.\",\n      \"ip\": \"2610:a1:1009::8\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 33.61233\n    },\n    {\n      \"name\": \"udns3.salesforce.com.\",\n      \"ip\": \"156.154.102.8\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 7.206194\n    },\n    {\n      \"name\": \"udns4.salesforce.com.\",\n      \"ip\": \"2610:a1:1010::8\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 21.751995\n    },\n    {\n      \"name\": \"udns4.salesforce.com.\",\n      \"ip\": \"156.154.103.8\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 2.648234\n    },\n    {\n      \"name\": \"pch1.salesforce-dns.com.\",\n      \"ip\": \"2620:171:809::1\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 3.994213\n    },\n    {\n      \"name\": \"pch1.salesforce-dns.com.\",\n      \"ip\": \"206.223.122.1\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 4.748021\n    },\n    {\n      \"name\": \"pch2.salesforce-dns.com.\",\n      \"ip\": \"2620:171:80a::1\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 4.633182\n    },\n    {\n      \"name\": \"pch2.salesforce-dns.com.\",\n      \"ip\": \"199.184.183.1\",\n      \"serial\": 2025360495,\n      \"delta\": 4,\n      \"resptime\": 4.594670000000001\n    }\n  ]\n}\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshuque%2Fcheckzoneserial","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fshuque%2Fcheckzoneserial","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fshuque%2Fcheckzoneserial/lists"}