Soportar subredes

This commit is contained in:
fauno 2024-06-26 20:24:19 +00:00
parent 668ad75a3e
commit f492fd94e3
4 changed files with 35 additions and 13 deletions

View File

@ -95,6 +95,17 @@ lowercase () {
tr "[:upper:]" "[:lower:]"
}
# Convierte llaves públicas en MAC
public_key_to_mac () {
grep -E "^[A-Za-z0-9/+=]+$" \
| base64 -d \
| sha256sum \
| cut -d " " -f 1 \
| cut -b 1-12 \
| sed -re "s/../&:/g" \
| cut -d : -f 1-6
}
# Limpia el hostname
# @see tincd.conf(5)
get_node_name() {

View File

@ -44,6 +44,12 @@ nodedir="$(get_node_dir "${1}")"
# Crear el directorio de scripts
mkdir -p "${nodedir}/scripts"
# Setear la MAC si no existía ya
if ! test -f "${nodedir}/mac"; then
msg "Estableciendo MAC"
get_node_file "${1}" | xargs cat | public_key_to_mac > "${nodedir}/mac"
fi
msg "Instalando en el sistema..."
${sudo} mkdir -p "${TINC}"
${sudo} rsync -a --no-owner \

View File

@ -1,8 +1,9 @@
#!/bin/bash
#!/bin/sh
set -euo pipefail
IFS=$'\n\t'
ULA_PREFIX="fd00:1312:acab::"
ULA_PREFIX="fd00:acab"
ULA_SUBNET="/32"
ETCHOSTS="/etc/hosts"
# Added at the end of each line in the hosts file.
COMMENT="# Managed by tinc ${NETNAME}"
@ -16,20 +17,22 @@ function mac_to_address () {
case $2 in
subnet)
IP="${ULA_PREFIX}$(mac_to_address "${SUBNET}")"
_mac="$(mac_to_address "${SUBNET}")"
IP="${ULA_PREFIX}::${_mac}"
if test "${ULA_SUBNET}" = "/32"; then
case $1 in
up) ip -6 route add "${ULA_PREFIX}:${_mac}::/80" via "${IP}" dev "${INTERFACE}" ;;
down) ip -6 route del "${ULA_PREFIX}:${_mac}::/80" via "${IP}" dev "${INTERFACE}" ;;
esac
fi
;;
tinc)
MAC="$(cat "/sys/class/net/${INTERFACE}/address")"
IP="${ULA_PREFIX}$(mac_to_address "${MAC}")"
IP="${ULA_PREFIX}::$(mac_to_address "${MAC}")"
case $1 in
up)
ip address add "${IP}/64" dev "${INTERFACE}"
;;
down)
sed -re "/${COMMENT}$/d" -i "${ETCHOSTS}"
;;
esac
;;
up) ip address add "${IP}${ULA_SUBNET}" dev "${INTERFACE}" ;;
down) sed -re "/${COMMENT}$/d" -i "${ETCHOSTS}" ;;
esac ;;
esac
test -z "${NODE}" && exit

View File

@ -1,6 +1,8 @@
#!/bin/sh
cd `dirname "$0"`
ip link set dev ${INTERFACE} address `cat mac`
ip link set ${INTERFACE} up
cd `dirname "$0"`
. ./run-script