- OSX
- Linux
git clone https://github.com/FlowerWrong/ip2socks.git --recursive
# ubuntu vm
vagrant up --provider virtualbox
vagrant ssh# build ip2socks
cmake .
make
## start ip2socks
# OSX
sudo ./ip2socks --config=./scripts/config.darwin.example.yml
# linux
sudo ./ip2socks --config=./scripts/config.linux.example.yml- tun
- tap
- 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
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
- C++ 11
- lwip
- lwip-contrib
- libev
- libyaml
- too many
CLOSE_WAITto socks server, seenetstat -an | grep CLOSE_WAIT | wc -l - OSX receive data too often, eg:
brew update,brew upgrade - if
ERR_QUIC_PROTOCOL_ERROR, go tochrome://flags/disable quic - ns_initparse
Message too longbug - (libev) select: Invalid argument
- tcp_raw_error is -14(ERR_RST): Connection reset.
- speed statistics
- DNS cache
-
blockrule support, just close it - dnsmasq
address=/test.com/127.0.0.1support -
domain,domain_keyword,domain_suffix(ip_cidr, geoip) rule support - timeout
- log
- OSX route batch insert
- lwip
keep-alivesupport - lwip
SO_REUSEADDRsupport - TCP fast open with Linux kernel > 3.7.0
- socks 5 client UDP relay
- FreeBSD support
- Android support
- iOS support
- ipv6 support