springzfx / cgproxy

Transparent Proxy with cgroup v2。透明代理,配合v2ray/Qv2ray食用最佳

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

cgproxy和wireguard搭配时使用kdeconnect的网关问题

iusearch opened this issue · comments

commented

情况是在使用wireguard收集客户端的流量,然后由cgproxy导到v2ray实现流量0泄漏和分流。但是测试的时候发现kdeconnect会出问题,经过分析后发现是kdeconnect-kde的宿主机接收到了一个来自wireguard网关的udp包(源ip由平常的kdeconnect-android宿主机的ip被改写成了wireguard网关的ip)。kdeconnect的机制是顺着udp解包的宿主机的ip连回去,用另一对tcp的参数,导致无法触发由udp连接构成的NAT。目前的解决办法是加一条iptables -t mangle -I TPROXY_PRE 1 -d x.x.x.x/x(wireguard网段) -j ACCEPT使wireguard peer之间的流量不经过TPROXY处理,以及iptables -t nat -D POSTROUTING -m owner ! --socket-exists -j MASQUERADE关掉这个MASQURADE。不是很清楚后者的作用,但是目前为止所有分流和kdeconnect都运行正确。

commented

iptables -t nat -A POSTROUTING -m owner ! --socket-exists -j MASQUERADE好像跟docker有关,关了docker端口不通,我再研究研究

commented

不知道咋回事,现在这条不删好像也没关系

commented

是我傻了,这个不是cgproxy的问题,应该放在wireguard里边,一条是 iptables -t mangle -A PREROUTING -d x.x.x.x/x(wireguard网段) -j RETURN; 跳过tproxy处理,另一条是 iptables -t nat -A POSTROUTING -s x.x.x.x/x(wireguard网段) -d x.x.x.x/x(wireguard网段) -j ACCEPT;, 放在 iptables -t nat -A POSTROUTING -s x.x.x.x/x(wireguard网段) -o %i -j MASQUERADE;前面用于正确处理内网的NAT.