iptables como proxy

iptables como proxy

Não tenho certeza de como começar melhor, então serei direto. Tenho que viajar para um país estrangeiro, mas preciso de acesso a um servidor local na rede da minha cidade natal. Eu tenho um roteador DD-WRT com apenas meu PC conectado atrás dele. Então, minha pergunta é: Posso criar alguma regra de iptables que me permita conectar ao meu roteador de uma rede externa (país estrangeiro) e me redirecione para minha rede local (fornecida 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 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 Ri eu me conecto a S)
Isso ocorre porque não consigo acessar S da rede externa.
Quando não estou em casa, não há nenhum PC ativo atrás do roteador, então não posso simplesmente executar o proxy nele.

Responder1

Isto deveria ser relativamente trivial; para SSH, algo assim deve servir:

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 ser aplicada.

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

O que isso faz é "destino NAT"; basicamente exatamente igual ao "NAT normal", apenas substitui o endereço de destino pelo do servidor interno e o desfaz no caminho de volta. Para usar isso, tudo o que você precisa fazer no X é executar ssh Rem vez de ssh Sestar conectado ao sshd no S (isso só funcionará se o X estiver atualmentenãona internet, mas na sua rede interna; você também precisaria executar o SNAT - "normal" ou NAT de origem - para que as respostas de S sejam enviadas via R, e você precisaria alterar a regra de "-i ppp0" para "-d <endereço externo de R>", para combinar quando os pacotes são recebidos de dentro, não apenas de fora; como você pode ver, fica um pouco complicado).

Observação:É claro que isso também pode ser feito para qualquer outra porta, mas eu gostariarealmente fortementenão recomendamos expor o Samba (compartilhamento do Windows) ou HTTP não criptografado (a menos que seja conteúdo público e não autenticado). Ou qualquer outra coisa, na verdade. Eles não são triviais de proteger, sempre que possível, então pegar carona no encaminhamento de porta do SSH vai lhe poupar muitas dores de cabeça.

Exceto que o encaminhamento do Samba é difícil, então é melhor tentar passar completamente sem isso.

informação relacionada