Na verdade a solução do problema é mais conceitual do que difícil.
A definição de TTL é o tempo de vida do pacote até que ele alcance o seu destino. O TTL de um pacote pode depender do sistema operacional da máquina destino e da região em que o host se encontra. Para cada nó da rota, é subtraído 1 número do TTL do pacote.
Seguindo esse conceito, você há de concordar comigo que um roteador sob o seu domínio vai passar por 2, 3 nós até chegar ao seu servidor, que estará rodando IPTables. Então você pode montar algo mais ou menos assim (Não posso afirmar com certeza porque eu estou na faculdade e aqui só tem Microsoft Windows):
Existe um módulo do IPTables que permite setar e identificar o TTL de um pacote que esteja passando por ele:
Código:
# iptables -t nat -A PREROUTING -s $cliente -j TTL --set-ttl 2
# iptables -t nat -A FORWARD -m ttl --ttl-gt 62 -j DROP
Estes são apenas exemplos para você ter uma idéia do quadro inteiro, mas eu recomendo que você dê uma lida no Wikipedia sobre o conceito e depois dê uma caçada no Google sobre o assunto. Se você digitar como chave de pesquisa a string
"-m ttl" netfilter vai encontrar a solução pro seu problema com certeza.