zfl9 / ss-tproxy

ss/v2ray/xray/trojan/hysteria/naive/socks5 透明代理
GNU Affero General Public License v3.0
2.26k stars 433 forks source link

v3-master: 使用 chnroute 模式无法连接国内服务器 #45

Closed levindu closed 5 years ago

levindu commented 5 years ago

使用的是最新的提交: b0e8dea3957b17f379d51b62422c14ba588a1974

以下使用 client 指代非网关机器, server 指代运行 ss-tproxy 的机器。

chnroute 模式

设置成 chnroute 模式,client 运行:

 curl https://news.qq.com

就一直卡住,没有输出,而 server 就正常。

client 和 server 获取国外服务器均正常:

 curl https://www.google.com

global 模式

设置成 global 模式,两台机器获取国内国外服务器都正常。

info

已经使用 /usr/local/bin/ss-tproxy update-chnroute 更新过 chnroute 表。

以下是调试信息:

Client:

#dig news.qq.com

; <<>> DiG 9.14.0 <<>> news.qq.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 517
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;news.qq.com.           IN  A

;; ANSWER SECTION:
news.qq.com.        69  IN  CNAME   https.qq.com.
https.qq.com.       545 IN  A   183.3.226.35

;; Query time: 30 msec
;; SERVER: 168.168.0.14#53(168.168.0.14)
;; WHEN: Tue Apr 09 12:58:29 CST 2019
;; MSG SIZE  rcvd: 76

Server:

# ipset test chnroute 183.3.226.35
183.3.226.35 is in set chnroute.

ss-tproxy.conf:

## mode
#mode='global'
#mode='gfwlist'
mode='chnroute'

## proxy
proxy_tproxy='false'   # 纯TPROXY方式
proxy_server=(xxx01 xxx02)   # 服务器的地址
proxy_dports=''        # 服务器的端口
proxy_tcport='60080'   # TCP 监听端口
proxy_udport='60080'   # UDP 监听端口
proxy_runcmd='systemctl start shadowsocks-libev-redir@PHK3.service'  # 启动的命令行
proxy_kilcmd='systemctl stop shadowsocks-libev-redir@PHK3.service'  # 停止的命令行

## dnsmasq
dnsmasq_cache_size='10240'              # DNS 缓存条目
dnsmasq_cache_time='3600'               # DNS 缓存时间
dnsmasq_log_enable='true'              # 是否记录日志
dnsmasq_log_file='/var/log/dnsmasq.log' # 日志文件路径

## chinadns
chinadns_mutation='false'                # DNS 压缩指针
chinadns_verbose='false'                 # 记录详细日志
chinadns_logfile='/var/log/chinadns.log' # 日志文件路径

## dns
dns_modify='false'           # 直接修改 resolv.conf
dns_remote='8.8.8.8:53'      # 国外 DNS,必须指定端口
dns_direct='114.114.114.114' # 国内 DNS,不能指定端口

## ipts
ipts_rt_tab='100'              # iproute2 路由表名或 ID
ipts_rt_mark='0x2333'          # iproute2 策略路由的标记
ipts_non_snat='false'          # 不设置 SNAT iptables 规则
ipts_intranet=(192.168.1.0/24 168.168.0.0/16) # 内网网段,多个请用空格隔开
zfl9 commented 5 years ago

看你的调试,client 解析国内 dns 没啥问题,是所有 chnroute 里面的网站都不能连?还是仅仅 news.qq.com?

zfl9 commented 5 years ago

另外你强调使用最新的提交,意思是以前版本没这个问题?可以的话详细说明一下

levindu commented 5 years ago

强调使用最新的提交,是确认已经更新到最新,没试过以前的版本。 应该是所有 chnroute 里面的网站都不能连,因为百度也连不上。 这种情况应该怎样排查呢?对 iptables 不熟悉,其它还可以。

zfl9 commented 5 years ago

curl -Iv http://www.baidu.com 在 client 上,看看?

zfl9 commented 5 years ago

你这 dns 应该是没问题的,你 dig 其他域名的结果是怎样的?

Leoyzen commented 5 years ago

我也遇到了相同的问题,应该不是个例

zfl9 commented 5 years ago

