zfl9 / ss-tproxy

搭建 SS/SSR/V2Ray/Trojan/Socks5 透明代理的 Shell 脚本

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

debian12下不工作

millken opened this issue · comments

debian11 都可以,更新到12后就不行了。
具体表现的 chinadns-ng 超时,应该是 iptables (debian12 下iptables 是使用的iptables-legacy)的问题
ss-tproxy start 会提示下面信息

# Warning: iptables-legacy tables present, use iptables-legacy to see them

chinadns-ng 日志

2023-07-15 20:35:47 I [ipset.c:565 ipset_init] tag:none test: sstp_white6
2023-07-15 20:35:47 I [main.c:420 main] dns query timeout: 5 seconds
2023-07-15 20:35:47 I [main.c:424 main] filter no-ip reply from chinadns
2023-07-15 20:35:47 I [main.c:428 main] print the verbose running log
2023-07-15 20:35:53 I [main.c:155 handle_local_packet] query [github.com] from 127.0.0.1#35355 (0)
2023-07-15 20:35:53 I [main.c:203 handle_local_packet] forward [github.com] to 8.8.8.8#53 (trustdns)
2023-07-15 20:35:58 I [main.c:373 handle_timeout_event] upstream reply timeout, unique msgid: 0
commented

运行下面三个命令, 并贴出结果, 才知道什么是什么...

  • realpath /usr/sbin/iptables
  • iptables-nft-save
  • iptables-legacy-save
commented

前面有个typo , 更新了下.

运行下面三个命令, 并贴出结果, 才知道什么是什么...

stop 后,dig 查询 github.com 是可以的。

  • realpath /usr/sbin/iptables

/usr/sbin/xtables-nft-multi

  • iptables-nft-save
# Generated by iptables-nft-save v1.8.9 (nf_tables) on Sat Jul 15 21:09:29 2023
*mangle
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:SSTP_OUTPUT - [0:0]
:SSTP_PREROUTING - [0:0]
:SSTP_RULE - [0:0]
-A PREROUTING -j SSTP_PREROUTING
-A OUTPUT -j SSTP_OUTPUT
-A SSTP_OUTPUT -m addrtype --dst-type LOCAL -j RETURN
-A SSTP_OUTPUT -m conntrack --ctdir REPLY -j RETURN
-A SSTP_OUTPUT -m owner --gid-owner 13 -j RETURN
-A SSTP_OUTPUT -p udp -m udp --dport 53 -m owner ! --gid-owner 1001 -j RETURN
-A SSTP_OUTPUT -p udp -m conntrack --ctstate NEW,RELATED -j SSTP_RULE
-A SSTP_OUTPUT -m connmark --mark 0x2333 -j MARK --set-xmark 0x2333/0xffffffff
-A SSTP_PREROUTING -m addrtype --dst-type LOCAL -j RETURN
-A SSTP_PREROUTING -m conntrack --ctdir REPLY -j RETURN
-A SSTP_PREROUTING -p udp -m udp ! --dport 53 -m conntrack --ctstate NEW,RELATED -m addrtype ! --src-type LOCAL -j SSTP_RULE
-A SSTP_PREROUTING -p udp -m connmark --mark 0x2333 -j TPROXY --on-port 60080 --on-ip 127.0.0.1 --tproxy-mark 0x2333/0xffffffff
-A SSTP_RULE -m set --match-set sstp_white dst -m set ! --match-set sstp_black dst -j RETURN
-A SSTP_RULE -j CONNMARK --set-xmark 0x2333/0xffffffff
COMMIT
# Completed on Sat Jul 15 21:09:29 2023
# Generated by iptables-nft-save v1.8.9 (nf_tables) on Sat Jul 15 21:09:29 2023
*filter
:INPUT ACCEPT [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]
COMMIT
# Completed on Sat Jul 15 21:09:29 2023
# Generated by iptables-nft-save v1.8.9 (nf_tables) on Sat Jul 15 21:09:29 2023
*nat
:PREROUTING ACCEPT [0:0]
:INPUT ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:DOCKER - [0:0]
:SSTP_OUTPUT - [0:0]
:SSTP_POSTROUTING - [0:0]
:SSTP_PREROUTING - [0:0]
:SSTP_RULE - [0:0]
-A PREROUTING -m addrtype --dst-type LOCAL -j DOCKER
-A PREROUTING -j SSTP_PREROUTING
-A OUTPUT ! -d 127.0.0.0/8 -m addrtype --dst-type LOCAL -j DOCKER
-A OUTPUT -j SSTP_OUTPUT
-A POSTROUTING -s 172.17.0.0/16 ! -o docker0 -j MASQUERADE
-A POSTROUTING -j SSTP_POSTROUTING
-A DOCKER -i docker0 -j RETURN
-A SSTP_OUTPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m addrtype ! --dst-type LOCAL -m owner ! --gid-owner 13 -j SSTP_RULE
-A SSTP_OUTPUT -p udp -m udp --dport 53 -m conntrack --ctstate NEW -m owner ! --gid-owner 13 -m owner ! --gid-owner 1001 -j REDIRECT --to-ports 60053
-A SSTP_POSTROUTING ! -s 127.0.0.1/32 -d 127.0.0.1/32 -j SNAT --to-source 127.0.0.1
-A SSTP_PREROUTING -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -m addrtype ! --src-type LOCAL ! --dst-type LOCAL -j SSTP_RULE
-A SSTP_PREROUTING -p udp -m udp --dport 53 -m conntrack --ctstate NEW -m addrtype ! --src-type LOCAL -j REDIRECT --to-ports 60053
-A SSTP_RULE -m set --match-set sstp_white dst -m set ! --match-set sstp_black dst -j RETURN
-A SSTP_RULE -p tcp -j DNAT --to-destination 127.0.0.1:60080
COMMIT
# Completed on Sat Jul 15 21:09:29 2023
# Warning: iptables-legacy tables present, use iptables-legacy-save to see them
  • iptables-legacy-save
