Last active
August 11, 2023 13:52
-
-
Save manesec/07319d48e9ef3f3b520f867ad3605ab1 to your computer and use it in GitHub Desktop.
Simple wireguard generator
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import os | |
from pathlib import Path | |
gen_peers = 10 | |
SERVER_Header_config = """ | |
[Interface] | |
Address = 172.16.0.1/24 | |
SaveConfig = true | |
PostUp = iptables -A FORWARD -i %i -j ACCEPT; iptables -A FORWARD -o %i -j ACCEPT; iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | |
PostDown = iptables -D FORWARD -i %i -j ACCEPT; iptables -D FORWARD -o %i -j ACCEPT; iptables -t nat -D POSTROUTING -o eth0 -j MASQUERADE | |
ListenPort = 51820 | |
PrivateKey = <SERVER_PRIVARE_KEY> | |
""" | |
SERVER_Peers_config = """ | |
[Peer] | |
PublicKey = <CLIENT_PUBLIC_KEY> | |
AllowedIPs = 172.16.0.<CLIENT_IP> | |
""" | |
CLIENT_CONFIG = """ | |
[Interface] | |
PrivateKey = <CLIENT_PRIVARE_KEY> | |
Address = 172.16.0.<CLIENT_IP>/24 | |
[Peer] | |
PublicKey = <SERVER_PUBLIC_KEY> | |
Endpoint = serverip:51820 | |
AllowedIPs = 192.168.31.0/24 | |
""" | |
# gen key | |
Path("genkey").mkdir(exist_ok=True) | |
Path("client").mkdir(exist_ok=True) | |
os.chdir("genkey") | |
print("gen server key") | |
os.system("wg genkey | tee serverkey | wg pubkey > serverpub") | |
for x in range(gen_peers): | |
os.system("wg genkey | tee peer%skey | wg pubkey > peer%spub" % (x,x)) | |
# gen key | |
server_pub_key = open("serverpub",'r').read().strip() | |
server_private_key = open("serverkey",'r').read().strip() | |
peer = [] | |
for x in range(gen_peers): | |
peer_pub = open("peer%spub" % (x),'r').read().strip() | |
peer_priv = open("peer%skey"% (x),'r').read().strip() | |
peer.append([peer_pub,peer_priv]) | |
# gen config | |
os.chdir("..") | |
OUTPUT_CONFIG = SERVER_Header_config.replace("<SERVER_PRIVARE_KEY>",server_private_key) | |
START_IP = 2 | |
x= 0 | |
for peer_pub, peer_priv in peer: | |
OUTPUT_CONFIG += SERVER_Peers_config.replace("<CLIENT_PUBLIC_KEY>",peer_pub).replace("<CLIENT_IP>",str(START_IP)) | |
f = open("client/peer%s.conf"%(x),'w') | |
f.writelines(CLIENT_CONFIG.replace("<CLIENT_PRIVARE_KEY>",peer_priv).replace("<SERVER_PUBLIC_KEY>",server_pub_key).replace("<CLIENT_IP>",str(START_IP))) | |
f.close() | |
START_IP += 1 | |
x+= 1 | |
f = open("wg0.conf",'w') | |
f.writelines(OUTPUT_CONFIG) | |
f.close() |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment