# Como obter um IP brasileiro em um servidor VPS sem gastar muito

É inegável que os impostos no Brasil podem encarecer significativamente os serviços de Datacenter, pois a manutenção no país uma é opção bem mais "salgada" que em outros. Como consequência, os provedores muitas vezes repassam esses custos para os serviços de VPS e infraestrutura de hospedagem no Brasil, resultando em preços elevados para os clientes. A vantagem de optar por uma VPN é que seu servidor não precisa necessariamente estar localizado no território brasileiro.

Configurar uma VPN em um servidor VPS pode parecer uma tarefa desafiadora para muitos, mas não precisa ser uma dor de cabeça. Com algumas etapas simples, você pode ter seu servidor teoricamente no Brasil, pelo menos é o que as pessoas vão pensar 😅.

Este artigo parte do pressuposto de que o leitor já conhece os termos **VPS** e **VPN**, porém, mesmo assim, farei um breve resumo. Uma VPS é uma instância de um servidor físico, enquanto uma VPN é um software que protege sua conexão através de criptografia, assegurando a segurança do tráfego de dados e a privacidade.

## Por que usamos uma VPN nessa solução?

Uma VPN pode ser utilizada em diversos cenários e pode ser facilmente substituída por um servidor proxy, caso seja necessário por exemplo fazer requisições em um site que permita apenas IP brasileiro. Embora pudesse ter optado por um proxy, alguns fatores externos me impediram de fazê-lo. No meu caso eu precisava de uma solução completa de disparos de E-mail, que obrigatoriamente demandava um IP brasileiro. Neste post, vamos focar no uso da VPN para alterar o IP da rede do servidor.

## Instalando e configurando uma VPN no Linux com OpenVPN e NordVPN

Vamos ao que realmente interessa! Primeiro, escolha um servidor VPS confiável. Neste caso, utilizaremos o serviço da **NordVPN** e uma VPS com **Ubuntu 22**, e estarei logado na máquina via **SSH**.

