WG + DDNS 如何走 TCP

2022-09-09 12:45:33 +08:00
 ea3ba5c0

由于 UDP 限流严重,表现就是晚上某些时候突然丢包高,很卡。

WG 走 TCP 的方式是 tunnel/udp2raw 这些,但是都是没法搭配域名使用。

WG + DDNS 作为 server 端使用。

2252 次点击
所在节点    宽带症候群
20 条回复
cloudsigma2022
2022-09-09 13:45:54 +08:00
ddns 用 cf 的 。

cf ddns

https://gist.github.com/0neday/04141ba4d3ac3ccf77a5b5837b104762 显示 Gist 代码


or

nodered
https://bbs.hassbian.com/thread-16664-1-1.html

目前使用完美。
ea3ba5c0
2022-09-09 13:47:32 +08:00
@cloudsigma2022 你可能没有理解,不是 DDNS 的问题,而是 tunnel 或者 udp2raw 只能直连 ip 。
cloudsigma2022
2022-09-09 13:50:22 +08:00
@ea3ba5c0 域名解析问题吧,那就把域名解析直接写死在本地 /etc/hosts 里。
Kinnice
2022-09-09 14:11:41 +08:00
魔改一下 udp2raw 使其支持域名

写个脚本监测 ip 变动,变了就用新 ip 重启相关的进程。
ghjexxka
2022-09-09 14:32:48 +08:00
手搓配置文件用 v2ray 的 dokodemo-door 协议配合其他 tcp 类型的协议转发可行
Yadomin
2022-09-09 15:12:45 +08:00
wg 本身也不支持 ddns ,也是用 cron 脚本刷新的
titanium98118
2022-09-09 15:48:17 +08:00
把 wg 套进 v2ray ,udp over tcp
yaoyao1128
2022-09-09 15:50:31 +08:00
自己写一个 cron 脚本处理 udp2raw 试试?
ea3ba5c0
2022-09-09 16:14:27 +08:00
@Yadomin 我一直以为 wg 本身支持域名更新呢。确定不支持?
maybeonly
2022-09-09 16:49:41 +08:00
不是很明白具体要做什么
如果只是某个 ip 要实现 ddns 但是不方便配置的话
随便写个对端地址,比如 100.64.11.22:12345
然后整个脚本监控域名变化并修改 output 串的 dnat 规则。
必要时清理 conntrack 。
Yadomin
2022-09-09 16:58:44 +08:00
@ea3ba5c0 不支持的,wg-tools 里有个 reresolve-dns.sh 就是做手动刷新的脚本
sujin190
2022-09-09 17:00:34 +08:00
tunnel/udp2raw 前面再挂个代理呗,代理转发的时候就可以支持域名解析了吧,本地只是转发流量的话性能也不会有多大损失
sujin190
2022-09-09 17:01:16 +08:00
tunnel/udp2raw 和远程服务器之间再挂个 tcp 转发代理
ea3ba5c0
2022-09-09 17:49:38 +08:00
@Yadomin 赞,果然如此。
wym0823
2022-09-10 08:24:59 +08:00
去试试这个项目,挺不错,用他的 ws/wss 协议,简单好用
https://github.com/net-byte/vtun
hanssx
2022-09-21 18:47:40 +08:00
最后楼主咋解决的,话说 Windows 下我怎么一直握手失败,看 Github Issues 也很多失败的。
ea3ba5c0
2022-09-21 19:19:34 +08:00
@hanssx 我没用,我有一台 vps ,用 vps 作为 server 。
hanssx
2022-09-22 14:20:50 +08:00
@hanssx Windows 解决了,加上--lower-level auto 就好了,服务端也加了。
hanssx
2022-09-22 14:21:08 +08:00
说错了,Windows 下 udp2raw 是不支持这个参数的,服务端加上就好了。
hanssx
2022-09-22 16:44:28 +08:00
因为我是用 windows 下的 udp2raw ,补充一下 udp2raw 的一个 bat 定时脚本,大家可以测试一下:
```
@echo off
setlocal ENABLEDELAYEDEXPANSION
set ddns=yourddns
for /f "delims= " %%i in ('ping %ddns% -n 1 -w 0 ^|findstr "^[0-9]"') do (
set ip=%%i
)
start /b udp2raw_mp.exe -c -l 0.0.0.0:3333 -r !ip!:remote_port -k "passwd" --raw-mode faketcp --cipher-mode aes128cbc

:g
for /f "delims= " %%i in ('ping %ddns% -n 1 -w 0 ^|findstr "^[0-9]"') do (
if !ip! equ %%i (
timeout /T 300 /NOBREAK >nul
) else (
taskkill /im udp2raw_mp.exe /f
ping -n 2 127.1 >nul
start /b udp2raw_mp.exe -c -l 0.0.0.0:3333 -r %%i:remote_port -k "passwd" --raw-mode faketcp --cipher-mode aes128cbc
set /a ip=%%i
))

goto g
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/878878

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX