heiher/natmap

在开启clash的服务器上,无法打洞

Closed this issue · 7 comments

./natmap -i eno1 -s stunserver.stunprotocol.org -h qq.com -t 192.168.31.3 -p 8096

[E] hev_sock_client_tcp src/hev-sock.c:173 Operation in progress
[E] tnsk_run src/hev-tnsk.c:105 Start TCP keep-alive service failed.

关闭clash后可以打洞

如何让这两者共存呢?

这应该是需要让防火墙或策略路由中的Clash规则排除掉NATMap要访问的STUN和HTTP服务器地址。

我将会给NATMap增加一个参数用于指定fwmark,以便于在防火墙和策略路由中对NATMap发出的报文进行匹配。

FwMark: https://github.com/heiher/natmap/releases/tag/20240519-next

可以通过-f <mark>参数指定fwmark,fwmark会作用于STUN/HTTP的对外访问。如果系统环境配置了策略路由或基于防火墙的透明代理,可在较早阶段通过匹配fwmark跳出。比如:

natmap -s stunserver.stunprotocol.org -h qq.com -f 0x123

# IPTables
iptables -t mangle -I OUTPUT -m mark --mark 0x123 -j RETURN

# Policy-routing
ip rule add fwmark 0x123 table main pref 1

@heiher -f 参数值不带 0x,却是16进制,并且usage中也没有说明,是否不太好?建议在 usage 中说明,并在文档中都加上 0x。

@heiher -f 参数值不带 0x,却是16进制,并且usage中也没有说明,是否不太好?建议在 usage 中说明,并在文档中都加上 0x。

确实不太好。现在改成了接受多种进制数的fwmark值,并在usage中举例说明:

  • hex: 0x1
  • dec: 1
  • oct: 01

感谢建议~

建议 strtoul() 的 base 使用 0 就好了,和 iptables 一致

建议 strtoul() 的 base 使用 0 就好了,和 iptables 一致

谢谢,已经改成这样了哈

在clash里把打洞服务器地址去除 或者把地址设置成直连