Wireguard客户端AllowedIPs 配置排除一个ip或者一个ip段
Wireguard客户端的配置中只有一个AllowedIPs配置来定义哪些ip或者ip段可以允许通过Wireguard客户端路由,因此如果想排除某个ip或者ip段,就需要将这些ip排除掉。
由于ip段太多,如果手动写会非常麻烦,幸好python有一个库可以帮我们解决这个问题,代码如下:
from ipaddress import ip_network
start = '0.0.0.0/0'
#需要排除的ip或者ip段
exclude = ['192.168.1.0/24', '192.168.2.0/24']
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)))
将输出的结果粘贴在wireguard配置AllowedIPs =后面即可。
over