Git Product home page Git Product logo

tun2socks's Introduction

README

How to use it? more

# install golang 1.10+, because of sync.Map
go get -u -v github.com/FlowerWrong/tun2socks
cd tun2socks
go get ./...

cp config.example.ini config.ini
# edit it for free
sudo go run cmd/main.go -h
sudo go run cmd/main.go -v
sudo go run cmd/main.go -c=config.ini

Note

Support operating system.

Hot reload config with USR2 signal. Not support windows.

Support route, udp.proxy, proxy, pattern and rule, see config.example.ini.

sudo kill -s USR2 $PID

NOTE: go run not support kill command signal.

As a static library

See c api wiki.

Windows build need to install git + tdm-gcc.

TODO

  • gui
  • ipv6 support

Thanks

tun2socks's People

Contributors

contextualist avatar flowerwrong avatar lgh06 avatar sen avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

tun2socks's Issues

NAT Type Symmetric

Wonder if we could at least get a restricted cone with tun2socks?
BTW, your version is very easy to setup and go!

issues about LICENSE and program version

有两个问题

开源协议

希望能添加开源协议, 没开源协议不利于使用

程序版本

希望可以提供 -v 或者 --version 来获取程序编译版本

另外感谢作者提供的方案

关于DNS设置有两个问题需要反馈一下

1、在windows下运行cmd程序,正常关闭之后127.0.0.1并没有还原DNS设置,导致上不了网。
2、在windows多网卡的环境下,自动设置的DNS没有正确识别出口网卡,导致设置无效。

错误设置DNS的日志如下,设置修改到VMware的虚拟网卡上了:
C:\Users\Simon Zhou\Desktop>tun2socks_windows_32.exe --config=config.ini
2018/01/23 01:53:34 main.go:23: Use CPU number 4
2018/01/23 01:53:34 main.go:39: config file is config.ini
2018/01/23 01:53:34 proxies.go:62: [proxies] default proxy: "B"
2018/01/23 01:53:34 tun_windows.go:33: Interface Name: SSTAP 1
2018/01/23 01:53:34 cmd.go:14: exec command: netsh interface ip set address "SSTAP 1" static 198.18.0.0 255.254.0.0 none
2018/01/23 01:53:37 main.go:77: Http pprof listen on 127.0.0.1:6060 see http://127.0.0.1:6060/debug/pprof/
2018/01/23 01:53:37 app.go:216: {23 1500 SSTAP 1 00:ff:f9:a5:25:21 up|broadcast|multicast}
2018/01/23 01:53:37 app.go:216: {19 1500 本地连接* 12 7a:31:c1:bb:ff:34 broadcast|multicast}
2018/01/23 01:53:37 app.go:216: {3 1500 本地连接* 15 78:31:c1:bb:ff:34 broadcast|multicast}
2018/01/23 01:53:37 app.go:216: {15 1500 VMware Network Adapter VMnet1 00:50:56:c0:00:01 up|broadcast|multicast}
2018/01/23 01:53:37 app.go:216: {22 1500 VMware Network Adapter VMnet8 00:50:56:c0:00:08 up|broadcast|multicast}
2018/01/23 01:53:37 app.go:216: {10 1500 本地连接* 13 00:ff:6a:0b:6b:28 broadcast|multicast}
2018/01/23 01:53:37 app.go:216: {1 -1 Loopback Pseudo-Interface 1 up|loopback|multicast}
2018/01/23 01:53:37 app.go:216: {11 1500 WLAN 78:31:c1:bb:ff:34 up|broadcast|multicast}
2018/01/23 01:53:37 cmd.go:14: exec command: netsh interface ip set dns name="VMware Network Adapter VMnet1" source=static addr=127.0.0.1 register=primary
2018/01/23 01:53:45 fake.go:187: [dns] listen on 0.0.0.0:53

[help] 可以ping通, 但是curl 不行

配置:


[general]
[pprof]
[dns]
dns-mode = udp_relay_via_socks5

[route]
v = 198.18.0.0/15
v = 8.8.8.8
v = 4.4.4.4
[tcp]
[udp]
proxy = B
[proxy "B"]
url = socks5://172.18.1.173:8889
default = yes
[rule]
final = B

添加了route
default via 198.18.0.0 dev tun0 scope link


curl baidu.com
返回
curl: (7) couldn't connect to host

tun2socks 的log没有任何信息打印


BTW
gotun2socks是可以用的
./tun2socks -tun-address "192.168.1.2" -tun-gw "192.168.1.1" -local-socks-addr 172.18.1.173:8889

endpoint.go:77: undefined: sync.Map

go build -o tun2socks_linux cmd/main.go
github.com/FlowerWrong/netstack/tcpip/transport/udp
/go/src/github.com/FlowerWrong/netstack/tcpip/transport/udp/endpoint.go:77: undefined: sync.Map

yum install golang
Loaded plugins: fastestmirror
Loading mirror speeds from cached hostfile
Package golang-1.8.3-1.el7.x86_64 already installed and latest version
Nothing to do

windows: gcc -o tun2socks main.c libtun2socks.lib

