Estou tentando configurar o tunneldigger para o tráfego de tunelamento de um roteador OpenWRT para um dos meus servidores dedicados. O próprio túnel parece estabelecer-se corretamente, mas os pacotes não estão roteando como eu esperava.
Para uma explicação melhor, é assim que minha rede é configurada:
+----------+ ens3 +-----------------+ l2tp100-1 l2tp0 +-----------------+
| internet |<----------| server / broker |<--- l2tp tunnel ---> | client / router |
+----------+ +-----------------+ +-----------------+
public IP 10.254.0.2 10.254.0.4
A interface l2tp0 é criada no cliente (o roteador OpenWRT) e uma interface l2tpxxx-x correspondente é criada no broker (o servidor dedicado). Depois de trazer as duas interfaces para cima, posso enviar pings para uma interface e ver os ARPs saírem da outra:
# on the client
ping -I l2tp0 8.8.8.8
# on the broker/server
tcpdump -i l2tp100-1
00:36:29.925663 ARP, Request who-has google-public-dns-a.google.com tell <client-ip>, length 28
Esses ARPs não parecem ir a nenhum outro lugar. Devo estar faltando alguma configuração de roteamento para obter esses pacotes para a internet.
Eu configurei o encaminhamento no iptables com:
# ens3 is the interface on the server which has access to the internet
iptables -t nat -A POSTROUTING --out-interface ens3 -j MASQUERADE
# l2tp100-1 is the interface on the server which receives incoming packets from the tunnel
iptables -A FORWARD --in-interface l2tp100-1 -j ACCEPT
Mas isso não muda nada. Então eu pensei que talvez estivesse faltando uma rota, então eu tentei adicionar uma rota da interface de entrada l2tp100-1 para a interface que tem acesso à internet (ens3):
ip route add <subnet>/22 dev l2tp100-1 src <public internet IP>
Isso resulta no seguinte erro:
RTNETLINK answers: File exists
No entanto, mostrando a tabela de roteamento completa executando "ip route list table all" não há nenhuma entrada para l2tp100-1.
Eu devo estar seriamente errado sobre algo aqui, mas qual é o problema?