Soportar subredes
This commit is contained in:
parent
668ad75a3e
commit
f492fd94e3
11
lib/common
11
lib/common
@ -95,6 +95,17 @@ lowercase () {
|
|||||||
tr "[:upper:]" "[:lower:]"
|
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
|
# Limpia el hostname
|
||||||
# @see tincd.conf(5)
|
# @see tincd.conf(5)
|
||||||
get_node_name() {
|
get_node_name() {
|
||||||
|
@ -44,6 +44,12 @@ nodedir="$(get_node_dir "${1}")"
|
|||||||
# Crear el directorio de scripts
|
# Crear el directorio de scripts
|
||||||
mkdir -p "${nodedir}/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..."
|
msg "Instalando en el sistema..."
|
||||||
${sudo} mkdir -p "${TINC}"
|
${sudo} mkdir -p "${TINC}"
|
||||||
${sudo} rsync -a --no-owner \
|
${sudo} rsync -a --no-owner \
|
||||||
|
@ -1,8 +1,9 @@
|
|||||||
#!/bin/bash
|
#!/bin/sh
|
||||||
set -euo pipefail
|
set -euo pipefail
|
||||||
IFS=$'\n\t'
|
IFS=$'\n\t'
|
||||||
|
|
||||||
ULA_PREFIX="fd00:1312:acab::"
|
ULA_PREFIX="fd00:acab"
|
||||||
|
ULA_SUBNET="/32"
|
||||||
ETCHOSTS="/etc/hosts"
|
ETCHOSTS="/etc/hosts"
|
||||||
# Added at the end of each line in the hosts file.
|
# Added at the end of each line in the hosts file.
|
||||||
COMMENT="# Managed by tinc ${NETNAME}"
|
COMMENT="# Managed by tinc ${NETNAME}"
|
||||||
@ -16,20 +17,22 @@ function mac_to_address () {
|
|||||||
|
|
||||||
case $2 in
|
case $2 in
|
||||||
subnet)
|
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)
|
tinc)
|
||||||
MAC="$(cat "/sys/class/net/${INTERFACE}/address")"
|
MAC="$(cat "/sys/class/net/${INTERFACE}/address")"
|
||||||
IP="${ULA_PREFIX}$(mac_to_address "${MAC}")"
|
IP="${ULA_PREFIX}::$(mac_to_address "${MAC}")"
|
||||||
case $1 in
|
case $1 in
|
||||||
up)
|
up) ip address add "${IP}${ULA_SUBNET}" dev "${INTERFACE}" ;;
|
||||||
ip address add "${IP}/64" dev "${INTERFACE}"
|
down) sed -re "/${COMMENT}$/d" -i "${ETCHOSTS}" ;;
|
||||||
;;
|
esac ;;
|
||||||
down)
|
|
||||||
sed -re "/${COMMENT}$/d" -i "${ETCHOSTS}"
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
test -z "${NODE}" && exit
|
test -z "${NODE}" && exit
|
||||||
|
@ -1,6 +1,8 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
|
||||||
|
cd `dirname "$0"`
|
||||||
|
|
||||||
|
ip link set dev ${INTERFACE} address `cat mac`
|
||||||
ip link set ${INTERFACE} up
|
ip link set ${INTERFACE} up
|
||||||
|
|
||||||
cd `dirname "$0"`
|
|
||||||
. ./run-script
|
. ./run-script
|
||||||
|
Loading…
x
Reference in New Issue
Block a user