环境win7-64 git tdm64-gcc-5.1.0-2 go
执行操作
windows: gcc -o tun2socks main.c libtun2socks.lib -l winmm -l ntdll -l Ws2_32

错误
main.c: In function 'tun2socksThread':
main.c:20:5: warning: implicit declaration of function 'GoStartTun2socks' [-Wimp
licit-function-declaration]
GoStartTun2socks(configFile);
^
main.c: In function 'uiThread':
main.c:30:5: warning: implicit declaration of function 'GoReloadConfig' [-Wimpli
cit-function-declaration]
GoReloadConfig(configFile);
^
C:\Users\ADMINI~1\AppData\Local\Temp\ccwUkBMZ.o:main.c:(.text+0x44): undefined r
eference to GoStartTun2socks' C:\Users\ADMINI~1\AppData\Local\Temp\ccwUkBMZ.o:main.c:(.text+0xad): undefined r eference to GoReloadConfig'
collect2.exe: error: ld returned 1 exit status

求帮助

connectex: Only one usage of each socket address (protocol/network address/port) is normally permitted.

windows下,一大段:

2018/06/16 13:47:51 tcp2socks.go:56: [tcp] dial r4---sn-i3belnez.googlevideo.com:443 by proxy "B" failed: dial tcp 127.0.0.1:11080: connectex: Only one usage of each socket address (protocol/network address/port) is normally permitted.
2018/06/16 13:47:55 tcp2socks.go:56: [tcp] dial r4---sn-i3belnez.googlevideo.com:443 by proxy "B" failed: dial tcp 127.0.0.1:11080: connectex: Only one usage of each socket address (protocol/network address/port) is normally permitted.
2018/06/16 13:47:55 tcp2socks.go:56: [tcp] dial r4---sn-npoeenee.googlevideo.com:443 by proxy "B" failed: dial tcp 127.0.0.1:11080: connectex: Only one usage of each socket address (protocol/network address/port) is normally permitted.
2018/06/16 13:47:55 tcp2socks.go:56: [tcp] dial r4---sn-npoeenee.googlevideo.com:443 by proxy "B" failed: dial tcp 127.0.0.1:11080: connectex: Only one usage of each socket address (protocol/network address/port) is normally permitted.

和正常log交差出现,几乎从头到尾都有这种。似乎是TcpListener监听了同样的端口,在这期间所有连接没有响应。

socks connect request fail

Hello, as soon I try to resolve a domain with 8.8.8.8 it crashes:

root@localhost:/usr/local/scripts# ./tun2socks --config=tun2socks.ini
2019/02/04 03:07:22 main.go:37: [app] config file path is tun2socks.ini
2019/02/04 03:07:22 proxies.go:62: [proxies] default proxy: "B"
2019/02/04 03:07:22 tun_linux.go:29: [tun] interface name is tun0
2019/02/04 03:07:22 cmd.go:14: [command] ifconfig tun0 198.18.0.0 netmask 255.254.0.0
2019/02/04 03:07:22 cmd.go:14: [command] route add -net 198.18.0.0/15 dev tun0
2019/02/04 03:07:22 cmd.go:14: [command] route add -net 91.108.4.0/22 dev tun0
2019/02/04 03:07:22 cmd.go:14: [command] route add -net 91.108.56.0/22 dev tun0
2019/02/04 03:07:22 cmd.go:14: [command] route add -net 109.239.140.0/24 dev tun0
2019/02/04 03:07:22 cmd.go:14: [command] route add -net 149.154.160.0/20 dev tun0
2019/02/04 03:07:22 cmd.go:14: [command] route add -net 149.154.167.0/24 dev tun0
2019/02/04 03:07:22 cmd.go:14: [command] route add -host 8.8.8.8 dev tun0
2019/02/04 03:07:22 cmd.go:14: [command] route add -host 4.4.4.4 dev tun0
2019/02/04 03:07:22 main.go:95: [app] run tun2socks(0.50) success
2019/02/04 03:07:22 cmd.go:36: [shell] run shell command failed exit status 127
2019/02/04 03:07:22 cmd.go:38: [shell] output
2019/02/04 03:07:22 dns.go:12: [dns] listen on 0.0.0.0:53
2019/02/04 03:07:37 udp2socks5.go:126: [error] socks connect request fail, retcode: 7
panic: runtime error: invalid memory address or nil pointer dereference
[signal SIGSEGV: segmentation violation code=0x1 addr=0x52 pc=0x8529f4]

goroutine 38 [running]:
github.com/FlowerWrong/tun2socks/tun2socks.(*UDPTunnel).Run(0x0, 0xc4202201e0, 0x1d, 0x1d, 0x0)
        /Users/kingyang/go/src/github.com/FlowerWrong/tun2socks/tun2socks/udp2socks5.go:158 +0x74
created by github.com/FlowerWrong/tun2socks/tun2socks.(*App).NewUDPEndpointAndListenIt
        /Users/kingyang/go/src/github.com/FlowerWrong/tun2socks/tun2socks/udp.go:76 +0x945