# Generated by iptables-save v1.8.9 on Sat Jul 15 21:10:55 2023
*mangle
:PREROUTING ACCEPT [14377821:1988555072]
:INPUT ACCEPT [14377821:1988555072]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [14378671:1988826510]
:POSTROUTING ACCEPT [14378671:1988826510]
COMMIT
# Completed on Sat Jul 15 21:10:55 2023
# Generated by iptables-save v1.8.9 on Sat Jul 15 21:10:55 2023
*filter
:INPUT ACCEPT [16401644:2265354032]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [16402352:2265668456]
COMMIT
# Completed on Sat Jul 15 21:10:55 2023
commented
  1. 说明 debian 12 默认用了 nft 后端, 其实那个提示可以忽略 (# Warning: iptables-legacy tables present, use iptables-legacy to see them), 因为你的 legacy-save 里面规则是空的 (除了计数器和默认的链之外).

    • 如果你不想忽略, 那么检查下系统是否有什么东西启动了 iptables-legacy ... systemctl list-unit-files --type=service,timer --state=enabled
  2. 我觉得问题在于 chinadns 的配置 : 2023-07-15 20:35:47 I [ipset.c:565 ipset_init] tag:none test: sstp_white6 你用的是 sstp_white6 来做分流的, 但是你的 iptables 规则用的是 sstp_white

systemctl list-unit-files --type=service,timer --state=enabled

UNIT FILE                 STATE   PRESET 
apparmor.service          enabled enabled
console-setup.service     enabled enabled
containerd.service        enabled enabled
cron.service              enabled enabled
docker.service            enabled enabled
e2scrub_reap.service      enabled enabled
getty@.service            enabled enabled
keyboard-setup.service    enabled enabled
networking.service        enabled enabled
postgresql.service        enabled enabled
ssh.service               enabled enabled
systemd-pstore.service    enabled enabled
systemd-timesyncd.service enabled enabled
zerotier-one.service      enabled enabled
apt-daily-upgrade.timer   enabled enabled

chinadns 的配置我没有动,下面是 start -x 生成的信息。这里有什么问题吗?

chinadns-ng -b 127.0.0.1 -l 65353 -c 223.5.5.5#53 -t 8.8.8.8#53 -g gfwlist.txt,/dev/fd/63 -m chnlist.txt,/dev/fd/62 -4 sstp_white -6 sstp_white6 -a -A sstp_black,sstp_black6
commented

哦你的那个 chinadns log 没有完整贴上来..

从你的 iptables 规则来看, 我发现2个点

  1. 你用的是 redirect + tproxy 混合模式的代理. 你的代理程序是这个模式吗?
  2. 你用了一个 账号为 1001 的组, 请检查下这个组是不是单独为 dns 开的一个组 还是说你现有的用户? (建议单独开一个dns专用组)
  3. 你用了一个 账号为 13 的组处理 代理程序发出的流量, 这个组是不是你单独开的一个组? 还是用了系统现成的? (建议单独开一个代理专用组)
  4. 次要的: docker.service 有可能给你启动了 iptables-legacy
commented

还有检查一下代理程序是以什么身份运行的? 是否做了这个处理?

这里 2,3 都是脚本自动创建的 group

proxy:x:13:
proxy_dns:x:1001:

还有检查一下代理程序是以什么身份运行的? 是否做了这个处理?

代理用的,ipt2socks。已经做了相关操作

commented

这里 2,3 都是脚本自动创建的 group

proxy:x:13:
proxy_dns:x:1001:

还有检查一下代理程序是以什么身份运行的? 是否做了这个处理?

代理用的,ipt2socks。已经做了相关操作

ipt2socks 默认是纯 tproxy模式 而不是 混合(tcp redirect + udp tproxy)模式

Thanks,问题已解决。
主要是proxy 配置错误,不能使用内网地址。

proxy_startcmd='ipt2socks -s 192.168.0.1 -p 1080 </dev/null &>>/var/log/ipt2socks.log &' 

改成即可

proxy_startcmd='ipt2socks -s 127.0.0.1 -p 1080 </dev/null &>>/var/log/ipt2socks.log &'