众所周知,在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)))

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

 上一篇

Network