The command I run:
nslookup youtube.com 8.8.8.8
but ping 8.8.8.8 works just fine.

I have config it with tor.

Thanks.

Little question about configuring

How to make move all traffic through tun2socks without internal-ip?

[route]
v = 8.8.8.8
v = 4.4.4.4
v = 1.1.1.1
v = 1.0.0.1
v = 192.168.0.0/16

[tcp]

[udp]
proxy = B

[proxy "B"]
url = socks5://127.0.0.1:1080
default = yes

[pattern "proxy-website"]
proxy = B
scheme = IP-CIDR
v = 0.0.0.0/0

[pattern "internal-ip"]
scheme = IP-CIDR
v = 10.0.0.0/24
v = 172.16.0.0/20
v = 192.168.0.0/16

[rule]
pattern = proxy-website
pattern = internal-ip
final = B

China website can't be opened

mac OS, master branch, compiled with latest code. and also can't find any dns record in log

i added a command to make tun work, my local gateway is 192.168.10.1

sudo route -q -n add -inet xxx.xxx.xxx.xxx -gateway 192.168.10.1
2018/08/02 17:27:49 main.go:54: [app] config file path is config.ini
2018/08/02 17:27:49 proxies.go:62: [proxies] default proxy: "B"
2018/08/02 17:27:49 tun_darwin.go:29: [tun] interface name is utun2
2018/08/02 17:27:49 cmd.go:14: [command] ifconfig utun2 10.0.0.5 10.0.0.5 mtu 1500 netmask 255.255.255.0 up
2018/08/02 17:27:49 cmd.go:14: [command] route -n add -net 0.0.0.0 -netmask 128.0.0.0 -interface utun2
2018/08/02 17:27:49 cmd.go:14: [command] route -n add -net 128.0.0.0 -netmask 128.0.0.0 -interface utun2
2018/08/02 17:27:49 main.go:112: [app] run tun2socks(0.50) success
2018/08/02 17:27:49 cmd.go:38: [shell] output Current active networkservice is AX88179 USB 3.0 to Gigabit Ethernet, A4575DFD-CAD3-4009-A7E5-8F0C0820A9A6
old dns is There aren't any DNS Servers set on AX88179 USB 3.0 to Gigabit Ethernet., set dns to 127.0.0.1
2018/08/02 17:27:49 dns.go:12: [dns] listen on 0.0.0.0:53

and this is my config.ini

[general]
# inet addr/mask
# DEFAULT VALUE: 198.18.0.0/15
network = 10.0.0.5/24

# DEFAULT VALUE: 1500
# mtu = 1420

# DEFAULT auto config, This is used for auto set and reset dns server on windows,
# if you have multi interface, the auto config may be not work. eg: eth0, Ethernet0, `Apple USB Ethernet Adapter`.
# interface = Ethernet0

[pprof]
# enabled = false
# prof-host = 127.0.0.1
# prof-port = 6060

[dns]
# dns mode: fake or udp_relay_via_socks5, default fake, fake means google.com -> 10.192.10.126
dns-mode = fake

# DEFAULT VALUE: 53
# dns-port = 53

# backend dns
# DEFAULT VALUE: 114.114.114.114:53, 223.5.5.5:53
# nameserver = 114.114.114.114:53
# nameserver = 223.5.5.5:53

# dns-ttl = 600
# dns-packet-size = 4096
# dns-read-timeout = 5
# dns-write-timeout = 5

# auto-config-system-dns = false

[route]
# eg: sudo ip route add 91.108.4.0/22 dev tun0
# If you have large route tables, please add it with route batch mode by yourself,
# or it will table a long time.
#v = 198.18.0.0/15
#v = 91.108.4.0/22
#v = 91.108.56.0/22
#v = 109.239.140.0/24
#v = 149.154.160.0/20
# v = 149.154.167.0/24
#v = 8.8.8.8
#v = 4.4.4.4
#v = 10.0.0.0/24
v = 0.0.0.0/1
v = 128.0.0.0/1

[tcp]
# default 1 minutes
# timeout = 60


[udp]
# Enable udp relay or not, default true
enabled = false

# default 5 minutes
# timeout = 300

# This proxy is used to relay udp data via socks5, so it must be socks5 with udp support.
# If dns-mode is udp_relay_via_socks5, tun2socks will use this proxy to relay.
# If dns-mode is fake, tun2socks will use the fake domain matched proxy, also || this one.
proxy = B

# define a proxy named "A"
[proxy "A"]
url = socks5://127.0.0.1:1090

# define a proxy named "B"
[proxy "B"]
url = socks5://127.0.0.1:9990
# use this proxy as default
default = yes

# define a pattern and outbound proxy

[pattern "direct-country"]
scheme = IP-COUNTRY
v = CN

# @see https://tools.ietf.org/html/rfc1918
[pattern "internal-ip"]
scheme = IP-CIDR
v = 10.0.0.0/24
v = 192.168.10.0/16

[pattern "proxy-country"]
proxy = B
scheme = IP-COUNTRY
v = US
v = HK

