Agindo como um proxy reverso para pacotes TCP brutos

1

Estou tentando usar um nó OVH como um proxy reverso para vários servidores de minecraft (principalmente para proteção contra DDoS e personalização de firewall). Os hosts de minecraft também estão executando o Ubuntu, seja 12.04 ou 14.04, e a OVH tem o Ubuntu. Atualmente eu tentei fazer isso:

sysctl net.ipv4.ip_forward=1
iptables -t nat -A PREROUTING -p tcp --dport port -j DNAT --to-destination ip:port
iptables -t nat -A POSTROUTING -j MASQUERADE

Isso funciona muito bem, com a exceção do óbvio, que todos os clientes têm o mesmo IP que o servidor em que fiz isso. Existe alguma maneira eu posso definir qualquer um desses dispositivos para que ele preserva o IP de origem original? Eu li que o tcpproxy ( link ) é uma boa solução para isso, mas não vejo razão para que esse problema não continue.

Eu também me pergunto se usar isso causaria respostas do servidor de minecraft para ignorar o proxy, vazando o IP real, o que eu gostaria de evitar.

    
por user3407675 27.10.2014 / 18:54

1 resposta

2

Preservar o endereço IP do servidor proxy não funcionaria na sua situação. Se o cliente se conecta originalmente ao proxy (diremos proxy: 1111) e recebe uma resposta do minecraft1: 2525, o que o cliente faz com ele. Não há como o cliente mapear essa resposta para a solicitação original.

Continue fazendo do jeito que você está fazendo.

Em vez disso, você pode usar vários conjuntos de regras em um intervalo de portas. Então, por exemplo, minecraft1 é proxy: 1111, minecraft2 é proxy: 1112, mincraft3 é proxy: 1113, etc.

Você pode configurar suas regras assim:

iptables -t nat -A PREROUTING -p tcp --dport 1111 -j DNAT --to-destination ip:port
iptables -t nat -A PREROUTING -p tcp --dport 1112 -j DNAT --to-destination ip:port
iptables -t nat -A PREROUTING -p tcp --dport 1113 -j DNAT --to-destination ip:port
iptables -t nat -A POSTROUTING -j MASQUERADE

Então, para se conectar ao minecraft1, você usaria o proxy: 1111. Para minecraft2, proxy: 1112, etc. A porta em que os servidores reais do Minecraft estão sendo executados não importa, já que as regras serão retransmitidas para a porta correta.

    
por Chuck R 27.10.2014 / 19:44