ip2socks
ip2socks copied to clipboard
ip flow to socks, support tun and tap.
ip2socks
Support operating system
- [x] OSX
- [x] Linux
Get start
git clone https://github.com/FlowerWrong/ip2socks.git --recursive
# ubuntu vm
vagrant up --provider virtualbox
vagrant ssh
Compile with C++ 11 and cmake
# build ip2socks
cmake .
make
## start ip2socks
# OSX
sudo ./ip2socks --config=./scripts/config.darwin.example.yml
# linux
sudo ./ip2socks --config=./scripts/config.linux.example.yml
ip mode
- tun
- tap
dns mode
- tcp: just dns with port you set
local_dns_portredirect to tcp, other flow will be try to send to remote via socks 5 udp tunnel - udp: just dns with port you set
local_dns_portredirect to udp, other flow will be send to remote via socks 5 udp tunnel
There are 5 ways to setup DNS query to remote
use-vcin/etc/resolv.conf: Sets RES_USEVC in _res.options. This option forces the use of TCP for DNS resolutions.- pdnsd
- 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 withrouteon OSX orip routeon Linux - lwip udp hooked, redirect to upstream tcp dns server via socks 5, config with
remote_dns_server, setup your dns toaddr, eg10.0.0.2 - lwip udp hooked, set you dns to remote, eg:
8.8.8.8
Library
- C++ 11
- lwip
- lwip-contrib
- libev
- libyaml
Know bugs
- [x] too many
CLOSE_WAITto socks server, seenetstat -an | grep CLOSE_WAIT | wc -l - [x] OSX receive data too often, eg:
brew update,brew upgrade - [x] if
ERR_QUIC_PROTOCOL_ERROR, go tochrome://flags/disable quic - [x] ns_initparse
Message too longbug - [ ] (libev) select: Invalid argument
- [ ] tcp_raw_error is -14(ERR_RST): Connection reset.
TODO
- [ ] speed statistics
- [ ] DNS cache
- [x]
blockrule support, just close it - [ ] dnsmasq
address=/test.com/127.0.0.1support - [x]
domain,domain_keyword,domain_suffix(ip_cidr, geoip) rule support - [x] timeout
- [ ] log
- [x] OSX route batch insert
- [x] lwip
keep-alivesupport - [x] lwip
SO_REUSEADDRsupport - [ ] TCP fast open with Linux kernel > 3.7.0
- [x] socks 5 client UDP relay
- [ ] FreeBSD support
- [ ] Android support
- [ ] iOS support
- [ ] ipv6 support