{"id":13815701,"url":"https://github.com/FlowerWrong/ip2socks","last_synced_at":"2025-05-15T09:33:16.149Z","repository":{"id":58996456,"uuid":"98076320","full_name":"FlowerWrong/ip2socks","owner":"FlowerWrong","description":"ip flow to socks, support tun and tap.","archived":false,"fork":false,"pushed_at":"2024-02-27T20:49:19.000Z","size":4832,"stargazers_count":40,"open_issues_count":2,"forks_count":16,"subscribers_count":4,"default_branch":"master","last_synced_at":"2024-11-12T12:15:10.942Z","etag":null,"topics":["libev","lwip","socks","tap","tap2socks","tun","tun2socks"],"latest_commit_sha":null,"homepage":"","language":"Shell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/FlowerWrong.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"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":"2017-07-23T05:16:44.000Z","updated_at":"2024-09-04T00:39:45.000Z","dependencies_parsed_at":"2024-08-04T04:08:42.026Z","dependency_job_id":null,"html_url":"https://github.com/FlowerWrong/ip2socks","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/FlowerWrong%2Fip2socks","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowerWrong%2Fip2socks/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowerWrong%2Fip2socks/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FlowerWrong%2Fip2socks/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FlowerWrong","download_url":"https://codeload.github.com/FlowerWrong/ip2socks/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225342819,"owners_count":17459481,"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":["libev","lwip","socks","tap","tap2socks","tun","tun2socks"],"created_at":"2024-08-04T04:03:54.756Z","updated_at":"2024-11-19T11:30:54.220Z","avatar_url":"https://github.com/FlowerWrong.png","language":"Shell","readme":"# ip2socks\n\n## Support operating system\n\n* [x] OSX\n* [x] Linux\n\n## Get start\n\n```bash\ngit clone https://github.com/FlowerWrong/ip2socks.git --recursive\n\n# ubuntu vm\nvagrant up --provider virtualbox\nvagrant ssh\n```\n\n#### Compile with C++ 11 and cmake\n\n```bash\n# build ip2socks\ncmake .\nmake\n\n\n## start ip2socks\n# OSX\nsudo ./ip2socks --config=./scripts/config.darwin.example.yml\n\n# linux\nsudo ./ip2socks --config=./scripts/config.linux.example.yml\n```\n\n#### ip mode\n\n* tun\n* tap\n\n#### dns mode\n\n* tcp: just dns with port you set `local_dns_port` redirect to tcp, other flow will be try to send to remote via socks 5 udp tunnel\n* udp: just dns with port you set `local_dns_port` redirect to udp, other flow will be send to remote via socks 5 udp tunnel\n\n#### There are 5 ways to setup DNS query to remote\n\n* `use-vc` in `/etc/resolv.conf`: Sets RES_USEVC in _res.options.  This option forces the use of TCP for DNS resolutions.\n* pdnsd\n* lwip udp hooked, redirect to upstream tcp dns server via socks 5, config with `remote_dns_server`, you can just route your dns servers to tun or tap with `route` on OSX or `ip route` on Linux\n* lwip udp hooked, redirect to upstream tcp dns server via socks 5, config with `remote_dns_server`, setup your dns to `addr`, eg `10.0.0.2`\n* lwip udp hooked, set you dns to remote, eg: `8.8.8.8`\n\n## Library\n\n* C++ 11\n* [lwip](https://github.com/FlowerWrong/lwip)\n* [lwip-contrib](https://github.com/FlowerWrong/lwip-contrib)\n* [libev](http://software.schmorp.de/pkg/libev.html)\n* [libyaml](https://github.com/yaml/libyaml)\n\n## Know bugs\n\n* [x] too many `CLOSE_WAIT` to socks server, see `netstat -an | grep CLOSE_WAIT | wc -l`\n* [x] OSX receive data too often, eg: `brew update`, `brew upgrade`\n* [x] if `ERR_QUIC_PROTOCOL_ERROR`, go to `chrome://flags/` disable quic\n* [x] ns_initparse `Message too long` bug\n* [ ] (libev) select: Invalid argument\n* [ ] tcp_raw_error is -14(ERR_RST): Connection reset.\n\n## TODO\n\n* [ ] speed statistics\n* [ ] DNS cache\n* [x] `block` rule support, just close it\n* [ ] dnsmasq `address=/test.com/127.0.0.1` support\n* [x] `domain`, `domain_keyword`, `domain_suffix` (ip_cidr, geoip) rule support\n* [x] timeout\n* [ ] log\n* [x] OSX route batch insert\n* [x] lwip `keep-alive` support\n* [x] lwip `SO_REUSEADDR` support\n* [ ] TCP fast open with Linux kernel \u003e 3.7.0\n* [x] socks 5 client UDP relay\n* [ ] FreeBSD support\n* [ ] Android support\n* [ ] iOS support\n* [ ] ipv6 support\n","funding_links":[],"categories":["Shell"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFlowerWrong%2Fip2socks","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FFlowerWrong%2Fip2socks","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FFlowerWrong%2Fip2socks/lists"}