Abaixo, eu fiz uma requisição para o site [ipinfo.io](http://ipinfo.io) com o **cURL**. Acho esse site muito interessante, pois ele reconhece que é uma requisição *Headless* e me responde com um JSON, como o exemplo abaixo, onde é possível visualizar o IP e a localização da minha VPS:

```json
{
  "ip": "143.198.69.202",
  "city": "Santa Clara",
  "region": "California",
  "country": "US",
  "loc": "37.3924,-121.9623",
  "org": "AS14061 DigitalOcean, LLC",
  "postal": "95054",
  "timezone": "America/Los_Angeles",
  "readme": "https://ipinfo.io/missingauth"
}
```

Agora vamos iniciar a instalação da VPN na máquina, obviamente vamos precisar de um cliente VPN, e vamos usar o OpenVPN.

Primeiro faça a instalação do OpenVPN:

```bash
sudo apt update
sudo apt-get install openvpn
```

Entre na pasta de configuração do OpenVPN e faça o download dos arquivos de configuração, a vantagem aqui é que a NordVPN já oferece esses arquivos prontos.

```bash
cd /etc/openvpn && sudo wget https://downloads.nordcdn.com/configs/archives/servers/ovpn.zip
```

Descompacte o arquivo baixado e, caso não tenha o **unzip** instalado, instale-o com o comando abaixo:

```bash
sudo apt-get install unzip
```

E finalmente faça a extração dos arquivos:

```bash
sudo unzip ovpn.zip
```

Ao acessar o conteúdo baixado, você encontrará duas pastas: "ovpn\_tcp" e "ovpn\_udp". Para este caso específico, vamos utilizar o protocolo **TCP**, presente na primeira pasta.

## Escolhendo um IP brasileiro

Para obter o endereço IP que você precisa, basta abrir o link: [https://nordvpn.com/pt-br/servers/tools/](https://nordvpn.com/pt-br/servers/tools/). Neste site, eles irão te recomendar um servidor, mas você também pode escolher a localização que mais lhe convém.

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1689190265356/2d265979-28f1-4d5c-b30e-4af1fe8add6e.png align="center")

## Configurando a VPS

Antes de prosseguir, é importante fazer algumas configurações na rede da VPS. Caso contrário, você corre o risco de perder a conexão e seu terminal poderá travar, deixando-o preso do lado de fora, incapaz de realizar qualquer ação. Nessa situação, a única solução seria reiniciar sua VPS através do console do provedor.

![](https://media.giphy.com/media/2WxWfiavndgcM/giphy.gif align="center")

Para evitar esse problema, execute os seguintes comandos em sua VPS:

```bash
sudo apt-get install net-tools ipcalc
```

Esse comando é fundamental para instalar duas ferramentas importantes que serão essenciais para seguir os próximos passos.

Este comando adiciona uma regra de roteamento na tabela 128 para pacotes originados do endereço IP principal da máquina e também cria uma rota padrão na tabela 128, utilizando o gateway padrão.

```bash
sudo ip rule add from $(hostname -I | awk '{print $1}') table 128 && \
sudo ip route add table 128 default via $(ip route show default | awk '/default/ {print $3}')
```

Agora vamos pegar a subnet mask para também incluí-la nas configurações:

```bash
ipcalc $(ip addr show dev eth0 | awk '/inet / {print $2}' | head -n 1) | awk -F': ' '/Netmask/ {print $2}' | head -n 1
```

Esse comando mostrará uma saída como essa:

```bash
255.255.240.0 = 20   11111111.11111111.1111 0000.00000000
```

Então minha subnet mask é `255.255.240.0/20`.

Agora adicione...

```bash
sudo ip route add table 128 to 255.255.240.0/20 dev eth0
```

## Conectando-se na VPN

Agora copie o endereço fornecido pela **NordVPN**, adicione o protocolo e .ovpn na frente e execute o arquivo de configuração com o **OpenVPN**.

```bash
sudo openvpn --config br53.nordvpn.com.tcp.ovpn --daemon
```

Nesse exemplo, estamos executando o arquivo de configuração da **NordVPN**, mas poderia ser um arquivo de outro provedor ou do seu próprio servidor **VPN**.

### Autenticando-se na VPN

Reparou que foi solicitado usuário e senha para autenticação? Vamos obter essas credenciais diretamente na **NordVPN**.

Clique no menu lateral esquerdo e vá para "**Serviços**" ➡️ "**NordVPN**" ➡️ "**Configurar a NordVPN manualmente**". Faça a verificação usando o código enviado para o seu e-mail e, finalmente, encontre suas credenciais de usuário e senha.

Está pronto. 🚀 Agora ao executar o comando `curl ipinfo.io` você terá uma saída confirmando a localização.

```bash
{
  "ip": "177.54.151.190",
  "city": "São Paulo",
  "region": "São Paulo",
  "country": "BR",
  "loc": "-23.5475,-46.6361",
  "org": "AS262287 Latitude.sh LTDA",
  "postal": "01000-000",
  "timezone": "America/Sao_Paulo",
  "readme": "https://ipinfo.io/missingauth"
}
```

## Resumo

Certamente! É importante lembrar que essa é uma solução para problemas específicos, e dependendo das circunstâncias, podem ser necessárias configurações adicionais para atender às suas necessidades específicas.

Compartilhar experiências e conhecimentos é fundamental para aprimorar soluções e ajudar uns aos outros. Se você conhece uma solução melhor ou se essa solução funcionou para você, compartilhe nos comentários! Isso pode beneficiar outros usuários e enriquecer a discussão.

Referências:

[https://support.nordvpn.com/Connectivity/Linux/1047409422/Connect-to-NordVPN-using-Linux-Terminal.htm](https://support.nordvpn.com/Connectivity/Linux/1047409422/Connect-to-NordVPN-using-Linux-Terminal.htm)