是更新导致的吗?还是一直都会?

zfl9 commented 5 years ago

@Leoyzen

Leoyzen commented 5 years ago

是更新导致的吗?还是一直都会?

我也是新安装的(最新版本)。docker下ipset下会报错,就用debian vm装了脚本测试,发现vm上是能够正常访问外网的,但是将vm设为网关后下面设备无法访问外网。

由于iptables raw trace一直没调通,看不到调用路径。 另外我怀疑可能和 v2ray 以及 tproxy=true有关? (昨天自己写了iptables tproxy 模式也没有跑通,今天就想试下现成脚本)。 需要什么信息我可以提供

v2ray version:4.18.0 模式:和楼主一样 现象:和楼主一样

zfl9 commented 5 years ago

试过将 v2ray 的透明代理模式改为 redirect 吗?ss-tproxy.conf 也改一下,我自己用的代理支持 redirect/tproxy 两种方式,两种方式我都试过,一直用 chnroute,没啥问题啊。

Leoyzen commented 5 years ago

使用redirect模式后一会直接报错:Too many open files in system,需要重启vm....

找到原因了,由于部署的时候是旁路网关,所以ipts_non_snat应该设置为true就好了。 docker的问题我另外去repo报issues

levindu commented 5 years ago

奇怪,我将 ipts_non_snat 设置为 true 也不行。 server 是 168.168.0.14 , 实际网关是 168.168.0.1

curl -Iv http://www.baidu.com                                                                                                        
*   Trying 14.215.177.38...
* TCP_NODELAY set
(卡住,没下文)

网易也同样:

$  dig www.163.com

; <<>> DiG 9.14.0 <<>> www.163.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50136
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;www.163.com.                   IN      A

;; ANSWER SECTION:
www.163.com.            86      IN      CNAME   www.163.com.lxdns.com.
www.163.com.lxdns.com.  33      IN      A       14.17.80.101

;; Query time: 25 msec
;; SERVER: 168.168.0.14#53(168.168.0.14)
;; WHEN: Wed Apr 10 16:49:37 CST 2019
;; MSG SIZE  rcvd: 88

$  curl -Iv http://www.163.com
*   Trying 14.17.80.101...
* TCP_NODELAY set
zfl9 commented 5 years ago
ss-tproxy stop
ss-tproxy flush-iptables
ss-tproxy start
levindu commented 5 years ago

已经尝试过,ss-tproxy flush-iptables 后再用 ss-tproxy show-iptables 确认空后再 start,现象依旧。

zfl9 commented 5 years ago

那无解了,如果可能的话,发个 iptables raw 表的规则调用链来看看?看是哪出了问题

cattyhouse commented 5 years ago

ipts_intranet=(192.168.1.0/24 168.168.0.0/16) # 内网网段,多个请用空格隔开

这里设置错误吧? 168.168 是什么鬼

levindu commented 5 years ago

@cattyhouse 168.168.0.0/16 是内网地址嘛,不过确实将这个设置为:

ipts_intranet=(168.168.0.0/16)

就好了。

cattyhouse commented 5 years ago

168.168?难道不是192.168?我眼睛看花了么?

levindu commented 5 years ago

高兴得太早,不知道什么原因,改了几次后,恢复成那样也不行了,好神奇。

cattyhouse commented 5 years ago

iptables-save > ~/ipt.log 发来看看吧

zfl9 commented 5 years ago

ipts_non_snat 改了是有遗留的,如果之前设置过 true,那么那些 snat 规则其实会一直存在,直到你重启或者 flush 规则,这个选项不要动它,代理网关/旁路网关你就设置为 false。

levindu commented 5 years ago

cattyhouse notifications@github.com 于2019年4月11日周四 上午11:43写道:

iptables-save > ~/ipt.log 发来看看吧

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/zfl9/ss-tproxy/issues/45#issuecomment-481953496, or mute the thread https://github.com/notifications/unsubscribe-auth/AABJa5z-rv66BEs3e1Y6yHDCG17r-Wzcks5vfq9agaJpZM4cjnQc .

-- Thanks and Regards, Levin

Generated by iptables-save v1.6.0 on Thu Apr 11 11:50:28 2019