# rules define the order of checking pattern
[rule]
pattern = block-website
pattern = direct-country
pattern = internal-ip
pattern = proxy-country
# set to a proxy for domaines that don't match any pattern
# DEFAULT VALUE: ""
final = B

any idea?

Not one issue, only one question!

大牛,
如果对同一客户端,我想做到,当客户端访问不同的应用(不同的应用IP),tun2socks能把相应的访问导到不同的 ssserver上。
举个例子:
1、我在客户端启动1个tun2socks(只能启动1个);然后在客户端启动2个sslocal(sslocal1:127.0.0.1:1081,sslocal2:127.0.0.1:1082),其中sslocal1的远端ssserver为183.232.29.1:8388,sslocal2的远端ssserver为183.232.29.2:8388;
2、192.168.2.1是远端ssserver 183.232.29.1:8388后的应用,192.168.2.2是远端ssserver 183.232.29.2:8388后的应用;
3、当客户端访问192.168.2.1时,tun2socks收集数据,当发现目标ip是192.168.2.1时,tun2socks将数据转发到sslocal1,然后sslocal1转发数据到183.232.29.1:8388,然后183.232.29.1:8388转发数据到192.168.2.1;
4、当客户端访问192.168.2.2时,tun2socks收集数据,当发现目标ip是192.168.2.2时,tun2socks将数据转发到sslocal2,然后sslocal2转发数据到183.232.29.2:8388,然后183.232.29.2:8388转发数据到192.168.2.2;

如上,tun2socks的config文件怎么配置?还是说,这样的拓扑tun2socks目前无法实现?感谢大神回复

不是bug,问题协助

在学习这个repo的代码,看到netstack库有个tun_tcp_echo例子跑了一下没跑通,运行程序后没有看到端口有被监听到:

添加tun设备,启动测试

$ sudo ip tuntap add mode tun tun0
$ sudo ip link set tun0 up
$ sudo ip addr add 192.168.1.1/24 dev tun0
$ ./tun_tcp_echo tun0 192.168.1.1 9999

查看监听端口

$ netstat -lnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 15505/sshd
tcp 0 0 127.0.0.1:25 0.0.0.0:* LISTEN 1298/master
udp 0 0 127.0.0.1:323 0.0.0.0:* 15939/chronyd
udp6 0 0 ::1:323 :::* 15939/chronyd
Active UNIX domain sockets (only servers)...

查了下这是当时的tun状态

$ ip addr show dev tun0
7: tun0: <POINTOPOINT,MULTICAST,NOARP,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 500
link/none
inet 192.168.1.1/24 scope global tun0
valid_lft forever preferred_lft forever

我是在CentOS 7上跑代码的,帮我看下问题感谢

Question

大佬你好! 我才入门golang

我有一个疑问,希望你方便的时候解答一下!

我想通过路由表的方式进行代理,但我发现我将ip添加到了路由表走的虚拟网卡,添加进去的ip就无法访问了!Tcp Udp 都不通了

请问大佬 要如何修改配置文件才能实现?

dns模式 和 另外一个模式 都不行!

系统:Windows7 64

export more c api

  • StartTun2socks
  • StopTun2socks
  • reloadConfig
  • setSystemDNSServer
  • resetSystemDNSServer
  • flow, dns info

新增dns-mode需求建议

测试发现tun2socks只是通过DNS来实现分流的,这种情况如果正常上网,通过域名请求连接则可以符合需求;但是直接远程IP地址的时候,并不会使用geoip来实现地区分流。

建议:可否在[dns]配置下增加一个,dns-mode = disable这样的参数,使得tun2socks本身不做任何DNS设置,而是由用户自己在操作系统层手动增加tap的路由?

ins的图片刷不出来。。。

