> For the complete documentation index, see [llms.txt](https://mysther.gitbook.io/knowledge-base/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://mysther.gitbook.io/knowledge-base/sistemas-operacionais/linux/utilizacao/redes.md).

# Redes

### Placa de Rede

#### Comandos Básicos

```bash
# Comando útil quando não se tem o comando "ifconfig"
hostname -I # Retornando todos os IPs
hostname -i # Retornando somente um IP
ip a s

# Verifica todas as placas de rede ativas com suas informações
ifconfig

# Verifica todas as placas de rede ativas e inativas com suas informações
ifconfig -a
ip a


# Ativa a placa de rede eth0
ifconfig eth0 up

# Desativa a placa de rede eth0
ifconfig eth0 down


# Renomeia a placa de rede
ifconfig <nome_atua> down
ip link set <nome_atua> name <nome_novo>
ifconfig <nome_novo> up  


# Lista todos as placas sem fio
rfkill list

# Bloqueia a placa. Insira o "número" utilizando o comando acima
rfkill block <numero_placa>

# Desbloquieia a placa
rfkill unblock <numero_placa>
```

**OBS.:** Use `ifup eth0` e `ifdown eth0` ao invés de `ifconfig eth0 up` e `ifconfig eth0 down`, pois estes levarão em contas as alterações em `/etc/network/interfaces`. Já o `ifconfig` está obsoleto, pois toda sua configuração é temporário, então utilize o comando `ip` ao invés de `ifconfig`

#### Configurando IP Fixo/Dinâmico

Este método é temporário e será perdido quando reiniciar o SO ou o serviço `networking`.

```bash
# Coloca determinado IP fixo em determinada máscara de sub-rede
ifconfig <interface> <ip> netmask <mascara_de_subrede>
ifconfig eth0 <ip>/24

# Adicionando gateway
route add defaut gw <ip_gateway>

# Removendo configuração de Gateway
route del default
route del default gw <ip_gateway>

# Verificando o Gateway atual
route -n

# Apaga todo o arquivo resolv.conf e adiciona o IP
echo nameserver <ip_dns> > /etc/resolv.conf

# Mantém todo o arquivo resolv.conf e adiciona o IP
echo nameserver <ip_dns> >> /etc/resolv.conf
```

**OBS.:** Para voltar a ser um cliente DHCP, utilize o seguinte comando `dhclient eth0`.

Caso queira deixar fixo o IP mesmo depois de reiniciar o SO, edite o arquivo `/etc/network/interfaces` e insira (ou edite) as seguintes linhas:

```bash
# Configurando para pegar um IP via DHCP
auto <interface>
iface <interface> inet dhcp

# Configurando para deixar o IP fixo
auto <interface>
iface <interface> inet static
address <ip>
netmask <mascara_de_subrede>
gateway <ip_router>
```

#### Verificando o Gateway

```bash
/sbin/route
route -n
routel
```

###

### Gerenciando Conexões Wi-Fi

Vá no terminal e digite abaixo e vá seguindos passos.

```bash
nmtui
```

Outa maneira de ver as senhas, é acessando o arquivo abaixo (altere o SSID em nome). Com esse método é preciso ser root do SO.

```bash
sudo cat /etc/NetworkManager/system-connections/<SSID>.nmconnection
```

### Alterando MAC Address

Isso pode ser feito via GUI pelo próprio Linux, porém utilizando o `macchanger`, podemos fazer isso de forma automatizada

```bash
# Gerando um MAC Address customizado
macchanger -m <novo_mac> <interface_de_rede>

# Gerando um MAC Address aleatório
macchanger -r <interface_de_rede>

# Retornando o MAC Address original
macchanger -p <interface_de_rede>
```

###

### Monitoramento de Rede

#### Netstat

O netstat é uma das ferramentas mais utilizadas, pois é possível ver quais portas e seus respectivos serviços estão sendo utilizados, e também onde estão se conectando

```bash
netstat -ltunp
```

| **PARÂMETRO** | **DESCRIÇÃO**                                              |
| ------------- | ---------------------------------------------------------- |
| `-l`          | Exibe apenas o sockets que estão em modo listening         |
| `-t`          | Filtra por TCP                                             |
| `-u`          | Filtra por UDP                                             |
| `-n`          | Exibe a porta e não o nome do serviço que está em execução |
| `-p`          | Exibe o PID e o nome do programa                           |

#### ss

Essa ferramenta pode ser útil quando não temos o `netstat` instalado (o que é bem raro)

```bash
# Mostra todas as portas que estão em uso
ss -nlt
```

### Detalhes da Rede

```bash
ipcalc <ip_interno>/<mascara_de_subrede>
```

### TTL (Time do Live)

Tempo de vida do pacote IP, para que o pacote não fique para sempre vagando em uma rede. A cada `hop`, ou seja, cada vez que passa por um roteador, o TTL é decrementado, (removendo -1 do seu valor atual), até ficar com o valor 0 e assim o roteador descartar essa pacote.

Um simples `ping` é capaz de revelar o Sistema Operacional de uma máquina através do TTL, pois cada SO possui um valor TTL padrão. Veja a lista abaixo, levando em conta que pode ser um pouco diferente, mas normalmente o TTL será bem parecido ou igual:

| **TTL**                                                          | **SISTEMA OPERACIONAL** |
| ---------------------------------------------------------------- | ----------------------- |
| `Windows 95`                                                     | 32                      |
| <p><code>Windows 98, NT, 2k, 2003</code><br><br><br><br><br></p> | 128                     |
| `Linux`                                                          | Normalmente 64          |
| `Linux + iptables`                                               | Normalmente 255         |
| `FreeBSD`                                                        | 64                      |
| `Solaris`                                                        | 255                     |
| `Roteador Cyclades`                                              | Normalmente 30          |
| `UNIX`                                                           | 255                     |
| `Cisco`                                                          | Normalmente 254 ou 255  |
| `HP Jet Direct`                                                  | 60                      |

Em alguns casos pode dar um valor menor no TTL, (ex.: 49), então nesse caso, dê um `traceroute` (ou `tracert` caso esteja utilizando Windows) e veja quantos hops (saltos) esse servidor tem. Supondo que tenho 11 saltos, temos um TTL de 60 (49 + 11). O que mais se aproixima do 60 é o 64 (Linux).

Apesar desse conceito funcionar, ela não é 100% seguro, já que podemos alterar nosso TTL para gerar falsos positivos. O valor do TTL está salvo no arquivo `/proc/sys/net/ipv4/ip_default_ttl`, então basta editá-lo e colocar um valor equivalente ao de outro Sistema Operacional. Esse tipo de alteração é temporário e será desfeito assim que reiniciar a máquina. Porém caso queira deixar permanente, edite o arquivo `/etc/sysctl.conf` e adicione/edite a seguinte linha `net.ipv4.ip_default_ttl=<valor>` com o valor desejado.<br>

#### Tracert

Adionar informações em TTL. Note que usamos a opção `-U`, sendo que por padrão a requisição já utiliza a UDP, porem dessa maneira será utilizado a porta 53.

```bash
tracert -m -f -t -I -T -p <port> -U <ip>
```
