Algo muito comum no gerenciamento de servidores é o redirecionamento de tráfego.
Suponha que temos um servidor com certos serviços em execução, mas por qualquer motivo, mudamos um desses serviços (Não sei, por exemplo pop3 que é a porta 110) para outro servidor. O normal e mais frequente seria simplesmente mudar o IP no registro DNS, porém se alguém estava usando o IP em vez do subdomínio ele será afetado.
O que fazer? ... simples, redirecione o tráfego que o servidor recebe por aquela porta para outro servidor com a mesma porta.
Como começamos a redirecionar o tráfego?
A primeira coisa é que devemos ter habilitado o encaminhando no servidor, para isso vamos colocar o seguinte:
echo "1" > /proc/sys/net/ipv4/ip_forward
Você também pode usar este outro comando, caso o anterior não funcione para você (aconteceu comigo assim em um CentOS):
sysctl net.ipv4.ip_forward=1
Em seguida, reiniciaremos a rede:
service networking restart
Em distros RPM como CentOS e outras, seria:
service nertwork restart
Agora vamos passar para o importante, diga ao servidor por meio iptables o que redirecionar:
iptables -t nat -A PREROUTING -p tcp --dport <puerto receptor> -j DNAT --to-destination <ip final>:<puerto de ip final>
Isto é, e seguindo o exemplo que mencionei, suponha que queiramos redirecionar todo o tráfego que nosso servidor recebe através da porta 110 para outro servidor (ex: 10.10.0.2), que ainda receberá esse tráfego por meio de 110 (é o mesmo serviço):
iptables -t nat -A PREROUTING -p tcp --dport 110 -j DNAT --to-destination 10.10.0.2:110
O servidor 10.10.0.2 verá que todos os pacotes ou requisições vêm do IP do cliente, caso ele queira nadar as requisições, ou seja, que o 2º servidor veja que as requisições chegam com o IP do 1º servidor (e no ao qual aplicamos o redirecionamento), seria também colocar esta segunda linha:
iptables -t nat -A POSTROUTING -j MASQUERADE
Algumas perguntas e respostas
No exemplo usei a mesma porta nas duas ocasiões (110), porém eles podem redirecionar o tráfego de uma porta para outra sem problemas. Por exemplo, suponha que eu queira redirecionar o tráfego da porta 80 para 443 em outro servidor, para isso seria:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 10.10.0.2:443
Isto é iptables, eles podem usar todos os outros parâmetros que sabemos, por exemplo, se quisermos apenas redirecionar o tráfego de um IP específico, seria adicionando -s … Por exemplo, redirecionarei apenas o tráfego proveniente de 10.10.0.51:
iptables -t nat -A PREROUTING -p tcp -s 10.10.0.51 --dport 80 -j DNAT --to-destination 10.10.0.2:443
Ou uma rede inteira (/ 24):
iptables -t nat -A PREROUTING -p tcp -s 10.10.0.0/24 --dport 80 -j DNAT --to-destination 10.10.0.2:443
Também podemos especificar a interface de rede com -i :
iptables -t nat -A PREROUTING -p tcp -i eth1 --dport 80 -j DNAT --to-destination 10.10.0.2:443
O fim!
Isso, como já falei, é iptables, você pode aplicar o que já é conhecido para que o servidor faça exatamente o que você deseja
Saudações!