``2018/04/01 22:26:28 table.go:129: [dns] hijack www.instagram.com -> 198.19.37.222
2018/04/01 22:26:28 fake.go:151: [dns] -------------------------- www.instagram.com via proxy B is a proxy domain config it????
2018/04/01 22:26:28 table.go:129: [dns] hijack connect.facebook.net -> 198.18.48.238
2018/04/01 22:26:29 fake.go:53: [dns] resolve scontent-hkg3-2.cdninstagram.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:29 table.go:129: [dns] hijack ent-shasta-rrs.symantec.com -> 198.18.83.237
2018/04/01 22:26:29 fake.go:151: [dns] -------------------------- ent-shasta-rrs.symantec.com via proxy B is a proxy domain config it????
2018/04/01 22:26:29 table.go:129: [dns] hijack staticxx.facebook.com -> 198.18.54.252
2018/04/01 22:26:29 fake.go:53: [dns] resolve staticxx.facebook.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:30 fake.go:53: [dns] resolve scontent-hkg3-2.cdninstagram.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:30 fake.go:53: [dns] resolve staticxx.facebook.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:31 fake.go:53: [dns] resolve scontent-vie1-1.cdninstagram.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:31 fake.go:53: [dns] resolve scontent-hkg3-2.cdninstagram.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:31 fake.go:155: [dns] -------------------------- dot.gate.panda.tv is a non-proxy-domain config it????
2018/04/01 22:26:31 fake.go:155: [dns] -------------------------- 1st.appalarget6.ourglb0.com is a non-proxy-domain config it????
2018/04/01 22:26:31 fake.go:53: [dns] resolve staticxx.facebook.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:32 fake.go:53: [dns] resolve scontent-vie1-1.cdninstagram.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:32 fake.go:48: [dns] resolve www.instagram.com. on 114.114.114.114:53 failed: read udp 192.168.3.2:53562->114.114.114.114:53: i/o timeout
2018/04/01 22:26:33 fake.go:53: [dns] resolve scontent-vie1-1.cdninstagram.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:33 fake.go:53: [dns] resolve scontent-hkg3-2.cdninstagram.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:33 fake.go:53: [dns] resolve staticxx.facebook.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:33 fake.go:48: [dns] resolve connect.facebook.net. on 114.114.114.114:53 failed: read udp 192.168.3.2:62585->114.114.114.114:53: i/o timeout
2018/04/01 22:26:34 fake.go:48: [dns] resolve connect.facebook.net. on 223.5.5.5:53 failed: read udp 192.168.3.2:62586->223.5.5.5:53: i/o timeout
2018/04/01 22:26:34 fake.go:84: [dns] query connect.facebook.net. failed
2018/04/01 22:26:34 fake.go:53: [dns] resolve scontent-hkg3-2.cdninstagram.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:34 fake.go:48: [dns] resolve scontent-hkg3-2.cdninstagram.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:56141->223.5.5.5:53: i/o timeout
2018/04/01 22:26:34 fake.go:84: [dns] query scontent-hkg3-2.cdninstagram.com. failed
2018/04/01 22:26:34 fake.go:53: [dns] resolve staticxx.facebook.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:34 fake.go:48: [dns] resolve staticxx.facebook.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:54221->223.5.5.5:53: i/o timeout
2018/04/01 22:26:34 fake.go:84: [dns] query staticxx.facebook.com. failed
2018/04/01 22:26:34 fake.go:48: [dns] resolve connect.facebook.net. on 114.114.114.114:53 failed: read udp 192.168.3.2:54222->114.114.114.114:53: i/o timeout
2018/04/01 22:26:35 fake.go:53: [dns] resolve scontent-vie1-1.cdninstagram.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:35 fake.go:48: [dns] resolve connect.facebook.net. on 223.5.5.5:53 failed: read udp 192.168.3.2:54223->223.5.5.5:53: i/o timeout
2018/04/01 22:26:35 fake.go:84: [dns] query connect.facebook.net. failed
2018/04/01 22:26:35 fake.go:48: [dns] resolve scontent-hkg3-2.cdninstagram.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:54225->223.5.5.5:53: i/o timeout
2018/04/01 22:26:35 fake.go:84: [dns] query scontent-hkg3-2.cdninstagram.com. failed
2018/04/01 22:26:35 fake.go:48: [dns] resolve staticxx.facebook.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:54227->223.5.5.5:53: i/o timeout
2018/04/01 22:26:35 fake.go:84: [dns] query staticxx.facebook.com. failed
2018/04/01 22:26:35 fake.go:48: [dns] resolve connect.facebook.net. on 114.114.114.114:53 failed: read udp 192.168.3.2:54228->114.114.114.114:53: i/o timeout
2018/04/01 22:26:36 fake.go:53: [dns] resolve scontent-vie1-1.cdninstagram.com. on 114.114.114.114:53 failed: code 2
2018/04/01 22:26:36 fake.go:48: [dns] resolve connect.facebook.net. on 223.5.5.5:53 failed: read udp 192.168.3.2:61981->223.5.5.5:53: i/o timeout
2018/04/01 22:26:36 fake.go:84: [dns] query connect.facebook.net. failed
2018/04/01 22:26:36 table.go:129: [dns] hijack www.facebook.com -> 198.19.33.14
2018/04/01 22:26:36 fake.go:48: [dns] resolve scontent-vie1-1.cdninstagram.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:61982->223.5.5.5:53: i/o timeout
2018/04/01 22:26:36 fake.go:84: [dns] query scontent-vie1-1.cdninstagram.com. failed
2018/04/01 22:26:36 fake.go:48: [dns] resolve scontent-hkg3-2.cdninstagram.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:62763->223.5.5.5:53: i/o timeout
2018/04/01 22:26:36 fake.go:84: [dns] query scontent-hkg3-2.cdninstagram.com. failed
2018/04/01 22:26:36 fake.go:48: [dns] resolve staticxx.facebook.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:62765->223.5.5.5:53: i/o timeout
2018/04/01 22:26:36 fake.go:84: [dns] query staticxx.facebook.com. failed
2018/04/01 22:26:37 fake.go:48: [dns] resolve scontent-vie1-1.cdninstagram.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:62767->223.5.5.5:53: i/o timeout
2018/04/01 22:26:37 fake.go:84: [dns] query scontent-vie1-1.cdninstagram.com. failed
2018/04/01 22:26:37 fake.go:48: [dns] resolve connect.facebook.net. on 114.114.114.114:53 failed: read udp 192.168.3.2:62768->114.114.114.114:53: i/o timeout
2018/04/01 22:26:38 fake.go:48: [dns] resolve connect.facebook.net. on 223.5.5.5:53 failed: read udp 192.168.3.2:62770->223.5.5.5:53: i/o timeout
2018/04/01 22:26:38 fake.go:84: [dns] query connect.facebook.net. failed
2018/04/01 22:26:38 fake.go:48: [dns] resolve scontent-vie1-1.cdninstagram.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:62771->223.5.5.5:53: i/o timeout
2018/04/01 22:26:38 fake.go:84: [dns] query scontent-vie1-1.cdninstagram.com. failed
2018/04/01 22:26:38 fake.go:48: [dns] resolve scontent-hkg3-2.cdninstagram.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:62773->223.5.5.5:53: i/o timeout
2018/04/01 22:26:38 fake.go:84: [dns] query scontent-hkg3-2.cdninstagram.com. failed
2018/04/01 22:26:38 fake.go:48: [dns] resolve staticxx.facebook.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:62775->223.5.5.5:53: i/o timeout
2018/04/01 22:26:38 fake.go:84: [dns] query staticxx.facebook.com. failed
2018/04/01 22:26:39 fake.go:48: [dns] resolve connect.facebook.net. on 114.114.114.114:53 failed: read udp 192.168.3.2:62776->114.114.114.114:53: i/o timeout
2018/04/01 22:26:39 fake.go:48: [dns] resolve connect.facebook.net. on 223.5.5.5:53 failed: read udp 192.168.3.2:62777->223.5.5.5:53: i/o timeout
2018/04/01 22:26:39 fake.go:84: [dns] query connect.facebook.net. failed
2018/04/01 22:26:39 fake.go:48: [dns] resolve scontent-hkg3-2.cdninstagram.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:62779->223.5.5.5:53: i/o timeout
2018/04/01 22:26:39 fake.go:84: [dns] query scontent-hkg3-2.cdninstagram.com. failed
2018/04/01 22:26:39 fake.go:48: [dns] resolve staticxx.facebook.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:62781->223.5.5.5:53: i/o timeout
2018/04/01 22:26:39 fake.go:84: [dns] query staticxx.facebook.com. failed
2018/04/01 22:26:40 fake.go:48: [dns] resolve scontent-vie1-1.cdninstagram.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:62783->223.5.5.5:53: i/o timeout
2018/04/01 22:26:40 fake.go:84: [dns] query scontent-vie1-1.cdninstagram.com. failed
2018/04/01 22:26:41 fake.go:48: [dns] resolve scontent-vie1-1.cdninstagram.com. on 223.5.5.5:53 failed: read udp 192.168.3.2:52478->223.5.5.5:53: i/o timeout
2018/04/01 22:26:41 fake.go:84: [dns] query scontent-vie1-1.cdninstagram.com. failed

