Это старая версия документа!
Headscale
https://github.com/juanfont/headscale/
https://headscale.net
Пример headscale для docker swarm stack c доступом через traefik и ограничением по IP:
Команды
Сервер
headscale nodes list-routes #показать объявленные маршруты и их ноды headscale nodes tag -i <NODE_ID> -t tag:<TAG1>,tag:<TAG2> #установить тэг для ноды
Создать API ключ для ступа к headscale, например через UI:
headscale apikeys create
Создать пользователя:
headscale users create user1
Создать многоразовый ключ пользователю истекающий через 24ч (для подключения нод пользователю user1):
USERID=$(headscale users list -n ${USERNAME} -o json | jq .[].id) headscale preauthkeys --user ${USERID} create --reusable --expiration 24h
Зарегистрировать ноду на сервере, после получения ключа ноды:
headscale nodes register --user user1 --key W4D7f0Um2pJl2r0TX0FrFJ09
Клиент
--advertise-tags tag:<TAG> # добавить ноду как tagged-devices --advertise-routes=10.0.0.0/8,192.168.0.0/24 # добавить ноду c объявленными маршрутами
Запросить ключ ноды для регистрации на сервере:
tailscale up --login-server=https://DOMAIN.COM --accept-dns=false --accept-routes
или сразу зарегистрировать клиента с указанем ключа пользователя:
tailscale up --login-server=https://DOMAIN.COM --auth-key=dc0018d10c5ec398a972cf060603be276fc602c9861850de --accept-dns=false --accept-routes
Показать маршруты:
ip route show table all oif tailscale0 #или ip route show table 52
Отключить SNAT на клиенте предоставляющего подсети (только для linux):
tailscale up --snat-subnet-routes=false
ACL
DERP
UI
https://headscale.net/stable/ref/integration/web-ui/
https://github.com/GoodiesHQ/headscale-admin
https://github.com/gurucomputing/headscale-ui
https://github.com/tale/headplane
Ссылки
https://tailscale.com/download - загрузить ноду (клиент)
https://lanrat.github.io/openwrt-tailscale-repo/ - клиент для OpenWrt 19.07
