{"id":15451807,"url":"https://github.com/willscott/traas2","last_synced_at":"2025-06-13T03:05:06.176Z","repository":{"id":64299546,"uuid":"120251630","full_name":"willscott/traas2","owner":"willscott","description":"v2 of trace route as a service","archived":false,"fork":false,"pushed_at":"2019-09-07T03:06:38.000Z","size":130,"stargazers_count":1,"open_issues_count":2,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-05-30T11:51:28.962Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"bsd-3-clause","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/willscott.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}},"created_at":"2018-02-05T03:45:54.000Z","updated_at":"2022-11-09T17:59:07.000Z","dependencies_parsed_at":"2022-12-06T11:31:44.698Z","dependency_job_id":null,"html_url":"https://github.com/willscott/traas2","commit_stats":null,"previous_names":[],"tags_count":1,"template":false,"template_full_name":null,"purl":"pkg:github/willscott/traas2","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willscott%2Ftraas2","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willscott%2Ftraas2/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willscott%2Ftraas2/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willscott%2Ftraas2/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/willscott","download_url":"https://codeload.github.com/willscott/traas2/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/willscott%2Ftraas2/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259571663,"owners_count":22878185,"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":[],"created_at":"2024-10-01T21:39:45.191Z","updated_at":"2025-06-13T03:05:06.107Z","avatar_url":"https://github.com/willscott.png","language":"Go","funding_links":[],"categories":[],"sub_categories":[],"readme":"TRAASv2\n=======\n\nInstall: `go get github.com/willscott/traas2/server`\n\nTraas provides \"traceroute as a service\". A webserver that provides information\non the path that client packets take in reaching it. Information is provided\non the reverse path (the path from the server to the client). The TraceRoute\nconducted is *parasitic*, meaning that it will be conducted over the same\nTCP connection that the client has opened in connecting to the server. This\nmeans that the information can sometimes provide information on the network\nstructure near the client. For example, consider the following diagram:\n\nServer ---- NAT --- Client\n\nThere are many cases where the client cannot learn about its own local network\nconditions. Perhaps an HTTP proxy is involved. Perhaps an internal NAT prevents\nthe client from gaining information about anything beyond an immediate LAN.\nA direct traceroute from a remote server won't help either, as it will only\nbe able to see the network up until the first NAT. TCP traceorutes provide an\nopportunity to potentially learn information about the active IP addresses\nand path within carrier grade NATs that would not otherwise be easily visible.\n\n------\n\nInstallation\n------------\n\n```bash\napt-get install libpcapdev\ncd server\ngo get\ngo build\nsudo setcap cap_net_raw,cap_net_admin,cap_dac_override+eip server\n```\n\nConfiguration\n-------------\n\nBy default, a configuration file is expected in `./.config/traas.json`.\nAn explicit file can be specified using the `--config=` command line flag.\nA new configuration file can be generated using the `--init` command line flag.\n\nThe following configuration parameters are used by Traas:\n\n* ServePort - Which port the HTTP server is bound to. Default: 8080\n* ListenPort - Incoming packets on this port are listened to by the pcap listener. Default: 8080. this value can differ from the ServePort when Traas is protected by a forward proxy, like Nginx or equivalent. In those cases, the forward proxy would relay requests to Traas, but the listener continues to rely on watching the actual packets from the client.\n* Path - Traas can be prefixed to allow multiple applications to be served on the server. For example, \"/traas\" would limit its scope. Default: \"\"\n* Root - Where Traas looks for the demo/ folder. Default: \"..\" (one folder up from `server/`)\n* Device - Which ethernet device to bind to. Default: eth0, or the first device on your system.\n* DstMac - The ethernet address of the default gateway. This can be found in the output of\n    ```bash\n    netstat -rn\n    ```\n* originHeader - If there is a local forwarding web server, request to the http server will be from localhost, and the origin clientIP should be passed in an additional HTTP header. That header can be specified here. Default: \"\"\n* log - A file that completed traceroutes are logged to when returned to a client. Default: stdout\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillscott%2Ftraas2","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fwillscott%2Ftraas2","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fwillscott%2Ftraas2/lists"}