high Idle Wakeup

On macOS Activity Monitor, tun2socks constantly has a high Idle Wakeup. Even at light load (browsing web, etc.), the value reaches hundreds. Sometimes it soars up to a thousand. In comparison, other processes maintain a idle wakeup below ten, and occassionally serveral dozens.

I see that network IO demands lots of syscalls, but idle wakeup for tun2socks seems too high to be reasonable.

BUG反馈,具体错误日志如下:

2018/01/30 12:23:37 tcp2socks.go:160: [error] write packet to remote failed write tcp 127.0.0.1:11584->127.0.0.1:1080: wsasend: An established connection was aborted by the software in your host machine. beacons.gcp.gvt2.com:443
2018/01/30 12:23:37 tcp2socks.go:192: [error] read from remote failed read tcp 127.0.0.1:11730->127.0.0.1:1080: wsarecv: An existing connection was forcibly closed by the remote host. login.live.com:443

2018/01/30 12:34:20 fake.go:48: [dns] resolve user-images.githubusercontent.com. on 8.8.8.8:53 failed: read udp 192.168.2.103:57050->8.8.8.8:53: i/o timeout

错误 socket: too many open files

添加IP地址1.1.1.1到路由,使用该IP地址解析DNS,连续解析

#!/bin/bash
for i in $(seq 1 100);
do
echo $(host www.bing.com 1.1.1.1)
done

就会有报错日志

