Agregar ULA IPv6 a un archivo hosts cuando un nodo se conecta
This commit is contained in:
parent
07d49d67c0
commit
c8557ce47b
31
skel/scripts/subnet-ula-hosts
Normal file
31
skel/scripts/subnet-ula-hosts
Normal file
@ -0,0 +1,31 @@
|
||||
#!/bin/bash
|
||||
set -euo pipefail
|
||||
IFS=$'\n\t'
|
||||
|
||||
ULA_PREFIX="fd00:1213:acab::"
|
||||
ETCHOSTS="etchosts"
|
||||
# Added at the end of each line in the hosts file.
|
||||
COMMENT="# Managed by tinc $NAME"
|
||||
|
||||
function mac_to_ip6_token() {
|
||||
# https://tools.ietf.org/html/rfc2464
|
||||
# TODO: Sanitize this so that nothing bad happens if someone sends a
|
||||
# malicious subnet string to tinc, something like aa:';rm -rf /.
|
||||
|
||||
# "aa:bb:cc:dd:ee:ff" → hexets=( "aa" "bb" "cc" "dd" "ee" "ff" )
|
||||
readarray -td: hexets <<< "$1"
|
||||
# first = 0xaa xor 2 = a8
|
||||
first=`printf '%02x' $(( 0x${hexets[0]} ^ 2 ))`
|
||||
# a8bb:ccff:fedd:eeff
|
||||
printf '%s%s:%sff:fe%s:%s%s\n' $first ${hexets[@]:1}
|
||||
}
|
||||
|
||||
ip="$ULA_PREFIX$(mac_to_ip6_token "$SUBNET")"
|
||||
|
||||
# TODO: Sanitize this too, maybe NODE = 'accounts.google.com\n1.2.3.4 foo' ?
|
||||
sed -i "/$NODE\.$NAME $COMMENT/d" "$ETCHOSTS"
|
||||
sed -i "/^$ip .* $COMMENT$/d" "$ETCHOSTS"
|
||||
|
||||
if [ "$1" == "up" ]; then
|
||||
echo "$ip $NODE.$NAME $COMMENT" >> "$ETCHOSTS"
|
||||
fi
|
4
skel/subnet-down
Executable file
4
skel/subnet-down
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd `dirname "$0"`
|
||||
. ./run-script
|
4
skel/subnet-up
Executable file
4
skel/subnet-up
Executable file
@ -0,0 +1,4 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd `dirname "$0"`
|
||||
. ./run-script
|
Loading…
x
Reference in New Issue
Block a user