Pré-requisitos
- iptables instalado no seu VPS (já incluído na maioria dos casos)
- iproute2 (incluído em praticamente todas as distribuições recentes do Linux)
- Um kernel com suporte GRE (o Linux inclui isso por padrão - módulo do kernel ip_gre)
- Uma lista de portas que você precisa encaminhar para o seu destino
- Um VPS em nossa localização na Romênia para ter proteção DDOS
Configuração do túnel
Primeiro, precisamos configurar nosso túnel.
No seu Impreza VPS, execute os seguintes comandos:
echo 'net.ipv4.ip_forward=1' >> /etc/sysctl.conf sysctl -p iptunnel add gre1 mode gre local YOUR_FILTERED_IP remote DESTINATION_SERVER_IP ttl 255 ip addr add 192.168.168.1/30 dev gre1 ip link set gre1 up
No servidor remoto que você deseja proteger, execute o seguinte:
iptunnel add gre1 mode gre local DESTINATION_SERVER_IP remote YOUR_FILTERED_IP ttl 255 ip addr add 192.168.168.2/30 dev gre1 ip link set gre1 up
Observe a primeira linha de cada alteração para marcar qual IP usar localmente e remotamente. A 2ª linha documenta cada ponto final. Em um /30, 2 IP's são utilizáveis: .1 e .2.
Teste seu novo túnel GRE com Ping
No seu Impreza VPS, agora você deve conseguir fazer ping 192.168.168.2
.
Por uma questão de integridade, teste o ping 192.168.168.1
de seu servidor de destino.
Configurar Tabelas de Rotas de Origem
Source route entries are required to make sure data that came in via the GRE tunnel is sent back out the GRE tunnel.
As entradas de rota de origem são necessárias para garantir que os dados recebidos por meio do túnel GRE sejam enviados de volta para o túnel GRE.
Execute os seguintes comandos no servidor de destino.
echo '100 BUYVM' >> /etc/iproute2/rt_tables ip rule add from 192.168.168.0/30 table BUYVM ip route add default via 192.168.168.1 table BUYVM
Observe que o comando echo só precisa ser executado uma vez. A entrada será salva em /etc/iproute2/rt_tables até que você a remova manualmente.
Entradas NAT iniciais para mover dados pelo túnel GRE
No seu Impreza VPS, execute o seguinte comando:
iptables -t nat -A POSTROUTING -s 192.168.168.0/30 ! -o gre+ -j SNAT --to-source YOUR_FILTERED_IP
Testar conexões de saída
Em seu servidor de destino, você pode executar qualquer um dos seguintes comandos para verificar se o túnel está passando o tráfego corretamente:
curl http://www.cpanel.net/showip.cgi --interface 192.168.168.2
wget http://www.cpanel.net/showip.cgi --bind-address=192.168.168.2 -q -O -
O IP despejado deve ser o IP filtrado do seu VPS.
Encaminhando portas pelo seu túnel GRE
Execute os seguintes comandos no seu Impreza VPS:
iptables -t nat -A PREROUTING -d YOUR_FILTERED_IP -j DNAT --to-destination 192.168.168.2 iptables -A FORWARD -d 192.168.168.2 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
Se você deseja ser mais específico, pode adicionar:
-p tcp --dport 25565Se você quiser apenas proteger um servidor minecraft, por exemplo.
A primeira regra configura o encaminhamento de porta real e a segunda regra garante que as conexões recebam NAT e correspondam corretamente.
Neste ponto, você deve ser capaz de se conectar a
YOUR_FILTERED_IP
e a porta de destino com seu aplicativo e passar pelo túnel GRE sem problemas.Reiniciando seu túnel GRE após a reinicialização
Você pode editar /etc/rc.local
com o editor de sua preferência (ou mesmo WINSCP) e coloque todos os comandos que acabamos de executar antes do exit 0
na parte inferior.
Sua distribuição de escolha (como o Debian) pode ter ganchos em /etc/network/interfaces
para ativar seus túneis GRE no momento da inicialização, mas isso está fora do escopo deste guia.