*raw :PREROUTING ACCEPT [460:47637] :OUTPUT ACCEPT [362:127191] COMMIT

Completed on Thu Apr 11 11:50:28 2019

Generated by iptables-save v1.6.0 on Thu Apr 11 11:50:28 2019

*mangle :PREROUTING ACCEPT [349:37564] :INPUT ACCEPT [350:37545] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [266:90552] :POSTROUTING ACCEPT [266:90552] :SSTP_OUT - [0:0] :SSTP_PRE - [0:0] :UDPCHAIN - [0:0] -A PREROUTING -j SSTP_PRE -A OUTPUT -j SSTP_OUT -A SSTP_OUT -p udp -j UDPCHAIN -A SSTP_PRE -s 168.168.0.0/16 -p udp -m udp --dport 53 -m mark ! --mark 0x2333 -j ACCEPT -A SSTP_PRE -s 168.168.0.0/16 -p udp -m mark ! --mark 0x2333 -j UDPCHAIN -A SSTP_PRE -p udp -m mark --mark 0x2333 -j TPROXY --on-port 60080 --on-ip 127.0.0.1 --tproxy-mark 0x0/0x0 -A UDPCHAIN -d 0.0.0.0/8 -j RETURN -A UDPCHAIN -d 10.0.0.0/8 -j RETURN -A UDPCHAIN -d 127.0.0.0/8 -j RETURN -A UDPCHAIN -d 169.254.0.0/16 -j RETURN -A UDPCHAIN -d 172.16.0.0/12 -j RETURN -A UDPCHAIN -d 192.168.0.0/16 -j RETURN -A UDPCHAIN -d 168.168.0.0/16 -j RETURN -A UDPCHAIN -d 224.0.0.0/4 -j RETURN -A UDPCHAIN -d 240.0.0.0/4 -j RETURN -A UDPCHAIN -d 218.102.217.208/32 -j RETURN -A UDPCHAIN -d 138.19.181.21/32 -j RETURN -A UDPCHAIN -d 219.73.59.136/32 -j RETURN -A UDPCHAIN -d 138.19.181.21/32 -j RETURN -A UDPCHAIN -j MARK --set-xmark 0x2333/0xffffffff COMMIT

Completed on Thu Apr 11 11:50:28 2019

Generated by iptables-save v1.6.0 on Thu Apr 11 11:50:28 2019

*nat :PREROUTING ACCEPT [23:1835] :INPUT ACCEPT [24:1812] :OUTPUT ACCEPT [10:2062] :POSTROUTING ACCEPT [11:2124] :SSTP_OUT - [0:0] :SSTP_PRE - [0:0] :TCPCHAIN - [0:0] -A PREROUTING -j SSTP_PRE -A OUTPUT -j SSTP_OUT -A SSTP_OUT -p tcp -j TCPCHAIN -A SSTP_OUT -d 127.0.0.1/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 60053 -A SSTP_PRE -s 168.168.0.0/16 -p udp -m udp --dport 53 -m mark ! --mark 0x2333 -j REDIRECT --to-ports 60053 -A SSTP_PRE -s 168.168.0.0/16 -p tcp -j TCPCHAIN -A TCPCHAIN -d 0.0.0.0/8 -j RETURN -A TCPCHAIN -d 10.0.0.0/8 -j RETURN -A TCPCHAIN -d 127.0.0.0/8 -j RETURN -A TCPCHAIN -d 169.254.0.0/16 -j RETURN -A TCPCHAIN -d 172.16.0.0/12 -j RETURN -A TCPCHAIN -d 192.168.0.0/16 -j RETURN -A TCPCHAIN -d 168.168.0.0/16 -j RETURN -A TCPCHAIN -d 224.0.0.0/4 -j RETURN -A TCPCHAIN -d 240.0.0.0/4 -j RETURN -A TCPCHAIN -d 218.102.217.208/32 -j RETURN -A TCPCHAIN -d 138.19.181.21/32 -j RETURN -A TCPCHAIN -d 219.73.59.136/32 -j RETURN -A TCPCHAIN -d 138.19.181.21/32 -j RETURN -A TCPCHAIN -p tcp -j REDIRECT --to-ports 60080 COMMIT

