Os primeiros passos com freeRouter
Tags: freerouter, network, tutorial
Published: 2022-10-06 16:20:57

## **Sobre** 

freeRouter é definido como um roteador livre e grátis, também é um canivete suíço de rede, ele é desenvolvido para suportar protocolos de roteamento, cripto, encaminhamento, encapsulamento e túnel. freeRouter não trabalha com roteamento global, cada interface roteada deve estar em uma tabela de roteamento virtual.

## Começo

### Requisitos

- Requisitos é ter um sistema operacional com o java instalado.

### Instalação

A maneira mais fácil de rodar o freeRouter é ele virtualizado em um jar.

Porém existem outras maneiras, já que isso é necessário para os testes que só possam serem executados em um ambiente específico.

As outras maneiras são:

- Rodando em uma VM.
- Rodando em uma VM na nuvem.
- Rodando em um equipamento físico.

### Observações
- Neste tutorial, vamos rodar o freeRouter através de um jar, nos outros casos, a instalação ocorre através de um script de instalação, recomendo não fazer isso em sua máquina, pois o freeRouter toma conta da sua máquina e você perde seu sistema.

- A maneira através do jar é segura também, já que estaremos isolando um ambiente da sua máquina, ou seja, emulado.

### Rodando o freeRouter em um arquivo jar.

#### Linux
##### Instalando o java

```
$ sudo apt-get install default-jre-headless --no-install-recommends

```

##### Baixando o arquivo .jar

```
# wget freertr.org/rtr.jar
```

Agora vamos montar uma topologia linear com dois roteadores freeRouter rodando e configurando uma conexão entre duas interfaces ethernet.

### Topology

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/5gc588b2ncuthrkz8jpb.png)

### Criando arquivos da configuração da topologia

#### R1-HW.txt
```
$ sudo nano r1-hw.txt
```
```
int eth1 ethernet 0000.1111.0001 127.0.0.1 26011 127.0.0.1 26021
tcp2vrf 1123 v1 23
```
- Isto é necessário, para determinar que você terá uma interface ethernet1 do tipo Ethernet com um endereço físico definido, porém você acaba definindo esta configuração de uma maneira lógica, a outra parte é a ligação da sua interface via uma porta, ou seja, sua interface é ligada via sockets para uma outra ponta que será uma outra interface que você definir, no caso do nosso tutorial. O tcp2vrf vai fazer uma ligação entre uma porta da nossa máquina host para uma porta utilizada dentro do nosso roteador, nesse caso como estaremos utilizando o serviço de acesso via telnet, precisaremos dessa configuração para acessar via nossa rede local.

#### R1-SW.txt
```
$ sudo nano r1-sw.txt
```
```
hostname r1
buggy
!
logging file debug ../binTmp/zzz39r1-log.run
!
vrf definition v1
 exit
!
interface ethernet1
 vrf for v1
 ipv4 address 1.1.1.1 255.255.255.0
 no shutdown
 no log-link-change
 exit
!
!
server telnet tester
 security protocol telnet
 no exec authorization
 no login authentication
 vrf v1
 exit
!
!
end

```
- Aqui definimos várias configurações de software, primeiro o hostname que será o nome que ele vai atribuir ao seu roteador, a vrf, que vai criar uma tabela de roteamento separada para o nosso uso, a interface ethernet1 com as configurações de vrf forwarding definidas, o endereçamento IPv4 e que esta interface vai está ligada, e por último o server telnet para ter o acesso ao roteador.

#### R2-HW.txt
```
$ sudo nano r2-hw.txt
```
```
int eth1 ethernet 0000.2222.0001 127.0.0.1 26021 127.0.0.1 26011
tcp2vrf 2223 v1 23
```
#### R2-SW.txt
```
$ sudo nano r2-sw.txt
```
```
hostname r2
buggy
!
logging file debug ../binTmp/zzz39r1-log.run
!
vrf definition v1
 exit
!
interface ethernet1
 vrf for v1
 ipv4 address 1.1.1.2 255.255.255.0
 no shutdown
 no log-link-change
 exit
!
!
server telnet tester
 security protocol telnet
 no exec authorization
 no login authentication
 vrf v1
 exit
!
!
end
```

### Executando o freeRouter

### Execute os dois roteadores  na sua pasta das configurações 
```
$ java -jar rtr.jar routersc r1-hw.txt r1-sw.txt
```
```
$ java -jar rtr.jar routersc r2-hw.txt r2-sw.txt
```

- R1

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4nj0ss2l4m276gpq49gm.png)


![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/ksv92fsdtcxuf493jg6j.png)


- R2

![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/asp5k5ap1ciji403j2ub.png)
![Image description](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/xcb0167wst8ipx70mfp0.png)


### Acesso aos roteadores
- Mesmo com o acesso a partir da execução do jar, é possível acessar o freeRouter através de um telnet, lembrando que na configuração sw.txt, definimos um server telnet através da porta 23 mapeando para a nossa máquina a porta 1123 e 2223.

- R1
```
$ telnet 127.0.0.1 1123
```

- R2
```
$ telnet 127.0.0.1 2223
```

## Teste de conectividade
- Faça um teste de conectividade simples entre as duas interfaces Ethernet:

- R1:
```
r1# ping 1.1.1.2 vrf v1 
```

- É esperado que seu ping funcione para a outra interface Ethernet:
```
pinging 1.1.1.2, src=null, vrf=v1, cnt=5, len=64, df=false, tim=1000, gap=0, ttl=255, tos=0, sgt=0, flow=0, fill=0, alrt=-1, sweep=false, multi=false
!!!!!
result=100.0%, recv/sent/lost/err=5/5/0/0, took 66, min/avg/max/dev rtt=0/1.2/4/2.1, ttl 255/255/255/0.0, tos 0/0.0/0/0.0
```

### Obrigado pela sua atenção pessoal. Em breve teremos vídeos sobre os tipos de conexões e outras soluções que o freeRtr entrega, e explicando alguma dessas configurações.

## Meus contatos
- **Email**: tetzdesen@gmail.com
- **Linkedin**: https://www.linkedin.com/in/gabriel-tetzner/
- **Github**: https://github.com/Tetzdesen