2018/06/15 18:00:04 proxies.go:62: [proxies] default proxy: "B"
2018/06/15 18:00:04 tun_linux.go:29: [tun] interface name is tun1
2018/06/15 18:00:04 cmd.go:14: [command] ifconfig tun1 26.26.26.1 netmask 255.255.255.0
2018/06/15 18:00:04 cmd.go:14: [command] route add -net 198.18.0.0/15 dev tun1
2018/06/15 18:00:04 cmd.go:14: [command] route add -net 91.108.4.0/22 dev tun1
2018/06/15 18:00:04 cmd.go:14: [command] route add -net 91.108.56.0/22 dev tun1
2018/06/15 18:00:04 cmd.go:14: [command] route add -net 109.239.140.0/24 dev tun1
2018/06/15 18:00:04 cmd.go:14: [command] route add -net 149.154.160.0/20 dev tun1
2018/06/15 18:00:04 cmd.go:14: [command] route add -net 149.154.167.0/24 dev tun1
2018/06/15 18:00:04 cmd.go:14: [command] route add -host 1.1.1.1 dev tun1
2018/06/15 18:00:04 cmd.go:14: [command] route add -host 4.4.4.4 dev tun1
2018/06/15 18:00:04 cmd.go:14: [command] route add -net 69.162.69.0/24 dev tun1
2018/06/15 18:00:04 main.go:95: [app] run tun2socks(0.50) success
2018/06/15 18:01:36 udp2socks5.go:87: [error] Fail to connect SOCKS proxy dial tcp 127.0.0.1:53008: socket: too many open files
2018/06/15 18:01:36 udp.go:72: [error] NewUDPTunnel failed dial tcp 127.0.0.1:53008: socket: too many open files
2018/06/15 18:01:41 udp2socks5.go:87: [error] Fail to connect SOCKS proxy dial tcp 127.0.0.1:53008: socket: too many open files
2018/06/15 18:01:41 udp.go:72: [error] NewUDPTunnel failed dial tcp 127.0.0.1:53008: socket: too many open files
2018/06/15 18:01:46 udp2socks5.go:87: [error] Fail to connect SOCKS proxy dial tcp 127.0.0.1:53008: socket: too many open files
2018/06/15 18:01:46 udp.go:72: [error] NewUDPTunnel failed dial tcp 127.0.0.1:53008: socket: too many open files
2018/06/15 18:01:51 udp2socks5.go:87: [error] Fail to connect SOCKS proxy dial tcp 127.0.0.1:53008: socket: too many open files
2018/06/15 18:01:51 udp.go:72: [error] NewUDPTunnel failed dial tcp 127.0.0.1:53008: socket: too many open files

netstat -lnp 可以看到来自socks5进程的很多未关闭的UDP连接,所以导致了上诉错误吗,问题是哪个过程没有及时关闭这些udp连接呢

不能go get下来

你好,我用go get -u -v github.com/FlowerWrong/tun2socks 获取不到最新的源码,于是我用git clone 下来的缺少很多依赖目录,我尝试每个目录都去对应的git,但是编译会提示很多link错误,可以上传一个完整的目录吗?

write to remote failed

This issue occurs on linux, windows and mac.

error log

linux

2018/01/25 15:45:19 tcp2socks.go:155: [error] write packet to remote failed write tcp 127.0.0.1:56194->127.0.0.1:1080: write: broken pipe clientservices.googleapis.com:443

windows

2018/01/25 15:31:43 tcp2socks.go:155: Write packet to remote failed write tcp 127.0.0.1:19608->127.0.0.1:1080: wsasend: An established connection was aborted by the software in your host machine. bank.hangseng.com:443

请教一个问题

应用程序 -> tun -> Tun2sock -> 代理服务 -> 目标服务器
假如请求的域名是abc.com,abc.com 在 tun 这里会做DNS解析
想问下在代理服务器那里还会进行DNS再次查询请求吗

windows下bat文件

和tun2socks.exe、config.ini放在同一个文件夹,然后用管理员身份运行就好了。希望作者分发windows版本的时候能一起打包一下。。
tun2socks.zip

you-get not work

you-get -d -i 'https://www.youtube.com/watch?v=LvqGEOOlUf8&list=PLYcon0_LG98DbMQPHN1ii_wUSJgpG1mOw'

will be blocked, surge worked well.

cgo segmentation fault

see sudo valgrind --leak-check=full --track-origins=yes --show-leak-kinds=all ./tun2socks config.example.ini

about tun2socks high CPU load with 500Mbps

问题描述

我是以网页在线测速来看cpu负载的, 在测速的时候看CPU负载, 发现tun2socks负载为200%, 而ss-local负载为50%, 我是感觉这块性能确实是有点问题.

我也测试了类似的一些实现, 比如Proxifier, 测试结果是Proxifier的负载和ss-local基本持平
我也一直在看源码, 但是我能力太差始终没有思路解决这个问题, 所以过来发个issue看是否考虑下性能优化, 或者给个思路.

make error for linux

src/github.com/FlowerWrong/tun2socks# make release
GOOS=linux go build -o tun2socks_linux cmd/main.go

github.com/FlowerWrong/tun2socks/tunnel

tunnel/udp2socks5.go:245:3: undefined: udp.UDPNatList
make: *** [release] Error 2

Uploading image.png…

咨询c static library如何使用

非常感谢提供c static library,有两个问题请教一下:

1、c static library可不可以提供一个win 32位的lib版本?
2、c static library怎么使用,可否提供api说明或demo?

fail on macOS. operation not permitted.

➜ shine ./excute-global.bash
2018/10/24 19:16:04 main.go:37: [app] config file path is config-global.ini
2018/10/24 19:16:04 proxies.go:62: [proxies] default proxy: "B"
2018/10/24 19:16:04 tun_darwin.go:27: Create tun interface failederror in syscall.RawSyscall(syscall.SYS_CONNECT, ...): operation not permitted