Completed on Thu Apr 11 11:50:28 2019

Generated by iptables-save v1.6.0 on Thu Apr 11 11:50:28 2019

*filter :INPUT ACCEPT [458:47442] :FORWARD DROP [0:0] :OUTPUT ACCEPT [361:126535] COMMIT

Completed on Thu Apr 11 11:50:28 2019

Generated by iptables-save v1.6.0 on Thu Apr 11 11:49:29 2019

*raw :PREROUTING ACCEPT [1261:185890] :OUTPUT ACCEPT [1120:485233] COMMIT

Completed on Thu Apr 11 11:49:29 2019

Generated by iptables-save v1.6.0 on Thu Apr 11 11:49:29 2019

*mangle :PREROUTING ACCEPT [1074:164743] :INPUT ACCEPT [1076:164747] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [972:427405] :POSTROUTING ACCEPT [972:427405] :SSTP_OUT - [0:0] :SSTP_PRE - [0:0] :UDPCHAIN - [0:0] -A PREROUTING -j SSTP_PRE -A OUTPUT -j SSTP_OUT -A SSTP_OUT -p udp -j UDPCHAIN -A SSTP_PRE -s 168.168.0.0/16 -p udp -m udp --dport 53 -m mark ! --mark 0x2333 -j ACCEPT -A SSTP_PRE -s 168.168.0.0/16 -p udp -m mark ! --mark 0x2333 -j UDPCHAIN -A SSTP_PRE -p udp -m mark --mark 0x2333 -j TPROXY --on-port 60080 --on-ip 127.0.0.1 --tproxy-mark 0x0/0x0 -A UDPCHAIN -d 0.0.0.0/8 -j RETURN -A UDPCHAIN -d 10.0.0.0/8 -j RETURN -A UDPCHAIN -d 127.0.0.0/8 -j RETURN -A UDPCHAIN -d 169.254.0.0/16 -j RETURN -A UDPCHAIN -d 172.16.0.0/12 -j RETURN -A UDPCHAIN -d 192.168.0.0/16 -j RETURN -A UDPCHAIN -d 168.168.0.0/16 -j RETURN -A UDPCHAIN -d 224.0.0.0/4 -j RETURN -A UDPCHAIN -d 240.0.0.0/4 -j RETURN -A UDPCHAIN -d 218.102.217.208/32 -j RETURN -A UDPCHAIN -d 138.19.181.21/32 -j RETURN -A UDPCHAIN -d 219.73.59.136/32 -j RETURN -A UDPCHAIN -d 138.19.181.21/32 -j RETURN -A UDPCHAIN -m set --match-set chnroute dst -j RETURN -A UDPCHAIN -j MARK --set-xmark 0x2333/0xffffffff COMMIT

Completed on Thu Apr 11 11:49:29 2019

Generated by iptables-save v1.6.0 on Thu Apr 11 11:49:29 2019

*nat :PREROUTING ACCEPT [30:3601] :INPUT ACCEPT [31:3518] :OUTPUT ACCEPT [18:1140] :POSTROUTING ACCEPT [19:1202] :SSTP_OUT - [0:0] :SSTP_PRE - [0:0] :TCPCHAIN - [0:0] -A PREROUTING -j SSTP_PRE -A OUTPUT -j SSTP_OUT -A SSTP_OUT -p tcp -j TCPCHAIN -A SSTP_OUT -d 127.0.0.1/32 -p udp -m udp --dport 53 -j REDIRECT --to-ports 60053 -A SSTP_PRE -s 168.168.0.0/16 -p udp -m udp --dport 53 -m mark ! --mark 0x2333 -j REDIRECT --to-ports 60053 -A SSTP_PRE -s 168.168.0.0/16 -p tcp -j TCPCHAIN -A TCPCHAIN -d 0.0.0.0/8 -j RETURN -A TCPCHAIN -d 10.0.0.0/8 -j RETURN -A TCPCHAIN -d 127.0.0.0/8 -j RETURN -A TCPCHAIN -d 169.254.0.0/16 -j RETURN -A TCPCHAIN -d 172.16.0.0/12 -j RETURN -A TCPCHAIN -d 192.168.0.0/16 -j RETURN -A TCPCHAIN -d 168.168.0.0/16 -j RETURN -A TCPCHAIN -d 224.0.0.0/4 -j RETURN -A TCPCHAIN -d 240.0.0.0/4 -j RETURN -A TCPCHAIN -d 218.102.217.208/32 -j RETURN -A TCPCHAIN -d 138.19.181.21/32 -j RETURN -A TCPCHAIN -d 219.73.59.136/32 -j RETURN -A TCPCHAIN -d 138.19.181.21/32 -j RETURN -A TCPCHAIN -m set --match-set chnroute dst -j RETURN -A TCPCHAIN -p tcp -j REDIRECT --to-ports 60080 COMMIT

