V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
azure2023us
V2EX  ›  分享发现

一种面向端口随机变换的 wg block 缓解方法

  •  
  •   azure2023us · 2023-04-01 13:48:55 +08:00 · 905 次点击
    这是一个创建于 383 天前的主题,其中的信息可能已经有所发展或是发生改变。

    rt

    现象

    • q 似乎变高了,block 频率有些高。太影响体验和耽误事了。
    • 从目前的观察来看,gfw 的策略貌似是无脑 block 。

    环境

    • 限制了源 ip 访问
    • 利用 iptabls 增加了嗅探防护措施

    缓解措施

    • server 边 crontab 定时随机生成 10000 以上端口号
    • 通过 mqtt client 将端口号 推到 公用 free mqtt ,同时重启 wg server
    • 本地通过 mqtt 实时订阅 port
    • reload 本地 wg setconf
    第 1 条附言  ·  2023-04-01 17:57:48 +08:00

    crontab 定时

    • server
    #!/bin/bash
    port=$(( $RANDOM % 60000 + 10000 ))
    mosquitto_pub -h broker_server_ip -t "topic_for_wireguard_port" -m $port -r
    sed -i "s/^ListenPort.*/ListenPort\ =\ $port/" /etc/wireguard/wg0.conf
    wg-quick  down /etc/wireguard/wg0.conf
    sleep 2
    wg-quick  up /etc/wireguard/wg0.conf
    exit 0
    
    • client
    #!/bin/sh
    port=$(mosquitto_sub -h broker_server_ip -t "topic_for_wireguard_port" -C  1)
    pre_port=$(cat /etc/wireguard/wg_client.conf  | grep Endpoint  | awk -F: '{print $2}')
    
    if [ "$port" != "$pre_port" ]
    then
            sed  -i "s/^Endpoint.*/Endpoint\ =\ wg_server:$port/" /etc/wireguard/wg_client.conf
            wg setconf wg_client /etc/wireguard/wg_client.conf
    
    fi
    
    11 条回复    2023-04-02 21:56:00 +08:00
    0o0O0o0O0o
        1
    0o0O0o0O0o  
       2023-04-01 13:57:41 +08:00 via iPhone
    建议在别的专业对抗 GFW 的协议之上运行 wg
    azure2023us
        2
    azure2023us  
    OP
       2023-04-01 14:03:53 +08:00
    @0o0O0o0O0o 平时用 ss over tls 。只是用它偶尔解锁 Google vpn pc 端,解锁 nf 。我都限制了 source ip ,无脑 block 的意义何在呢
    0o0O0o0O0o
        3
    0o0O0o0O0o  
       2023-04-01 14:11:35 +08:00 via iPhone
    @azure2023us #2 跟墙没有道理可讲的,本来就是畸形的产物。

    我也在本地直连 warp 的 wireguard ,偶尔能连上;直连 Google vpn 还没尝试过。
    zbinlin
        4
    zbinlin  
       2023-04-01 14:18:15 +08:00
    我这个就是 https://github.com/zbinlin/wireguard-configuration ,至于效果嘛,一般般,最后只用来配置分流了。
    ETiV
        5
    ETiV  
       2023-04-01 15:26:26 +08:00 via iPhone
    iptables -t nat -A PREROUTING -i eth0 -p udp --dport 12000:15000 -j DNAT --to-destination :8888

    用 iptables ,无脑将 udp 端口号 12000~15000 转发给 8888 上
    azure2023us
        6
    azure2023us  
    OP
       2023-04-01 18:31:39 +08:00
    @zbinlin 确定我们说的是同一件事吗,我现在用的 wg 是裸奔的,没套任何东西。只是添加随机端口,缓解 block
    zbinlin
        7
    zbinlin  
       2023-04-01 20:19:30 +08:00
    @azure2023us 就是随机端口呀,我这个是先配一个固定端口的 wg ,然后通过这个固定端口的通道协商一个随机端口来通信,就连公钥都次都变呢。
    azure2023us
        8
    azure2023us  
    OP
       2023-04-01 20:31:28 +08:00
    @zbinlin 大概了解了下,随机端口的获取还是通过已有的线路获取。感觉有点复杂了。我是通过 mqtt ,通过第三方应用告知 client 端 端口号。本地 mqtt 请求是走 ss over tls ,所以,可以确保 mqtt 不被 block 。

    不太明白你所的 更换证书是什么意思。wireguard 可以更换 证书?还是获取端口号的服务更换证书?
    zbinlin
        9
    zbinlin  
       2023-04-01 20:50:01 +08:00
    @azure2023us 是公钥,不是证书,那个随机端口对应的 wg 配置所使用的是一个全新的公私钥对
    emUi998
        10
    emUi998  
       2023-04-01 22:21:20 +08:00 via iPhone
    试试反向连接,国内监听个端口
    YGBlvcAK
        11
    YGBlvcAK  
       2023-04-02 21:56:00 +08:00 via Android
    现在都是针对 ip 来限制的,换端口没用,不如搞个备用鸡
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3083 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 14:39 · PVG 22:39 · LAX 07:39 · JFK 10:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.