{"id":31628030,"url":"https://github.com/jirutka/connman-resolvconf","last_synced_at":"2025-10-06T20:17:02.788Z","repository":{"id":40536888,"uuid":"484865332","full_name":"jirutka/connman-resolvconf","owner":"jirutka","description":"ConnMan integration with resolvconf(8)","archived":false,"fork":false,"pushed_at":"2022-07-06T00:04:22.000Z","size":33,"stargazers_count":3,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-10-03T03:47:34.100Z","etag":null,"topics":["connman","openresolv","resolvconf","split-dns"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/jirutka.png","metadata":{"files":{"readme":"README.adoc","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}},"created_at":"2022-04-23T21:58:54.000Z","updated_at":"2024-12-01T17:17:04.000Z","dependencies_parsed_at":"2022-08-31T15:42:32.037Z","dependency_job_id":null,"html_url":"https://github.com/jirutka/connman-resolvconf","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/jirutka/connman-resolvconf","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jirutka%2Fconnman-resolvconf","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jirutka%2Fconnman-resolvconf/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jirutka%2Fconnman-resolvconf/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jirutka%2Fconnman-resolvconf/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/jirutka","download_url":"https://codeload.github.com/jirutka/connman-resolvconf/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/jirutka%2Fconnman-resolvconf/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278672039,"owners_count":26025824,"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","status":"online","status_checked_at":"2025-10-06T02:00:05.630Z","response_time":65,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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":["connman","openresolv","resolvconf","split-dns"],"created_at":"2025-10-06T20:17:01.453Z","updated_at":"2025-10-06T20:17:02.780Z","avatar_url":"https://github.com/jirutka.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"= ConnMan–Resolvconf\n:toc: macro\n:toc-title:\n:proj-name: connman-resolvconf\n:gh-name: jirutka/{proj-name}\n:bin-name: {proj-name}d\n:version: 0.2.0\n:releases-uri: https://github.com/{gh-name}/releases/download/v{version}\n// Keep in sync with branch used in ci.yml.\n:alpine-branch: v3.16\n:alpine-pkgs-uri: https://pkgs.alpinelinux.org/packages?branch={alpine-branch}\u0026name=\n// Keep in sync with release used in ci.yml.\n:ubuntu-release: 20.04\n:ubuntu-pkgs-uri: https://packages.ubuntu.com/focal\n:ConnMan: https://git.kernel.org/pub/scm/network/connman/connman.git/about/[ConnMan]\n\nifdef::env-github[]\nimage:https://github.com/{gh-name}/workflows/CI/badge.svg[CI Workflow, link=https://github.com/{gh-name}/actions?query=workflow%3A%22CI%22]\nimage:https://repology.org/badge/tiny-repos/{proj-name}.svg[Packaging status, link=https://repology.org/project/{proj-name}]\nendif::env-github[]\n\nA daemon that integrates {ConnMan} with https://en.wikipedia.org/wiki/Resolvconf[resolvconf(8)].\nIt listens on D-Bus and calls `resolvconf` with new DNS information (nameservers and domain search) when a network service is connected, disconnected or updated.\n\n\n[discrete]\n== Table of Contents\n\ntoc::[]\n\n\n== Requirements\n\n.*Runtime*:\n* UNIX-like system _(tested on Linux only)_\n* https://www.freedesktop.org/wiki/Software/dbus/[D-Bus] 1.6 or higher\n* {ConnMan} _(tested with 1.40+)_\n* `resolvconf` from https://roy.marples.name/projects/openresolv/[openresolv] or Debian\n\n.*Build*:\n* https://www.rust-lang.org[Rust] stable toolchain _(tested with 1.60+)_\n* `pkg-config`\n* https://www.freedesktop.org/wiki/Software/dbus/[libdbus.so] 1.6 or higher (including headers, pkg-config file etc.)\n\n\n== Installation\n\n=== On Alpine Linux\n\nIf you’re using *Alpine Linux* v3.16 or later, you can install {alpine-pkgs-uri}{proj-name}[{proj-name}] package from the Alpine’s community repository:\n\n[source, sh, subs=\"+attributes\"]\napk add {proj-name}\n\n\n=== On Arch Linux\n\nIf you’re using *Arch Linux*, you can install https://aur.archlinux.org/packages/{proj-name}[{proj-name}] package from https://aur.archlinux.org/[AUR]:\n\n[source, sh, subs=\"+attributes\"]\nyay -S {proj-name}\n\nOr use another AUR helper.\n\n\n=== Using Pre-Built Binary\n\nIf your package manager doesn’t provide {proj-name}, you can use a pre-built binary.\n\nYou can choose either a statically linked (static) binary that should work on every Linux system (distro), or, if you’re using a sufficient recent GNU/libc-based distro (most major distros), a dynamically linked binary (see section \u003c\u003cpre-built-binaries\u003e\u003e for more information).\n\n*Static*:\n{releases-uri}/{proj-name}-{version}-x86_64-linux.tar.gz[[x86_64\\]]\n{releases-uri}/{proj-name}-{version}-aarch64-linux.tar.gz[[aarch64\\]]\n{nbsp}|{nbsp}\n*GNU/libc*:\n{releases-uri}/{proj-name}-{version}-x86_64-linux-gnu.tar.gz[[x86_64\\]]\n{releases-uri}/{proj-name}-{version}-aarch64-linux-gnu.tar.gz[[aarch64\\]]\n{releases-uri}/{proj-name}-{version}-armv7-linux-gnueabihf.tar.gz[[armv7\\]]\n{releases-uri}/{proj-name}-{version}-powerpc64le-linux-gnu.tar.gz[[ppc64le\\]]\n\n. Download, verify and extract the release tarball for your CPU architecture (pick the right link from the list above), for example:\n+\n[source, sh, subs=\"verbatim, attributes\"]\n----\ncurl -sSLO {releases-uri}/{proj-name}-{version}-x86_64-linux.tar.gz\ncurl -sSL {releases-uri}/checksums.txt | sha256sum -c --ignore-missing\ntar -xzf {proj-name}-{version}-*.tar.gz\n----\n\n. Install `{bin-name}` somewhere on your `PATH`, e.g. `/usr/local/bin`:\n+\n[source, sh, subs=\"verbatim, attributes\"]\ninstall -D -m755 {proj-name}-{version}-*/{bin-name} /usr/local/bin/\n\n\n=== From Source Tarball\n\n[source, sh, subs=\"+attributes\"]\n----\nwget https://github.com/{gh-name}/archive/v{version}/{proj-name}-{version}.tar.gz\ntar -xzf {proj-name}-{version}.tar.gz\ncd {proj-name}-{version}\n\ncargo build --release --locked\ninstall -D -m755 target/release/{bin-name} -t /usr/local/bin/\n----\n\n\n== Configuration\n\n=== On Alpine Linux\n:resolvconf-rundir: /run/resolvconf\n\n\n==== Using dnsmasq\n:resolvconf-dnsmasq-conf: {resolvconf-rundir}/dnsmasq-conf.conf\n:resolvconf-dnsmasq-resolv: {resolvconf-rundir}/dnsmasq-resolv.conf\n\nThis section describes how to set up ConnMan with dnsmasq as a local caching resolver on Alpine Linux v3.16+.\n\n. Install packages:\n+\n[source, sh]\n----\napk add connman connman-resolvconf dnsmasq-dnssec openresolv\n----\n\n. Add/edit the following lines into _/etc/conf.d/connman_:\n+\n[source, sh]\n----\n# Additional arguments to pass to connmand.\ncommand_args=\"--nodnsproxy\"\n\n# Let ConnMan write resolv.conf to /run/connman instead of /etc/resolv.conf.\n# WARNING: This is a nasty workaround. start_pre shouldn't be normally\n#  overridden in the config. There's a pending patch for ConnMan to get rid of\n#  this workaround.\nstart_pre() {\n\tcheckpath -q -d /run/connman\n}\n----\n\n. Add/edit the following lines into _/etc/conf.d/dnsmasq_:\n+\n[source, sh, subs=\"+attributes\"]\n----\nsetup_command=\"my_setup_configs\"\n\n# Prepare configs that will be later generated by resolvconf(8).\nmy_setup_configs() {\n\t[ \"$RC_SVCNAME\" = dnsmasq ] || return 0\n\n\tcheckpath -q -d {resolvconf-rundir} || return 1\n\tcheckpath -q -f {resolvconf-dnsmasq-conf} || return 1\n\n    if ! [ -f {resolvconf-dnsmasq-resolv} ]; then\n\t    checkpath -q -f {resolvconf-dnsmasq-resolv} || return 1\n\t    echo 'nameserver 1.1.1.1' \u003e\u003e {resolvconf-dnsmasq-resolv}\n    fi\n}\n----\n\n. Edit _/etc/dnsmasq.conf_ and apply the following changes: footnote:[I also highly recommended configuring DNSSEC validation, but that’s beyond the scope of this guide.]\n+\n[source, diff, subs=\"+attributes\"]\n----\n- #interface=\n+ interface=lo\n\n- #bind-interfaces\n+ bind-interfaces\n\n- # Change this line if you want dns to get its upstream servers from\n- # somewhere other that /etc/resolv.conf\n- #resolv-file=\n+ # Read the upstream servers from the file generated by resolvconf(8).\n+ resolv-file={resolvconf-dnsmasq-resolv}\n\n- # Include another lot of configuration options.\n- #conf-file=/etc/dnsmasq.more.conf\n- #conf-dir=/etc/dnsmasq.d\n+ # Include config generated by resolvconf(8).\n+ conf-file={resolvconf-dnsmasq-conf}\n----\n\n. Replace content of your _/etc/resolvconf.conf_ with:\n+\n[source, diff, subs=\"+attributes\"]\n----\n# Configuration for resolvconf(8)\n\nresolv_conf=/etc/resolv.conf\nresolv_conf_options=\"trust-ad\"\n\n# Use the local name server (dnsmasq).\nname_servers=\"::1 127.0.0.1\"\n\n# These interfaces name servers will only be queried for the domains\n# (the search option) listed in their resolv.conf.\nprivate_interfaces=\"vpn*\"\n\n# Generate configs for dnsmasq.\ndnsmasq_conf={resolvconf-dnsmasq-conf}\ndnsmasq_resolv={resolvconf-dnsmasq-resolv}\n----\n\n. Start and enable services:\n+\n[source, sh]\n----\nrc-service connman-resolvconf start\nrc-service dnsmasq start\n\nrc-update add connman-resolvconf\nrc-update add dnsmasq\n----\n\n\n==== Using Unbound\n:resolvconf-unbound-conf: {resolvconf-rundir}/unbound.conf\n\nThis section describes how to set up ConnMan with Unbound as a local caching resolver on Alpine Linux v3.16+.\n\nPlease note that, unlike dnsmasq, Unbound does *not* read _/etc/hosts_.\n\n. Install packages:\n+\n[source, sh]\n----\napk add connman connman-resolvconf unbound openresolv\n----\n\n. Add/edit the following lines into _/etc/conf.d/connman_:\n+\n[source, sh]\n----\n# Additional arguments to pass to connmand.\ncommand_args=\"--nodnsproxy\"\n\n# Let ConnMan write resolv.conf to /run/connman instead of /etc/resolv.conf.\n# WARNING: This is a nasty workaround. start_pre shouldn't be normally\n#  overridden in the config. There's a pending patch for ConnMan to get rid of\n#  this workaround.\nstart_pre() {\n\tcheckpath -q -d /run/connman\n}\n----\n\n. Edit _/etc/unbound/unbound.conf_ and apply the following changes:\n** Uncomment and set to `yes` options `unblock-lan-zones` and `insecure-lan-zones`.\n** Add the following to the bottom of the file:\n+\n[source, diff, subs=\"+attributes\"]\n----\n# Include configuration generated by resolvconf(8).\n# Use globbing (*) to make it optional, i.e. not fail if it doesn't exist (yet).\ninclude: \"{resolvconf-unbound-conf}*\"\n----\n\n. Replace content of your _/etc/resolvconf.conf_ with:\n+\n[source, diff, subs=\"+attributes\"]\n----\n# Configuration for resolvconf(8)\n\nresolv_conf=/etc/resolv.conf\nresolv_conf_options=\"trust-ad\"\n\n# Use the local name server (Unbound).\nname_servers=\"::1 127.0.0.1\"\n\n# These interfaces name servers will only be queried for the domains\n# (the search option) listed in their resolv.conf.\nprivate_interfaces=\"vpn*\"\n\n# Generate config for unbound.\nunbound_conf={resolvconf-unbound-conf}\n----\n\n. Start and enable services:\n+\n[source, sh]\n----\nrc-service connman-resolvconf start\nrc-service unbound start\n\nrc-update add connman-resolvconf\nrc-update add unbound\n----\n\n\n[[pre-built-binaries]]\n== Pre-Built Binaries\n\nPre-built binaries available in the project’s https://github.com/{gh-name}/releases[Releases] are built automatically using GitHub Actions.\nYou can see the workflow configuration in link:.github/workflows/ci.yml[].\nBinaries for other architectures than x86_64 are cross-compiled.\n\nStatic binaries are built on Alpine Linux {alpine-branch}, statically linked with {alpine-pkgs-uri}musl[musl] libc and {alpine-pkgs-uri}dbus[dbus] library.\nThey have zero dependencies and so works on every Linux system (distro) regardless of used libc.\n\nDynamic binaries are built on Ubuntu {ubuntu-release}, linked with GNU {ubuntu-pkgs-uri}/libc6[libc6] and {ubuntu-pkgs-uri}/libdbus-1-3[libdbus-1].\nSince they are dynamically linked, you must have a compatible version of lidbus-1.so installed on your system.\n\n\n== License\n\nThis project is licensed under http://opensource.org/licenses/MIT/[MIT License].\nFor the full text of the license, see the link:LICENSE[LICENSE] file.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjirutka%2Fconnman-resolvconf","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjirutka%2Fconnman-resolvconf","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjirutka%2Fconnman-resolvconf/lists"}