Completed on Thu Apr 11 11:49:29 2019

Generated by iptables-save v1.6.0 on Thu Apr 11 11:49:29 2019

*filter :INPUT ACCEPT [1259:185604] :FORWARD DROP [0:0] :OUTPUT ACCEPT [1120:485233] COMMIT

Completed on Thu Apr 11 11:49:29 2019

zfl9 commented 5 years ago

看规则没啥问题,现象是什么,ss-tproxy 主机可以正常翻墙?内网主机不能上 chnroute 网站?但是国外的网站可以上?

levindu commented 5 years ago

对,现象就是使用 chnroute 模式, ss-tproxy 主机可以正常翻墙;内网主机不能上 chnroute 网站,但能上国外的网站。

ipts_non_snat 改了是有遗留的,如果之前设置过 true,那么那些 snat 规则其实会一直存在,直到你重启或者 flush 规则,这个选项不要动它,代理网关/旁路网关你就设置为 false。

ipts_non_snat 已经设为 false, 并 ss-tproxy flush-iptapbles 过。

zfl9 commented 5 years ago

你这毛病有点 6,你确定没有拼写错误?内网网段是 168.168.0.0/16?难道不是 192.168.0.0/16?

cattyhouse commented 5 years ago

我早就说了192.168,

这世界上没有 168.168的内网

还有 ,发 ipt.log上来看看。

zfl9 commented 5 years ago

@cattyhouse 规则它前面发过,展开看得到,规则我感觉没啥问题,主要是对他的内网网段有点疑问,其实硬要使用这种网段作为内网网段也是可以的,但感觉有点点奇怪。

cattyhouse commented 5 years ago

-A SSTP_PRE -s 168.168.0.0/16 -p udp -m mark ! --mark 0x2333 -j UDPCHAIN -A SSTP_PRE -s 168.168.0.0/16 -p udp -m udp --dport 53 -m mark ! --mark 0x2333 -j REDIRECT --to-ports 60053 -A SSTP_PRE -s 168.168.0.0/16 -p tcp -j TCPCHAIN

因为你用了 168.168, 所以你的内网的所有ip 192.168.x.x都没有被 jump到 UDPCHAIN 和 TCPCHAIN上去, DNS也没有被jump到 60053这个端口上去.

请正确设置 ipts_intranet=(192.168.0.0/16)

zfl9 commented 5 years ago

不太对,他说国外网站可以访问,说明代理其实是生效了的,那估计他的网段确实是 168.168

zfl9 commented 5 years ago

@levindu 换为 gfwlist 模式,看看是否和我猜想的现象一样(什么都不要改,就改 mode 为 gfwlist),现象为:除了在 gfwlist 里面的网站(google、youtube 这些),其他的统统上不了?对不对。

cattyhouse commented 5 years ago

168.168是公网ip的.

levindu commented 5 years ago

内网段是 168.168 就不用纠结了哈。

# lsb_release  -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:        16.04
Codename:       xenial

# uname -a
Linux tchip14 4.15.0-43-generic #46~16.04.1-Ubuntu SMP Fri Dec 7 13:31:08
UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

# lsmod | grep -i proxy
xt_TPROXY              20480  1
nf_defrag_ipv6         36864  1 xt_TPROXY
nf_defrag_ipv4         16384  2 nf_conntrack_ipv4,xt_TPROXY
x_tables               40960  12
xt_conntrack,iptable_filter,xt_tcpudp,ipt_MASQUERADE,xt_addrtype,xt_set,xt_TPROXY,iptable_raw,ip_tables,iptable_mangle,xt_REDIRECT,xt_mark

