{"id":18697546,"url":"https://github.com/zhangguanzhang/dummy-tool","last_synced_at":"2026-02-28T06:19:19.952Z","repository":{"id":104470507,"uuid":"340037991","full_name":"zhangguanzhang/dummy-tool","owner":"zhangguanzhang","description":"Linux dummy 接口工具，支持 x86_64/arm64/loong64/mips64le","archived":false,"fork":false,"pushed_at":"2024-09-12T09:32:43.000Z","size":27,"stargazers_count":8,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-07-19T23:15:06.407Z","etag":null,"topics":["amd64","arm64","dummy","linux","loong64","loopback","mips64"],"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/zhangguanzhang.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":"2021-02-18T12:07:14.000Z","updated_at":"2024-09-12T09:32:46.000Z","dependencies_parsed_at":null,"dependency_job_id":"90c55b90-c08d-4423-b266-1bcfbe1e4887","html_url":"https://github.com/zhangguanzhang/dummy-tool","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/zhangguanzhang/dummy-tool","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangguanzhang%2Fdummy-tool","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangguanzhang%2Fdummy-tool/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangguanzhang%2Fdummy-tool/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangguanzhang%2Fdummy-tool/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/zhangguanzhang","download_url":"https://codeload.github.com/zhangguanzhang/dummy-tool/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/zhangguanzhang%2Fdummy-tool/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":29926176,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-02-27T19:37:42.220Z","status":"online","status_checked_at":"2026-02-28T02:00:07.010Z","response_time":90,"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":["amd64","arm64","dummy","linux","loong64","loopback","mips64"],"created_at":"2024-11-07T11:24:42.713Z","updated_at":"2026-02-28T06:19:19.935Z","avatar_url":"https://github.com/zhangguanzhang.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"# dummy tool\n\n## 描述\n\n参照 [node-cache](https://github.com/kubernetes/dns/tree/master/cmd/node-cache) 代码，扣出 dummy 接口的部分，可以用在 k8s 里 initContainer阶段设置一个 dummy 接口， 以及守护进程，kube-proxy 的 ipvs 模式就是把 svc 的 ip 配置在 dummy 接口上，然后 lvs 的 nat 规则。\n\n\n## docker images\n\n```\nregistry.aliyuncs.com/zhangguanzhang/dummy-tool:v0.1.1\n# https://cr.loongnix.cn/search  loongarch64 镜像\nregistry.aliyuncs.com/zhangguanzhang/dummy-tool:v0.1.1-loong64\n```\n\n## 参数\n\n```\nUsage of /dummy-tool:\nRun as a dummy interface tool at initContainer or a Container in kubernetes pod\n  -check-interval duration\n    \tinterval(in seconds) to check for interface status and addr (default 5s)\n  -health-port string\n    \tport used by health check, ex: 0.0.0.0:8080 (default \"8080\")\n  -interface-name string\n    \tname of the interface to be created (default \"nodelocaldns\")\n  -local-ip string\n    \tcomma-separated string of ip addresses to bind localdns process to\n  -setup-interface\n    \tindicates whether network interface should be setup (default true)\n  -exit-remove\n        will remove the interface when exit (default true)\n  -version\n    \tprint version info and exit\n```\n\n## example run\n\n### cli run\n\n```\n/dummy-tool -local-ip 169.254.10.10,172.26.0.2 -health-port 8070\n\n/dummy-tool -local-ip 169.254.10.10 -health-port 8070\n\n/dummy-tool -local-ip 169.254.10.10 -health-port=\"\"\n```\n\n### docker-compose\n\n部署一个本地 dns\n\n`docker-compose.yml`:\n\n```yaml\nversion: '3.5'\nservices:\n  dns: # port: tcp/80\n    image: coredns/coredns:1.8.3\n    hostname: coredns\n    restart: always\n    container_name: wps-coredns\n    network_mode: host\n    cap_drop:\n      - ALL\n    cap_add:\n      - NET_BIND_SERVICE\n    depends_on:\n    - dummy\n    volumes:\n      - ./coredns/:/etc/coredns\n      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro\n    command: [\"-conf\", \"/etc/coredns/Corefile\"]\n    logging:\n      driver: json-file\n      options:\n        max-file: '3'\n        max-size: 70m\n\n  dummy:\n    image: registry.aliyuncs.com/zhangguanzhang/dummy-tool:v0.1.1\n    hostname: dummy\n    restart: always\n    container_name: wps-dummy\n    network_mode: host\n    cap_add:\n    - NET_ADMIN\n    volumes:\n      - /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro\n    command: \n    - -local-ip=169.254.20.10\n    - -check-interval=5s\n    - -health-port=\n    - -interface-name=nodelocaldns\n    - -setup-interface\n    - -exit-remove=false\n    logging:\n      driver: json-file\n      options:\n        max-file: '3'\n        max-size: 7m\n```\n\n`./coredns/Corefile`:\n\n```\n.:53 {\n    bind 169.254.20.10\n    errors\n    health :8079\n    hosts /etc/coredns/hosts {\n        no_reverse\n        reload 5s\n        fallthrough\n    }\n\n    prometheus :9153\n    forward . /etc/resolv.conf\n    cache 30\n    loop\n    reload\n    loadbalance\n}\n\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhangguanzhang%2Fdummy-tool","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fzhangguanzhang%2Fdummy-tool","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fzhangguanzhang%2Fdummy-tool/lists"}