iptables como proxy

0

Não sei como começar melhor, então vou ser hetero. Eu tenho que viajar para um país estrangeiro, mas eu preciso acessar um servidor que é local para a minha rede de cidade natal. Eu tenho um roteador DD-WRT com apenas meu PC conectado por trás dele. Então, minha pergunta é: Posso fazer alguma regra iptables que me permita se conectar ao meu roteador a partir da rede externa (país estrangeiro) e me redirecionará para a minha rede local (provido pelo ISP). Vou tentar fazer um "mapa" da minha necessidade.

/Me - X/  
/My router - R/  
/Internet - I/  
/Local Server - S/  

Minha maneira típica de acessar o S (Servidor Local) é a seguinte: X-R-S Minha maneira típica de acessar a internet é: X-R-I Minha necessidade é: R<--I<--X (então de R i connect to S)
Isso ocorre porque eu não consigo acessar S da rede externa.
Quando não estou em casa, não há um PC ativo por trás do roteador, então não posso simplesmente executar o proxy nele.

    
por Ivaylo 04.10.2013 / 10:52

1 resposta

0

Isso deve ser relativamente trivial; para SSH algo assim deve ficar bem:

iptables -t nat -A PREROUTING -p tcp \  
  -i ppp0 --dport 22 \  
  -j DNAT   \
  --to-destination 10.10.10.10:22

Suposição: A interface externa de R é ppp0 . Essa é a interface de entrada à qual a regra deve se aplicar.

Suposição: O endereço IP de S é 10.10.10.10 - substitua o correto, é claro.

O que isto faz é "destino NAT"; basicamente exatamente o mesmo que "NAT normal", apenas substitui o endereço de destino com o servidor interno e o desfaz no caminho de volta. Para usar isso, tudo que você precisa fazer no X é executar ssh R ao invés de ssh S para ser conectado ao sshd em S (isso só funcionará se o X não estiver na internet mas na sua rede interna, você também precisaria executar o SNAT - NAT "normal" ou de origem - para obter as respostas de S a serem enviadas via R, e você precisaria alterar a regra de "-i ppp0" para "-d < endereço externo de R >", para torná-lo compatível quando os pacotes são recebidos de dentro, não apenas do lado de fora; como você pode ver, fica um pouco difícil) .

Observação: Isso pode ser feito também para qualquer outra porta, mas eu recomendaria muito que não exponhasse o Samba (compartilhamento do Windows) ou HTTP não criptografado. (a menos que seja conteúdo público, não autenticado, de qualquer forma). Ou qualquer outra coisa, na verdade. Eles não são triviais para proteger, onde tudo é possível, portanto, colocar carona no encaminhamento de porta do SSH vai lhe poupar muitas dores de cabeça.

Só que o encaminhamento do Samba é difícil, então é melhor tentar fazer isso completamente sem isso.

    
por 05.12.2013 / 19:59