-
Notifications
You must be signed in to change notification settings - Fork 83
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
wireguard内核监听的udp端口打洞失败 #1
Comments
内核监听的端口没有办法远程打开reuse port,使用防火墙的DNAT或natmap的应用层转发。 |
或者试试先跑natmap打洞,然后再启动wireguard。 |
不行,先打洞,再启动wireguard提示端口占用,启动不了,只能试试用户态的wireguard-go看看吧,再不行就只能用转发了 很好用的软件,我现在用的笨办法,通过调用脚本把IP和端口发到远程服务器,访问远程服务器获取IP和端口,再配置到应用里面,如果能有更好的办法就好了。 |
优先用防火墙的端口转发(DNAT),几乎是零开销的,实在不行再用应用层转发。
我是使用域名通过DNS分发IP和端口的,脚本参数[3]给出了IP4P的值,在脚本中写到域名的AAAA记录里。客户端侧试试修改代码增加IP4P的支持(可参考 [1])。或者写个脚本启动器先解析域名得到AAAA地址再转换为IPv4和端口,启动客户端。 [1] https://github.com/heiher/hev-fsh/blob/master/src/hev-fsh-config.c#L433-L444 |
谢谢回复,我现在在用手机端的wireguard客户端,暂时没有能力修改代码或写个前置的启动器解析域名获取IP和端口,先暂时这样用了,试用这几天只要PPPOE不断开重新拨号,IP和端口基本是固定的,设置一次可以用个几天 |
增加了IP4P地址格式支持的WireGuard Android客户端: https://github.com/heiher/wireguard-android/releases 在natmap的脚本中将UDP映射后的IP4P地址更新到DDNS域名的AAAA记录中后,使用这个WireGuard Android客户端,Peer地址写为 |
太6了!不过似乎有点小BUG,填写解析IP4P的DDNS域名:0 后,貌似解析的端口出错了,IPv4地址解析正确,端口解析为-48了,另外是否可以支持直接输入IP4P地址,方便调试,谢谢大佬!!! |
哈哈,Java不合格,我改一下,把byte当成unsigned了。 😵💫 |
经过测试完全正常使用,感谢大佬极速的响应,这个工具又多了一个实用的方案👍因为无法打洞wireguard内核监听的端口,也就没法直接在软路由上部署wireguard,所以目前的方案是用pve开了个小虚拟机上跑wireguard设置好防火墙,再在软路由上用natmap打洞转发,测试正常,再次感谢大佬👍👍 |
感觉有更简便的方法: 方法一:软路由上端口50001跑内核监听的wireguard,端口50002跑natmap打洞(绑定模式),软路由上配置防火墙端口转发,把wan口上目的端口50002转至软路由lan口ip的50001。 方法二:软路由上端口50001跑内核监听的wireguard,端口50002跑natmap打洞(转发模式),并通过参数 -t 127.0.0.1 -p 50001,应用层转发。 方法一开销比方法二小,方法二不用配防火墙灵活。 |
确实,没想到这个办法,试试方法一,之前设置防火墙DNAT转发没成功,目前用的都是natmap应用层转发,再找找原因,感谢 |
发现一个尴尬的问题,我的目标是在任何有外网的环境下通过wireguard连回家,但是有些路由器的DNS服务器不支持解析AAAA记录,也就是说不能解析IP4P的域名了,并且一般支持解析IPV6域名的一般都支持IPV6通信,这样我不如直接用IPV6连接了。要解决可能需要直接查询支持AAAA的DNS服务器,不用系统默认DNS ,我看了您魔改的Wireguard客户端,要实现可能稍微有点麻烦,https://github.com/heiher/wireguard-android/blob/b14d7d9557cdd8a029a3419d5b2a4d50a77fdb6f/tunnel/src/main/java/com/wireguard/config/InetEndpoint.java#L100 |
什么DNS不支持解析AAAA记录?我这无IPv6的环境也可以正常使用的,技术原理上解析AAAA记录也没有要求系统必须配置了IPv6。 |
是的,一些比较老的不支持IPV6的路由器,用路由器默认DNS比如192.168.1.1之类的,nslookup 解析不到AAAA的记录,我明天再找环境试试,刚才试了邻居的网络TL-WR886N路由器,不支持IPV6,DNS解析不到AAAA记录,可能环境比较小众,我再测试看看吧 |
好的,看看有没有自定义DNS的方法。目前明确公共DNS,比如114.114.114.114、223.5.5.5、8.8.8.8都是支持的。 |
可以了,刚才可能是手机有问题,VPN关掉重新打开可以了,可能是刚才连接失败后VPN的状态一直没变过来。不过确实有些路由器的DNS不支持解析AAAA,比如DNSMASQ就可以设置丢弃IPv6的解析记录,如果能自定义DNS就更好了,环境比较小众,如果麻烦就不用费劲了,感谢 |
运营商的4G、5G网络的DNS肯定是支持的;如果WIFI网络遇到不支持的,不如改一下网络连接里的DNS地址简单一些。 |
是的,我也发现了,如果用WiFi连不上,就切到流量连接后再开启WiFi就行了,这样更简单 |
哈哈,机智~ |
N2N 用户态的程序监听的udp端口可以用natmap打洞成功,但是wireguard内核监听的端口打洞失败。
看报错似乎是hev_reuse_port 失败
The text was updated successfully, but these errors were encountered: