{"id":18832714,"url":"https://github.com/linka-cloud/coredns-split","last_synced_at":"2026-01-25T19:30:19.384Z","repository":{"id":57693654,"uuid":"473639685","full_name":"linka-cloud/coredns-split","owner":"linka-cloud","description":"A CoreDNS plugin to handle split dns","archived":false,"fork":false,"pushed_at":"2023-05-03T11:02:19.000Z","size":397,"stargazers_count":1,"open_issues_count":5,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2024-12-30T07:22:07.108Z","etag":null,"topics":["coredns","coredns-plugin","network","split-dns"],"latest_commit_sha":null,"homepage":"","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/linka-cloud.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":"2022-03-24T14:25:06.000Z","updated_at":"2023-12-12T21:30:32.000Z","dependencies_parsed_at":"2024-06-20T07:15:14.113Z","dependency_job_id":"abb7f5fe-650d-4c87-8359-a13e9572f718","html_url":"https://github.com/linka-cloud/coredns-split","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linka-cloud%2Fcoredns-split","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linka-cloud%2Fcoredns-split/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linka-cloud%2Fcoredns-split/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/linka-cloud%2Fcoredns-split/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/linka-cloud","download_url":"https://codeload.github.com/linka-cloud/coredns-split/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":239768926,"owners_count":19693763,"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":["coredns","coredns-plugin","network","split-dns"],"created_at":"2024-11-08T01:58:49.651Z","updated_at":"2026-01-25T19:30:19.291Z","avatar_url":"https://github.com/linka-cloud.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# split\n\n## Name\n\n*split* - Filter DNS Server response Records based on network definitions and request source IP.\n\n## Description\n\nThe split plugin allows filtering DNS Server responses Records based on network definitions. That way\nyou do not need to run multiple DNS servers to handle split DNS.\n\nIf there are multiple A Records in the response, only the records matching the defined network will be returned\nto a matching querier, and the records not matching the network to the other sources.\n\n⚠️ This plugin is not much about security, it is designed only to give a better answer to the incoming source IP,\nif you need to apply security filtering rules, please consider using the [**coredns** *acl*](https://coredns.io/plugins/acl/) plugin. \n\n## Compilation\n\nThis package will always be compiled as part of CoreDNS and not in a standalone way. It will require you to use `go get` or as a dependency on [plugin.cfg](https://github.com/coredns/coredns/blob/master/plugin.cfg).\n\nThe [manual](https://coredns.io/manual/toc/#what-is-coredns) will have more information about how to configure and extend the server with external plugins.\n\nA simple way to consume this plugin, is by adding the following on [plugin.cfg](https://github.com/coredns/coredns/blob/master/plugin.cfg), and recompile it as [detailed on coredns.io](https://coredns.io/2017/07/25/compile-time-enabling-or-disabling-plugins/#build-with-compile-time-configuration-file).\n\n~~~\nsplit:go.linka.cloud/coredns-split\n~~~\n\nPut this higher in the plugin list, so that *split* is before after any of the other plugins.\n\nAfter this you can compile coredns by:\n\n``` sh\ngo generate\ngo build\n```\n\nOr you can instead use make:\n\n``` sh\nmake\n```\n\n## Syntax\n\n~~~ txt\nsplit\n# TODO: docs\n~~~\n\n## Ready\n\nThis plugin reports readiness to the ready plugin. It will be immediately ready.\n\n## Examples\n\nIn this configuration, we forward all queries to 10.10.10.1 and to 9.9.9.9 if 10.10.10.1 did not respond.\n\n**If only used with the forward plugin, the private dns server must be configured as the first forwarded server in the list. The policy must be configured as sequential, so that the first server is always tried first and the second only if the first do not return any answer.**\n\nWe filter out A / CNAME / SRV / PTR records pointing to an IP address in the 10.10.10.0/24 network except for queries coming from the 192.168.0.0/24 and 192.168.1.0/24 networks.\nIf the allowed networks are not defined, the plugin will allow the requests from the same network, e.g. 10.10.10.0/24.\n\nIf the record exists both as public and private, the private record will be filtered, resulting with no records at all.\nSo you can provide a fallback server that will be used to get the public record.\n\n~~~ corefile\n. {\n  split {\n    net 10.10.10.0/24 allow 192.168.0.0/24 192.168.1.0/24\n    net 10.1.1.0/24 10.1.2.0/24 # implicitely: allow 10.1.1.0/24 10.1.2.0/24\n    fallback 8.8.8.8\n  }\n  # we could also use any records source\n  # e.g.: file example.org\n  forward . 10.10.10.1 9.9.9.9 {\n    policy sequential\n  }\n}\n~~~\n\n## Also See\n\nSee the [manual](https://coredns.io/manual).\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinka-cloud%2Fcoredns-split","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Flinka-cloud%2Fcoredns-split","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Flinka-cloud%2Fcoredns-split/lists"}