Estou usando a excelente técnica de Como posso obter meu endereço IP externo em um script de shell? para encontrar meu endereço IP público:
dig +short myip.opendns.com @resolver1.opendns.com
Eu também estou usando o sshuttle como um proxy sobre o túnel ssh. Ele é iniciado para encaminhar o tráfego em todas as portas e IPs (incluindo solicitações de DNS) usando o seguinte comando:
sshuttle --dns -vr usr@sshserver 0/0
Depois que o proxy foi iniciado, eu visitei o link para verificar se meu IP externo foi alterado. Ele tem, mas quando eu executo o comando dig novamente, ele relata o mesmo IP externo reportado como antes do proxy ser iniciado.
A partir da saída detalhada, sshuttle parece estar encaminhando em outros comandos dig, e verificar o link somente revela o IP na outra extremidade do meu proxy , como esperado. Tanto quanto eu posso dizer que o sshuttle parece estar funcionando.
Alguém pode explicar por que o comando dig reporta meu IP externo antes do proxy? Meu objetivo é fazer com que pareça aos servidores opendns que a solicitação é originária do meu servidor ssh.
É um pouco exagerado, mas eu dei uma olhada rápida no Wireshark e, ao filtrar o tráfego DNS, o Wireshark não vê nenhuma solicitação de DNS além do comando DIG acima. O comando está ignorando o proxy.
Estou feliz em usar qualquer uma das outras (menos elegantes) maneiras de encontrar meu IP externo, mas isso me faz a pergunta: o que mais está ignorando o sshuttle?