Knowledge Base

Tailscale для безопасного администрирования серверов

Что такое Tailscale

Категория: VPN · Риск: low

Что такое Tailscale

Tailscale — mesh VPN на базе WireGuard. Каждое устройство получает постоянный IP (`100.x.x.x`) и может связываться с другими устройствами в tailnet напрямую (peer-to-peer) или через relay-серверы Cloudflare DERP.

**Ключевое преимущество:** не нужен публичный IP или открытые порты. Работает за NAT, файрволом, в облаке.

Архитектура безопасного доступа

Рабочий ноутбук (Tailscale) ──── tailnet ──── Сервер (Tailscale)
                                                     │
                                              SSH только на 100.x.x.x
                                              Порт 22 закрыт публично

Установка на разные ОС

# Ubuntu/Debian
curl -fsSL https://tailscale.com/install.sh | sh
sudo tailscale up

# CentOS/RHEL
yum install tailscale
systemctl enable --now tailscaled
tailscale up

# Windows / macOS — установщик с tailscale.com

# Docker (только для routing, не для управления сетью)
docker run -d --name=tailscale \
  --network=host \
  --cap-add=NET_ADMIN \
  --cap-add=NET_RAW \
  -v /dev/net/tun:/dev/net/tun \
  -e TS_AUTHKEY=tskey-... \
  tailscale/tailscale

ACL — контроль доступа внутри tailnet

{
  "acls": [
    {
      "action": "accept",
      "src": ["group:admins"],
      "dst": ["tag:servers:22", "tag:servers:443"]
    },
    {
      "action": "accept",
      "src": ["group:developers"],
      "dst": ["tag:dev-servers:*"]
    }
  ],
  "groups": {
    "group:admins": ["user1@company.com", "user2@company.com"]
  },
  "tagOwners": {
    "tag:servers": ["group:admins"]
  }
}

Tailscale SSH (без ключей)

Tailscale может управлять SSH-авторизацией:

# На сервере
tailscale up --ssh

# Доступ с авторизованного устройства без пароля/ключа
ssh user@server-name

Закрыть публичный SSH после настройки Tailscale

# ufw
ufw delete allow 22/tcp
ufw allow in on tailscale0 to any port 22

# iptables
iptables -D INPUT -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i tailscale0 -p tcp --dport 22 -j ACCEPT