ran darwin binary file from release.

not an issue, feature suggestion: support for br insterfaces

Hi!
a small question: would it be possible to support creation and use of bridge (br) interfaces instead of tun interfaces?

Usecase:
using it in conjunction with firejail to easily confine programs to environment where their traffic (TCP+UDP) is confined to SOCKS5 proxy with minimum effort and no routing table messing (useful for environments that already have complex routing and 2+ VPNs with TUN interfaces going)

if tun2socks supported br it would be just a matter of passing --net=brX to firejail at jailed program start.

Program won't be able to bypass proxy unless explicitly allowed by the tun2socks (as per config example) unless it's "malicious enough" to break firejail.

改进安装编译

1.10版本的go直接用

go get -u -v github.com/FlowerWrong/tun2socks

安装会报错:

package github.com/FlowerWrong/tun2socks: no Go files in .../go_work/src/github.com/FlowerWrong/tun2socks

请帮忙看这一段日志是怎么回事?

问题:不能上网,显示DNS解析失败?

2018/01/25 01:45:51 fake.go:53: [dns] resolve client.wns.windows.com. on 114.114.114.114:53 failed: code 2
2018/01/25 01:45:51 fake.go:53: [dns] resolve client.wns.windows.com. on 114.114.114.114:53 failed: code 2
2018/01/25 01:45:51 fake.go:53: [dns] resolve client.wns.windows.com. on 223.5.5.5:53 failed: code 2
2018/01/25 01:45:51 fake.go:53: [dns] resolve client.wns.windows.com. on 223.5.5.5:53 failed: code 2
2018/01/25 01:45:51 fake.go:84: [dns] query client.wns.windows.com. failed
2018/01/25 01:45:51 fake.go:84: [dns] query client.wns.windows.com. failed
2018/01/25 01:45:53 fake.go:53: [dns] resolve client.wns.windows.com. on 114.114.114.114:53 failed: code 2
2018/01/25 01:45:53 fake.go:53: [dns] resolve client.wns.windows.com. on 114.114.114.114:53 failed: code 2
2018/01/25 01:45:53 fake.go:53: [dns] resolve client.wns.windows.com. on 223.5.5.5:53 failed: code 2
2018/01/25 01:45:53 fake.go:53: [dns] resolve client.wns.windows.com. on 223.5.5.5:53 failed: code 2
2018/01/25 01:45:53 fake.go:84: [dns] query client.wns.windows.com. failed
2018/01/25 01:45:53 fake.go:84: [dns] query client.wns.windows.com. failed
2018/01/25 01:45:55 fake.go:53: [dns] resolve client.wns.windows.com. on 114.114.114.114:53 failed: code 2
2018/01/25 01:45:55 fake.go:53: [dns] resolve client.wns.windows.com. on 114.114.114.114:53 failed: code 2
2018/01/25 01:45:57 fake.go:53: [dns] resolve client.wns.windows.com. on 114.114.114.114:53 failed: code 2
2018/01/25 01:45:57 fake.go:53: [dns] resolve client.wns.windows.com. on 223.5.5.5:53 failed: code 2
2018/01/25 01:45:58 fake.go:53: [dns] resolve client.wns.windows.com. on 114.114.114.114:53 failed: code 2
2018/01/25 01:45:58 fake.go:53: [dns] resolve client.wns.windows.com. on 223.5.5.5:53 failed: code 2
2018/01/25 01:46:00 fake.go:48: [dns] resolve client.wns.windows.com. on 223.5.5.5:53 failed: read udp 192.168.2.103:60881->223.5.5.5:53: i/o timeout
2018/01/25 01:46:00 fake.go:48: [dns] resolve client.wns.windows.com. on 223.5.5.5:53 failed: read udp 192.168.2.103:60882->223.5.5.5:53: i/o timeout
2018/01/25 01:46:01 fake.go:84: [dns] query client.wns.windows.com. failed
2018/01/25 01:46:01 fake.go:84: [dns] query client.wns.windows.com. failed
2018/01/25 01:46:01 fake.go:84: [dns] query client.wns.windows.com. failed
2018/01/25 01:46:01 fake.go:84: [dns] query client.wns.windows.com. failed
2018/01/25 01:46:03 fake.go:53: [dns] resolve client.wns.windows.com. on 114.114.114.114:53 failed: code 2
2018/01/25 01:46:03 fake.go:53: [dns] resolve client.wns.windows.com. on 114.114.114.114:53 failed: code 2
2018/01/25 01:46:03 fake.go:53: [dns] resolve client.wns.windows.com. on 223.5.5.5:53 failed: code 2
2018/01/25 01:46:03 fake.go:53: [dns] resolve client.wns.windows.com. on 223.5.5.5:53 failed: code 2
2018/01/25 01:46:03 fake.go:84: [dns] query client.wns.windows.com. failed
2018/01/25 01:46:04 fake.go:84: [dns] query client.wns.windows.com. failed

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.