{"id":18053375,"url":"https://github.com/luzifer/ipt-loadbalancer","last_synced_at":"2025-08-24T08:12:59.161Z","repository":{"id":228208882,"uuid":"773409642","full_name":"Luzifer/ipt-loadbalancer","owner":"Luzifer","description":"Manager which health-checks given endpoints and generates a iptables DNAT/SNAT loadbalancer from active endpoints","archived":false,"fork":false,"pushed_at":"2024-04-15T21:12:32.000Z","size":45,"stargazers_count":2,"open_issues_count":0,"forks_count":0,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-10T15:41:41.509Z","etag":null,"topics":["golang","iptables","loadbalancer","mirror"],"latest_commit_sha":null,"homepage":"https://git.luzifer.io/luzifer/ipt-loadbalancer","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/Luzifer.png","metadata":{"files":{"readme":"README.md","changelog":"History.md","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},"funding":{"custom":["https://www.paypal.me/luzifer"],"github":["Luzifer"],"ko_fi":"luziferus"}},"created_at":"2024-03-17T15:33:44.000Z","updated_at":"2024-03-24T17:48:50.000Z","dependencies_parsed_at":"2024-12-18T13:34:54.474Z","dependency_job_id":null,"html_url":"https://github.com/Luzifer/ipt-loadbalancer","commit_stats":null,"previous_names":["luzifer/ipt-loadbalancer"],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luzifer%2Fipt-loadbalancer","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luzifer%2Fipt-loadbalancer/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luzifer%2Fipt-loadbalancer/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/Luzifer%2Fipt-loadbalancer/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/Luzifer","download_url":"https://codeload.github.com/Luzifer/ipt-loadbalancer/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247305944,"owners_count":20917208,"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":["golang","iptables","loadbalancer","mirror"],"created_at":"2024-10-30T23:16:58.330Z","updated_at":"2025-04-05T08:11:55.282Z","avatar_url":"https://github.com/Luzifer.png","language":"Go","funding_links":["https://www.paypal.me/luzifer","https://github.com/sponsors/Luzifer","https://ko-fi.com/luziferus"],"categories":[],"sub_categories":[],"readme":"This repository contains a manager which health-checks given endpoints and generates a iptables DNAT/SNAT loadbalancer from active endpoints.\n\n## Configuration\n\n```console\n# ipt-loadbalancer --help\nUsage of ipt-loadbalancer:\n  -c, --config string          Configuration file to load (default \"config.yaml\")\n  -e, --enable-managed-chain   Modify PREROUTING / POSTROUTING chain to contain a jump to managed chain\n      --log-level string       Log level (debug, info, warn, error, fatal) (default \"info\")\n      --version                Prints current version and exits\n\n# ipt-loadbalancer help\nSupported sub-commands are:\n  checkhelp \u003ccheckType\u003e  Display available settings for a check\n\n# ipt-loadbalancer checkhelp http\nSetting        Default      Description\ncode           200          HTTP Status-Code to expect from the request\n...\n```\n\n### Main Configuration File\n\n```yaml\n---\n\n# Table prefix to manage (should not collide with existing tables in\n# the system). Created tables in this case are named IPTLB_DNAT,\n# IPTLB_SNAT and IPTLB_SERVICENAME_DNAT / IPTLB_SERVICENAME_SNAT.\nmanagedChain: IPTLB\n\n# Collection of services to expose on the host the ipt-loadbalancer\n# runs on. Each service exposes one local port and forwards to N\n# remote ports using DNAT/SNAT.\nservices:\n  - name: ... # See below for the service definition\n\n...\n```\n\n### Service Configuration\n\n```yaml\n# The name should consist only of [a-z0-9_] character set and must be\n# unique for the prefix given in the main configuration file\nname: https\n\n# The healthcheck defines how to verify the targets are up to include\n# them into the loadbalancing\nhealthCheck:\n  # Type is required, currently supported: http, smtp, tcp\n  type: http\n  # Interval defines how often to check for the targets to be alive:\n  # 2s means from the start of the LB the targets are checked every 2s\n  # in parallel\n  interval: 2s\n  # Settings defines parameters for the given health-check and are\n  # individual to the type. See the `checkhelp \u003ctype\u003e` subcommand for\n  # all supported settings and their default values.\n  settings:\n    insecureTLS: true\n    path: /healthz\n    tls: true\n\n# Bind Address and Port describes the IP and Port to bind the service\n# to.\nbindAddr: 203.0.113.1\nbindPort: 443\n\n# Proto describes which protocol should be routed (defaults to tcp)\nproto: tcp\n\n# Targets is a list of routing targets which are checked for their\n# liveness status and if they are live, they are included in the NAT\n# rulesets.\n# Each target consists of two Addresses, a Port and a Weight. The weight\n# is defined as an integer and increases / decreases the percentage\n# of the traffic that specific target will receive. (For example\n# setting all weights to 1 will distribute the traffic equally between\n# them, setting one to 2 will double the traffic to that target.)\n# The localAddr is used for the SNAT to map the source IP.\ntargets:\n  - addr: 10.1.2.4\n    localAddr: 10.1.2.1\n    port: 443\n    weight: 1\n  - addr: 10.1.2.5\n    localAddr: 10.1.2.1\n    port: 443\n    weight: 1\n  - addr: 10.1.2.6\n    localAddr: 10.1.2.1\n    port: 443\n    weight: 1\n```\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluzifer%2Fipt-loadbalancer","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fluzifer%2Fipt-loadbalancer","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fluzifer%2Fipt-loadbalancer/lists"}