是否存在采用减法计算 CIDR 地址块的工具? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
hzqim
V2EX    宽带症候群

是否存在采用减法计算 CIDR 地址块的工具?

  •  
  •   hzqim 2023-03-21 19:39:49 +08:00 2584 次点击
    这是一个创建于 966 天前的主题,其中的信息可能已经有所发展或是发生改变。
    一、缘起
    家中 WireGuard server 所在内网 ip 段为 10.0.0.0/24 。

    单位 WireGuard client 所在内网 ip 段为 10.*.*.0/16 ,内网中有共享打印机,文件服务器。

    想要达成如下效果:除了 10.*.*.0/16 不走 WireGuard 之外,所有流量都走 WireGuard ,有点黑白单的意思。

    但 WireGuard 用的是白名单机制。遂用不同的场景来询问 ChatGPT, 其中一个答案是设置 AllowedIPs = 0.0.0.0/0,!10.*.*.0/16 ,但 WireGuard 提示错,不给保存设置。可见 ChatGPT 似乎有点“聪明过头”了?

    既然 WireGuard 不能使用黑白单模式,那就从白名单 ip 中排除点黑名单 ip 吧!

    二、解决方法
    通过在线 CIDR 计算工具,把 AllowedIPs = 0.0.0.0/0,!10.*.*.0/16 转为 AllowedIPs = 1.0.0.0/5,8.0.0.0/7,10.0.0.0/16,11.0.0.0/11,12.0.0.0/6,16.0.0.0/4,32.0.0.0/3,64.0.0.0/2,128.0.0.0/1 。

    暂时可以按设想的样子工作,但小白还是花了一些时间,边算边验证,把逐段 IP 补全。

    三、问题
    1 、有没有计算工具能做减法,把 0.0.0.0/0 减 10.*.*.0/16 直接得出答案 1.0.0.0/5,8.0.0.0/7,10.0.0.0/16,11.0.0.0/11,12.0.0.0/6,16.0.0.0/4,32.0.0.0/3,64.0.0.0/2,128.0.0.0/1 ?
    2 、不借助其它分流软件,WireGuard 有没方法像黑名单那样分流?
    第 1 条附言    2023-03-26 19:36:51 +08:00
    16 条回复    2023-03-22 17:22:18 +08:00
    neroxps
        1
    neroxps  
       2023-03-21 20:20:28 +08:00 via iPhone
    懂网络和不懂网络的都沉默了。

    我简单分析下就是 你家里网段是 10.0.0.1-255

    单位网段是 10.0.0.0-10.0.255.255

    期望是单位和家里的 wg 不冲突。可以通过路由跃点来达到目的。

    你家里的服务器应该就几个,你可以使用其他方式起家里的 wg ,在家里 wg 起来后通过 route 命令配置 目的路由 10.0.0.x/32 并设置优先级更高的跃点。

    然后公司的 wg 就按照原来的 10.0.0.0/16 即可。

    其实你这需求我用 clash for Windows 实现起来更简单,哪个 ip 走哪里写下 rule 即可,简单至极
    jackyzy823
        3
    jackyzy823  
       2023-03-21 20:21:41 +08:00   1
    Python 标准库 ipaddress

    list(ipaddress.ip_network("0.0.0.0/0").address_exclude(ipaddress.ip_network("10.10.0.0/16")))
    neroxps
        4
    neroxps  
       2023-03-21 20:27:31 +08:00 via iPhone
    抱歉 现在才看懂,你期望除了公司网段以外的都跑到家里的 wg ?
    leonshaw
        5
    leonshaw  
       2023-03-21 20:29:28 +08:00
    单位不是 /16 的直连路由?不是就加一条 10.0.0.0/16 到原来的网关。然后 wireguard 配 0.0.0.0/0 和 10.0.0.0/24
    neroxps
        6
    neroxps  
       2023-03-21 20:31:36 +08:00 via iPhone   1
    感觉依然可以用跃点来解决,原因是 wg 跃点比默认的高,你加一条单位网络地址的段到路由表从本地网卡走,然后 0.0.0.0 是 wg 的 tun 就好。
    hzqim
        7
    hzqim  
    OP
       2023-03-21 20:48:29 +08:00
    @leonshaw #5 没权限设置单位的网关。
    @neroxps #6 难度太大,知识盲区。
    anyway ,谢谢两位的解答。

    @neroxps #1 懂网络和不懂网络的都沉默了。
    这样的场景&这样的做法,太小众了(捂脸)
    hzqim
        8
    hzqim  
    OP
       2023-03-21 20:50:13 +08:00
    @jackyzy823 #3 又多一个不会运用 Python 的遗憾。
    leonshaw
        9
    leonshaw  
       2023-03-21 20:57:39 +08:00   1
    @hzqim 不是配网关,是 client 上配到网关的路由。。。
    neroxps
        10
    neroxps  
       2023-03-21 21:10:18 +08:00 via iPhone
    @hzqim 可以看看 Windows route 命令 很简单的。
    neroxps
        11
    neroxps  
       2023-03-21 21:11:00 +08:00 via iPhone
    @hzqim 叫 gpt 帮你写就好。
    hzqim
        12
    hzqim  
    OP
       2023-03-21 21:11:46 +08:00
    谢谢,我抽空再摸索下。
    @leonshaw #9
    @neroxps #10
    LGA1150
        13
    LGA1150  
       2023-03-21 21:24:30 +08:00   1
    AllowedIPs 填写 0.0.0.0/0 ,靠路由表分流
    路由表首先是按照最长前缀匹配,其次才用 metric ,需要 3 条路由:
    0.0.0.0/0 (默认路由) -> wireguard
    10.x.0.0/16 -> 单位网关
    10.0.0.0/24 -> wireguard
    kuaizi
        14
    kuaizi  
       2023-03-21 21:41:13 +08:00 via Android   1
    https://github.com/lmc999/auto-add-routes
    参考这个,把国内 ip 改成你需要直连的 ip
    cnbatch
        15
    cnbatch  
       2023-03-22 12:45:39 +08:00
    既然只是家用,我觉得改改 WireGuard 的隧道 IP 更简便一些,还能避免 IP 重叠的风险,比如万一刚好公司有设备的 IP 就跟你隧道的地址段重叠了
    tril
        16
    tril  
       2023-03-22 17:22:18 +08:00
    计算 wg 的 allowedips 嘛,有现成的 py 脚本,参考这个帖子的 11 楼:
    https://v2ex.com/t/910088
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     945 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 23ms UTC 22:24 PVG 06:24 LAX 14:24 JFK 17:24
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86