Para uma melhor experiência com caixas de código, experimente ver o site em um Desktop.
Ao configurar um Subnet Router no Tailscale para dar acesso a redes de infraestrutura locais, dois problemas comuns podem impedir que as rotas funcionem: a desativação do IP Forwarding no kernel do Linux e o sobrescrevimento acidental das sub-redes ao utilizar o comando de anúncio da CLI.
Neste tutorial, veremos o passo a passo para anunciar e rotear múltiplas sub-redes corretamente a partir de um Bastion Host/Jump Server Linux.
Pré-requisitos e Cenário
Ambiente de exemplo utilizado neste guia (utilizando blocos reservados para documentação/labs conforme RFC 5737 e RFC 3849):
Sistema Operacional: Debian / Ubuntu Linux
Interface Tailscale: tailscale0 (IP 100.64.0.100/32)
Interfaces de Rede do Host: ens18 (Rede 192.0.2.0/24 - TEST-NET-1) e ens19 (Rede 198.51.100.0/24 - TEST-NET-2)
Sub-redes a serem anunciadas: 192.0.2.0/24, 198.51.100.0/24 e 203.0.113.0/24 (TEST-NET-3)
Sintaxe da CLI: Anúncio Cumulativo de Rotas
Um erro frequente ao utilizar o parâmetro --advertise-routes na CLI do Tailscale é executar o comando sequencialmente para cada rede. O parâmetro --advertise-routes substitui integralmente a lista de anúncios anterior em vez de somar os valores.
+--------------------------------------------------------+----------------------------------------------------+
| Errado (Sobrescreve a lista anterior) | Correto (Anúncio unificado em bloco) |
+--------------------------------------------------------+----------------------------------------------------+
| tailscale set --advertise-routes=192.0.2.0/24 | tailscale set --advertise-routes=192.0.2.0/24,\ |
| tailscale set --advertise-routes=198.51.100.0/24 | 198.51.100.0/24,203.0.113.0/24 |
+--------------------------------------------------------+----------------------------------------------------+
Passo 1: Habilitar o IP Forwarding no Kernel Linux
O daemon do Tailscale precisa que a pilha de rede do Linux encaminhe pacotes IPv4 e IPv6 entre as interfaces. Sem essa alteração, as rotas podem ser aprovadas no painel administrativo, mas o host descartará o tráfego transitório.
Execute os comandos a seguir como root para ativar em runtime e persistir a alteração no arquivo de inicialização:
# Ativação imediata em runtime
sysctl -w net.ipv4.ip_forward=1
sysctl -w net.ipv6.conf.all.forwarding=1
# Configuração de persistência no sistema
cat <<EOF | tee /etc/sysctl.d/99-tailscale.conf
net.ipv4.ip_forward = 1
net.ipv6.conf.all.forwarding = 1
EOF
# Recarrega as variáveis do sysctl
sysctl -p /etc/sysctl.d/99-tailscale.conf
Passo 2: Anunciar Múltiplas Sub-redes no Tailscale
Com o IP Forwarding ativo, informe todas as sub-redes que este nó deve rotear em um único comando, separando os blocos CIDR por vírgulas e sem espaços entre eles:
tailscale set --advertise-routes=192.0.2.0/24,198.51.100.0/24,203.0.113.0/24
Passo 3: Aprovar as Rotas no Tailscale Admin Console
Após anunciar as rotas via CLI, o plano de controle do Tailscale exige a aprovação explícita no painel web para que a política de segurança permita o tráfego:
Acesse o Admin Console do Tailscale (login via navegador).
Vá até a seção Machines e selecione o host correspondente ao Subnet Router.
No menu de opções do dispositivo, clique em Edit route settings.
Marque as caixas de seleção das sub-redes enviadas pelo nó e salve a alteração.
Passo 4: Configurar Masquerade (SNAT) no IPTables (Opcional)
Se os gateways padrão ou roteadores L3 da sua rede interna não possuem uma rota estática configurada de volta para o bloco CGNAT do Tailscale (100.64.0.0/10), os pacotes de resposta dos servidores locais serão descartados na volta.
Para contornar essa necessidade sem alterar a tabela de roteamento dos ativos da LAN, aplique mascaramento de saída (Outbound NAT) no host Linux:
# Permite o encaminhamento do tráfego vindo do Tailscale
iptables -A FORWARD -i tailscale0 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
# Aplica Masquerade nas interfaces físicas de saída
iptables -t nat -A POSTROUTING -o ens18 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ens19 -j MASQUERADE
# Salva as regras no sistema (requer o pacote iptables-persistent)
netfilter-persistent save
Passo 5: Validação da Configuração
Para validar a integridade da operação no nó, execute os comandos de status:
# 1. Verifica se a flag do kernel está ativa
sysctl net.ipv4.ip_forward
# 2. Confirma a lista de rotas liberadas
tailscale status --json | grep -A 10 "AllowedIPs"
# 3. Valida o status geral e ausência de alertas de Health Check
tailscale status
Se todas as etapas forem seguidas corretamente, o alerta de IP forwarding is disabled desaparecerá da verificação de status e os clientes conectados à Tailnet conseguirão alcançar os endereços IP da rede interna.