附件是按照 https://serverfault.com/questions/78240/debugging-rules-in-iptables 加了 trace 的 log.

zfl9 notifications@github.com 于2019年4月11日周四 下午12:17写道:

@cattyhouse https://github.com/cattyhouse 规则它前面发过,展开看得到,规则我感觉没啥问题,主要是对他的内网网段有点疑问,其实硬要使用这种网段作为内网网段也是可以的,但感觉有点点奇怪。

— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/zfl9/ss-tproxy/issues/45#issuecomment-481958752, or mute the thread https://github.com/notifications/unsubscribe-auth/AABJa9DqxZsUo8euVN495SeuisjpoSoCks5vfrc-gaJpZM4cjnQc .

-- Thanks and Regards, Levin

Apr 11 13:32:34 tchip14 kernel: [5027035.119021] TRACE: raw:PREROUTING:policy:2 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:34 tchip14 kernel: [5027035.119044] TRACE: mangle:PREROUTING:rule:1 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:34 tchip14 kernel: [5027035.119058] TRACE: mangle:SSTP_PRE:return:4 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:34 tchip14 kernel: [5027035.119071] TRACE: mangle:PREROUTING:policy:2 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:34 tchip14 kernel: [5027035.119084] TRACE: nat:PREROUTING:rule:1 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:34 tchip14 kernel: [5027035.119098] TRACE: nat:SSTP_PRE:rule:2 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:34 tchip14 kernel: [5027035.119119] TRACE: nat:TCPCHAIN:rule:14 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:34 tchip14 kernel: [5027035.119133] TRACE: nat:SSTP_PRE:return:3 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:34 tchip14 kernel: [5027035.119145] TRACE: nat:PREROUTING:policy:2 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:34 tchip14 kernel: [5027035.119168] TRACE: mangle:FORWARD:policy:1 IN=enp5s0 OUT=enp5s0 MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:34 tchip14 kernel: [5027035.119181] TRACE: filter:FORWARD:policy:1 IN=enp5s0 OUT=enp5s0 MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=42504 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB048D0000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121656] TRACE: raw:PREROUTING:policy:2 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121680] TRACE: mangle:PREROUTING:rule:1 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121695] TRACE: mangle:SSTP_PRE:return:4 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121707] TRACE: mangle:PREROUTING:policy:2 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121721] TRACE: nat:PREROUTING:rule:1 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121735] TRACE: nat:SSTP_PRE:rule:2 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121758] TRACE: nat:TCPCHAIN:rule:14 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121771] TRACE: nat:SSTP_PRE:return:3 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121784] TRACE: nat:PREROUTING:policy:2 IN=enp5s0 OUT= MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121810] TRACE: mangle:FORWARD:policy:1 IN=enp5s0 OUT=enp5s0 MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307) Apr 11 13:32:35 tchip14 kernel: [5027036.121823] TRACE: filter:FORWARD:policy:1 IN=enp5s0 OUT=enp5s0 MAC=60:a4:4c:e7:f0:8b:3c:97:0e:5a:33:5e:08:00 SRC=168.168.4.18 DST=14.17.80.101 LEN=60 TOS=0x00 PREC=0x00 TTL=63 ID=42505 DF PROTO=TCP SPT=41308 DPT=443 SEQ=3619898419 ACK=0 WINDOW=64240 RES=0x00 SYN URGP=0 OPT (020405B40402080ADAFB08780000000001030307)

cattyhouse commented 5 years ago

@levindu 我想问168.168做内网是什么骚操作呢? 为什么不用 192.168, 10.x.x.x, 172.16.x.x?

levindu commented 5 years ago

@cattyhouse 公司习惯用这个而已。 有看到那个 trace log 吗?

cattyhouse commented 5 years ago

@levindu trace看不懂. 能把 client 和 server 以及 router , gateway的 ip都列出来下么 ?

cattyhouse commented 5 years ago

我表示不明白了. 168.168.x.x 是公网ip地址, 你们公司拿来做内网ip, 我怀疑你们的公司的IT部门是请的外包(草包). :)

zfl9 commented 5 years ago

