Actualización de configure
Lo único importante de config es el mail de cada uno :D
* Agregar el script subnet-up al skel
* Agregar subnets extra para pasarelas entre redes libres
* Agregar el mail del responsable en el archivo host
* La generación de llaves no espera interacción
* Se informan los archivos de host faltantes
* No se empaqueta / si ${vpn} llega a estar vacío (aunque se chequea antes)
* Firmar con GPG en lugar de firmar criptográficamente
This commit is contained in:
10
config
10
config
@ -15,14 +15,18 @@ rango_vpn=255.255.255.0
|
||||
# ======================
|
||||
|
||||
# La IP de tu nodo en la VPN
|
||||
# Elegir el último octeto, que no esté ocupado en
|
||||
# el archivo lista.
|
||||
# get_ip selecciona una IP disponible
|
||||
ip=$(get_ip)
|
||||
|
||||
# La subnet que va a manejar tu nodo. Por default lo dejamos
|
||||
# sólo.
|
||||
subnet=/32
|
||||
|
||||
# Subnets extra, separadas por espacios
|
||||
# Agrega la subnet de tu red libre si este es un nodo pasarela
|
||||
# Ejemplo para BAL: 10.4.24.128/27
|
||||
subnets=""
|
||||
|
||||
# (Opcional)
|
||||
# La dirección de acceso público del nodo. Lo mejor es cambiarlo
|
||||
# por un dominio (dinámico o no) que lleve a este nodo
|
||||
@ -34,5 +38,5 @@ node=$(hostname | tr -d '-')
|
||||
# Lista de nodos con los que conectarse inicialmente.
|
||||
# Cada uno de estos nodos debe tener el archivo hosts/<nodo> de
|
||||
# este nodo
|
||||
#conectar_a="nodo_a nodo_b etc"
|
||||
# Separados por espacios
|
||||
conectar_a="apolo lancelot diablo"
|
||||
|
||||
27
configure
vendored
27
configure
vendored
@ -65,12 +65,17 @@ msg2 "El nombre de la VPN es ${vpn} y su rango es ${rango_vpn}"
|
||||
msg2 "El nombre del nodo es ${node}"
|
||||
msg2 "La dirección del nodo es ${address} (siempre es mejor un dominio que una IP)"
|
||||
msg2 "La red del nodo será ${ip}${subnet}"
|
||||
|
||||
if [ ! -z "${subnets}" ]; then
|
||||
msg2 "Este nodo anunciará las subredes: ${subnets}"
|
||||
fi
|
||||
|
||||
msg2 "Si no es correcto presione ^C para cancelar"
|
||||
read pause
|
||||
|
||||
# Comprobar que todas las variables existan
|
||||
vars=""
|
||||
for var in id vpn rango_vpn node address ip subnet; do
|
||||
for var in id vpn rango_vpn node ip subnet; do
|
||||
if [ -z "${!var}" ]; then
|
||||
vars="${vars}${var} "
|
||||
fi
|
||||
@ -92,13 +97,19 @@ mkdir -p ${hosts}
|
||||
msg2 "Nodo"
|
||||
touch ${hosts}/${node}
|
||||
|
||||
# Nombre y mail
|
||||
echo "# ${id}" >> ${hosts}/${node}
|
||||
|
||||
# Dirección pública y dentro de la VPN
|
||||
echo "Address = ${address}" >> ${hosts}/${node}
|
||||
echo "Subnet = ${ip}${subnet}" >> ${hosts}/${node}
|
||||
|
||||
for _subnet in ${subnets}; do
|
||||
echo "Subnet = ${_subnet}" >> ${hosts}/${node}
|
||||
done
|
||||
|
||||
# Escribir el script tinc-up
|
||||
sed -e "s/{{ip}}/${ip}/g" \
|
||||
-e "s/{{id}}/${id}/g" \
|
||||
-e "s/{{rango_vpn}}/${rango_vpn}/g" \
|
||||
skel/tinc-up > ${vpn}/tinc-up
|
||||
|
||||
@ -107,24 +118,26 @@ sed "s/{{node}}/${node}/g" skel/tinc.conf > ${vpn}/tinc.conf
|
||||
|
||||
# tinc-down
|
||||
cp skel/tinc-down ${vpn}/
|
||||
cp skel/subnet-up ${vpn}/
|
||||
|
||||
# Hacer ejecutables
|
||||
chmod +x ${vpn}/tinc-{up,down}
|
||||
chmod +x ${vpn}/tinc-{up,down} ${vpn}/subnet-up
|
||||
|
||||
# Tomar todos los hosts de conectar_a y copiarlos al directorio de hosts
|
||||
msg "Agregando los hosts remotos"
|
||||
for host in ${conectar_a}; do
|
||||
msg2 "${host}"
|
||||
echo "ConnectTo = ${host}" >> ${vpn}/tinc.conf
|
||||
cp nodos/${host} ${hosts}/
|
||||
cp nodos/${host} ${hosts}/ 2>/dev/null || error "Falta el archivo"
|
||||
done
|
||||
|
||||
# Generar las llaves
|
||||
tincd -c ${PWD}/${vpn} -n ${vpn} --generate-keys=4096 && \
|
||||
msg "Generando llaves..."
|
||||
echo -e "\n" | tincd -c ${PWD}/${vpn} -n ${vpn} --generate-keys=4096 && \
|
||||
msg "La red está configurada"
|
||||
|
||||
# Firmar con GPG para mandar por mail
|
||||
msg "Firmar el archivo criptográficamente? (s/n)"
|
||||
msg "Firmar el archivo con GPG? (s/N)"
|
||||
read yesno
|
||||
|
||||
if [ "${yesno}" = "s" ]; then
|
||||
@ -135,7 +148,7 @@ fi
|
||||
host_files=$(shopt -s nullglob; echo ${hosts}/${node}*)
|
||||
|
||||
# Crear el tarball
|
||||
tar -cvzf ${vpn}.tar.gz ${vpn}/
|
||||
tar -cvzf ${vpn}.tar.gz ${vpn}
|
||||
|
||||
msg2 "La configuración se encuentra en ${vpn}.tar.gz"
|
||||
msg2 "Descomprimir en /etc/tinc"
|
||||
|
||||
Reference in New Issue
Block a user