IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    在Wireguard中排除部分IP(段)

    泠泫凝发表于 2023-11-06 02:18:40
    love 0

    众所周知,在Wireguard中只能设置允许的IP(AllowedIPs),没办法设置排除部分IP段。但是可以通过一个Python脚本来计算排除掉某个IP或IP段之后的AllowedIPs。

    改一下下面的参数,然后直接丢Python运行一下,输出结果填在AllowedIPs即可。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    #!/usr/bin/python3

    from ipaddress import ip_network

    start = '0.0.0.0/0'
    #需要排除的ip或者ip段
    exclude = ['10.0.0.0/8', '172.16.0.0/12', '192.168.0.0/16', '6.6.6.6', '8.8.8.8']

    result = [ip_network(start)]
    for x in exclude:
    n = ip_network(x)
    new = []
    for y in result:
    if y.overlaps(n):
    new.extend(y.address_exclude(n))
    else:
    new.append(y)
    result = new

    print(','.join(str(x) for x in sorted(result)))

    可以直接在菜鸟教程在线编辑器里面运行。



沪ICP备19023445号-2号
友情链接