49 lines
950 B
Bash
Executable File
49 lines
950 B
Bash
Executable File
#!/bin/bash
|
|
set -e
|
|
|
|
PRIVATE_KEYS=("")
|
|
PUBLIC_KEYS=("")
|
|
|
|
resetwg() {
|
|
for i in {1..64}; do
|
|
ip link delete dev wg${i} 2>/dev/null >/dev/null || true
|
|
done
|
|
}
|
|
|
|
for i in {1..64}; do
|
|
next_key="$(wg genkey)"
|
|
PRIVATE_KEYS+=("$next_key")
|
|
PUBLIC_KEYS+=($(wg pubkey <<<"$next_key"))
|
|
done
|
|
|
|
resetwg
|
|
trap resetwg INT TERM EXIT
|
|
|
|
for i in {1..64}; do
|
|
{ echo "[Interface]"
|
|
echo "ListenPort = $(( $i + 31222 ))"
|
|
echo "PrivateKey = ${PRIVATE_KEYS[$i]}"
|
|
|
|
for j in {1..64}; do
|
|
[[ $i == $j ]] && continue
|
|
echo "[Peer]"
|
|
echo "PublicKey = ${PUBLIC_KEYS[$j]}"
|
|
echo "AllowedIPs = 192.168.8.${j}/32"
|
|
echo "Endpoint = 127.0.0.1:$(( $j + 31222 ))"
|
|
done
|
|
} > "/tmp/deviceload.conf"
|
|
|
|
ip link add dev wg${i} type wireguard
|
|
wg setconf wg${i} "/tmp/deviceload.conf"
|
|
ip link set up dev wg${i}
|
|
rm "/tmp/deviceload.conf"
|
|
done
|
|
|
|
ip address add dev wg1 192.168.8.1/24
|
|
|
|
while true; do
|
|
for i in {2..64}; do
|
|
echo hello | ncat -u 192.168.8.${i} 1234
|
|
done
|
|
done
|