@levindu 验证一下 gfwlist 的现象,是否和我猜想的一致

zfl9 commented 5 years ago

我怎么感觉,如果你使用 chnroute 模式,且将 non snat 改为 true,会全部都可以上呢?

levindu commented 5 years ago

@cattyhouse 没办法,这不是我可以决定的,用了几年也没遇过什么问题,也许这网段太值钱还没有分配出去:)

client: 168.168.4.18    server: 168.168.0.14   gateway: 168.168.0.1

@zfl9 启用 gfwlist ,现象跟 chnroute 一样的。

使用 chnroute 模式,将 non_snat 设为 true,不影响结果。

cattyhouse commented 5 years ago

Client的 DNS 和 Gateway 是什么?

levindu commented 5 years ago

@cattyhouse Client 的 DNS 和 Gateway 当然是 168.168.0.14 啊

dig www.google.com

; <<>> DiG 9.14.0 <<>> www.google.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 26954
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 512
;; QUESTION SECTION:
;www.google.com.                        IN      A

;; ANSWER SECTION:
www.google.com.         47      IN      A       172.217.31.228

;; Query time: 240 msec
;; SERVER: 168.168.0.14#53(168.168.0.14)
;; WHEN: Thu Apr 11 14:29:45 CST 2019
;; MSG SIZE  rcvd: 59
route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface                                                                         
0.0.0.0         168.168.0.14    0.0.0.0         UG    100    0        0 eth0                                                                          
168.168.0.0     0.0.0.0         255.255.0.0     U     100    0        0 eth0                                                                          
zfl9 commented 5 years ago

内网网段太奇葩了,我感觉问题和网段有点关系,和 snat 规则也有点关系。

levindu commented 5 years ago

都没有关系, 我用 Arch Linux 做了一个 ss-tproxy 主机,用的是 chnroute 模式,网段也是 168.168.0.0/16,其它内网主机连过来一点问题都没有。

我只能说在 Ubuntu 16.04.5 LTS 的 Linux 4.15.0-43-generic 下会有怪异的现象,暂时还查不出原因。

在 Arch Linux 的 Linux 5.0.6-arch1-1-ARCH 下是正常的。

cattyhouse commented 5 years ago

ubuntu 自带奇葩的 iptables 规则... archlinux默认没有任何iptables规则. ss-tproxy flush-iptables 并不能完全flush掉ubuntu的规则. 你可以flush后再 iptables-save 看看里面是什么?

levindu commented 5 years ago

flush-iptables 后,用 iptables-save 查看就是空的。有可能是内核差异吧。

cattyhouse notifications@github.com 于2019年4月11日周四 下午10:42写道:

ubuntu 自带奇葩的 iptables 规则... archlinux默认没有任何iptables规则. ss-tproxy flush-iptables 并不能完全flush掉ubuntu的规则. 你可以flush后再 iptables-save 看看里面是什么?

— You are receiving this because you were mentioned. Reply to this email directly, view it on GitHub https://github.com/zfl9/ss-tproxy/issues/45#issuecomment-482143588, or mute the thread https://github.com/notifications/unsubscribe-auth/AABJa_H_fWAHt9g5szjaAJzDKQdqoXSsks5vf0nlgaJpZM4cjnQc .

-- Thanks and Regards, Levin

skyrockgz commented 5 years ago

楼主这个有解了吗?我遇到一模一样的问题 client 网关和dns设置为N1 的ip,chn模式,可以访问twitter,youtube,但国内所有域名都访问不了

在client上ping 国内域名地址都不通

N1 是armbian5.77 ,安装了docker op 。client DNS和网关设置为OP的ip后,可以正常国内,国外上网,但是,挂QQ过会儿就掉线。。。 想用回 ss-tproxy又只能访问外网

zfl9 commented 5 years ago

换系统吧,疑难杂症。不好调试。

hcym commented 5 years ago

我的正常使用,也是n1盒子,换了几个armbian版本,除了ipv6没有,ss和v2都可以

skyrockgz commented 5 years ago

还好 armbian 下的docker op满足了机顶盒播放netflix的需求,暂时放弃 armbian下的ss-tproxy为啥不行了。感谢楼主