{"id":13299451,"url":"https://github.com/gamemann/TC-IPIP-Mapper","last_synced_at":"2025-03-10T11:31:48.438Z","repository":{"id":59252757,"uuid":"343003820","full_name":"gamemann/TC-IPIP-Mapper","owner":"gamemann","description":"TC programs aimed to add support for multiple remote hosts in IPIP tunnels.","archived":false,"fork":false,"pushed_at":"2023-12-11T22:33:40.000Z","size":41,"stargazers_count":29,"open_issues_count":0,"forks_count":5,"subscribers_count":3,"default_branch":"master","last_synced_at":"2025-02-28T12:25:39.074Z","etag":null,"topics":["bpf","control","ebpf","ipip","tc","traffic","traffic-control"],"latest_commit_sha":null,"homepage":"https://deaconn.net/","language":"C","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/gamemann.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","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-28T02:28:56.000Z","updated_at":"2025-02-16T12:55:44.000Z","dependencies_parsed_at":"2024-10-23T11:24:05.890Z","dependency_job_id":null,"html_url":"https://github.com/gamemann/TC-IPIP-Mapper","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/gamemann%2FTC-IPIP-Mapper","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FTC-IPIP-Mapper/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FTC-IPIP-Mapper/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gamemann%2FTC-IPIP-Mapper/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gamemann","download_url":"https://codeload.github.com/gamemann/TC-IPIP-Mapper/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":242842933,"owners_count":20194294,"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":["bpf","control","ebpf","ipip","tc","traffic","traffic-control"],"created_at":"2024-07-29T17:37:33.932Z","updated_at":"2025-03-10T11:31:48.169Z","avatar_url":"https://github.com/gamemann.png","language":"C","readme":"# TC IPIP Mapper (WIP)\n## Description\nA project aimed to add support for multiple remotes on an IPIP tunnel. This project consist of two TC programs (one for ingress and the other for egress).\n\nThe main goal of the TC ingress program is to map the client IP (inner IP header's source IP address) to the remote IP (the outer IP header's source address).\n\nWhen outgoing IPIP packets are sent back out, it will replace the outer IP header's destination IP address with the mapped remote IP if it exist. If it doesn't, the packet will go out unchanged.\n\nAn example where this is useful is if you're utilizing IPIP tunnels with an Anycast network and want the traffic to go back the same POP server it came in with.\n\n## Command Line Usage\nThe only command line option is `-i --dev` which determines which interface to attach to. An example of using the `ipipmapper` loader may be found below.\n\n```\n./ipipmapper --dev ens18\n```\n\n## Requirements\nThe `make`, `clang`, `llvm`, `libelf-dev`, and `gcc-multilib` packages are required.\n\nOn Debian/Ubuntu-based systems, these may be installed using the following command.\n\n```bash\nsudo apt install -y make clang llvm libelf-dev gcc-multilib\n```\n\n## Installing\nYou may use `git` and `make` to install this project onto your server. I'd suggest the following commands for downloading and installing.\n\n```\ngit clone --recursive https://github.com/gamemann/TC-IPIP-Mapper.git # Recursive will download LibBPF.\ncd TC-IPIP-Mapper/\nmake \u0026\u0026 make install\n```\n\nIf you want to enable this via `systemd`, I'd suggest modifying the `/etc/systemd/system/IPIPMapper.service` file after install and ensure it is set to use the correct interface via the `-i` flag. Afterwards, you may execute the following commands.\n\n```\nsystemctl enable IPIPMapper # Enables the program on startup.\nsystemctl start IPIPMapper  # Starts the program via systemd.\n```\n\n## Credits\n* [Christian Deacon](https://github.com/gamemann)","funding_links":[],"categories":[],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamemann%2FTC-IPIP-Mapper","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgamemann%2FTC-IPIP-Mapper","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgamemann%2FTC-IPIP-Mapper/lists"}