Capítulo 5. Configuração de rede

# Capítulo 5. Configuração de rede

| Dica
Para um guia moderno específico Debian sobre rede, veja O Livro de Mão do Administrador Debian — Configurar a Rede.

| Dica
Sob systemd, pode ser usado o networkd para gerir as redes. Veja `systemd-networkd`(8).

## 5.1. A infra-estrutura de rede básica

Vamos rever a infra-estrutura básica de rede do sistema Debian moderno.

Tabela 5.1. Lista de ferramentas de configuração de rede

pacotes | popcon | tamanho | tipo | descrição
--- | --- | --- | --- | ---
`network-manager` | V:421, I:484 | 7805 | config::NM | NetworkManager (daemon): gere a rede automaticamente
`network-manager-gnome` | V:53, I:197 | 18 | config::NM | NetworkManager (frontend do GNOME)
`netplan.io` | V:1, I:7 | 340 | config::NM+networkd | Netplan (gerador): Interface unificada e declarativa para os backends NetworkManager e systemd-networkd
`ifupdown` | V:619, I:973 | 201 | config::ifupdown | ferramenta standard para ativar e desativar a rede (especifico de Debian)
`isc-dhcp-client` | V:169, I:707 | 2884 | config::low-level | Cliente DHCP
`pppoeconf` | V:0, I:4 | 174 | config::helper | ajudante de configuração para ligação PPPoE
`wpasupplicant` | V:399, I:529 | 3901 | config::helper | suporte de cliente para WPA e WPA2 (IEEE 802.11i)
`wpagui` | V:0, I:1 | 784 | config::helper | Cliente GUI Qt para o wpa_supplicant
`wireless-tools` | V:192, I:264 | 292 | config::helper | ferramentas para manipular Extensões Wireless do Linux
`iw` | V:38, I:490 | 332 | config::helper | ferramenta para configuração de dispositivos sem fios Linux
`iproute2` | V:756, I:984 | 4122 | config::iproute2 | iproute2, IPv6 e outras configurações avançadas de rede: `ip`(8), `tc`(8), etc
`iptables` | V:353, I:629 | 2410 | config::Netfilter | ferramentas administrativas para filtragem de pacotes e NAT (Netfilter)
`nftables` | V:212, I:850 | 191 | config::Netfilter | ferramentas de administração para filtragem de pacotes e NAT (Netfilter) (sucessor de {ip,ip6,arp,eb}tables)
`iputils-ping` | V:195, I:997 | 188 | teste | teste de acessibilidade de rede de uma máquina remota pelo nome-de-máquina ou endereço IP (iproute2)
`iputils-arping` | V:1, I:19 | 53 | teste | teste de acessibilidade de rede de uma máquina remota especificado pelo endereço ARP
`iputils-tracepath` | V:2, I:21 | 50 | teste | rastreia o caminho de rede até uma máquina remota
`ethtool` | V:93, I:250 | 1077 | teste | mostra ou altera as definições de um aparelho Ethernet
`mtr-tiny` | V:4, I:39 | 181 | test::low-level | rastreia o caminho de rede até uma máquina remota (curses)
`mtr` | V:4, I:40 | 230 | test::low-level | rastreia o caminho de rede até uma máquina remota (curses e GTK)
`gnome-nettool` | V:0, I:10 | 2480 | test::low-level | ferramentas para operações comuns de informação de rede (GNOME)
`nmap` | V:25, I:185 | 4607 | test::low-level | mapeamento de rede / sondagem de portos (Nmap, consola)
`tcpdump` | V:16, I:166 | 1343 | test::low-level | analisador de tráfego de rede (Tcpdump, consola)
`wireshark` | V:2, I:41 | 11267 | test::low-level | analisador de tráfego de rede (Wireshark, GTK)
`tshark` | V:2, I:23 | 438 | test::low-level | analisador de tráfego de rede (consola)
`tcptrace` | V:0, I:1 | 407 | test::low-level | produz um sumário das ligações a partir da saída do `tcpdump`
`ntopng` | V:0, I:0 | 15604 | test::low-level | mostra a utilização da rede num navegador web
`dnsutils` | I:174 | 23 | test::low-level | clientes de rede disponibilizados com BIND: `nslookup`(8), `nsupdate`(8), `dig`(8)
`dlint` | V:0, I:2 | 51 | test::low-level | verifica informação de zona DNS a usar pesquisas do servidor de nomes
`dnstracer` | V:0, I:1 | 59 | test::low-level | rastreia uma cadeia de servidores DNS até à fonte

### 5.1.1. A resolução de nome de máquina

A resolução de nome de máquina também é suportada atualmente pelo mecanismo NSS (Name Service Switch). O fluxo desta resolução é o seguinte.

1. O ficheiro "`/etc/nsswitch.conf`" com "`hosts: files dns`" dicta a ordem de resolução do nome de máquina. (Isto substitui a funcionalidade antiga de "`order`" em "`/etc/host.conf`".)

2. O método `files` é invocado primeiro. Se o nome de máquina for encontrado no ficheiro "`/etc/hosts`", devolve um endereço válido e termina. (O ficheiro "`/etc/host.conf`" contém "`multi on`".)

3. O método `dns` é invocado. Se o nome de máquina é encontrado pela consulta ao Internet Domain Name System (DNS) identificado pelo ficheiro "`/etc/resolv.conf`", devolve-le um endereço válido e termina.

Uma estação de trabalho típica pode ser instalada com seu nome de host definido como, por exemplo, "host_name" e seu nome de domínio opcional definido como uma string vazia. Então, o "`/etc/hosts`" tem o seguinte aspeto.

    127.0.0.1 localhost
    127.0.1.1 host_name

    # The following lines are desirable for IPv6 capable hosts
    ::1     localhost ip6-localhost ip6-loopback
    ff02::1 ip6-allnodes
    ff02::2 ip6-allrouters

Cada linha começa por um endereço IP e é seguida pelo hostname associado.

O endereço IP `127.0.1.1` na segunda linha deste exemplo pode não ser encontrada nalguns outros sistemas tipo-Unix. O Instalador Debian cria esta entrada para um sistema sem um endereço IP permanente como contenção para algum software (p.e., GNOME) conforme é documentado no bug #719621.

O host_name corresponde ao nome de anfitrião definido no ficheiro "`/etc/hostname`" (ver Seção 3.8.1, “O nome da máquina”).

Para um sistema com um endereço IP permanente, esse endereço IP permanente deve ser utilizado aqui em vez do `127.0.1.1`.

Para um sistema com um endereço IP permanente e um nome de domínio totalmente qualificado (FQDN) disponibilizado pelo Sistema de Nomes de Domínio (DNS), o nome_máquina e nome_domínio canónicos devem ser utilizados em vez de apenas nome_máquina.

O "`/etc/resolv.conf`" é um ficheiro estático se o pacote `resolvconf` não estiver instalado. Se instalado, é uma ligação simbólica. De qualquer modo, contém informação que inicializa as rotinas de resolução de nomes. Se o DNS existir no IP="`192.168.11.1`", contém o seguinte.

    nameserver 192.168.11.1

O pacote `resolvconf` faz deste "`/etc/resolv.conf`" uma ligação simbólica e gere o conteúdo dele automaticamente pelos scripts hook.

Para a estação de trabalho PC no ambiente típico de LAN adhoc, o nome do anfitrião pode ser resolvido através do Multicast DNS (mDNS), para além dos métodos básicos de `files` e `dns`.

- Avahi disponibiliza uma infraestrutura para Multicast DNS Service Discovery em Debian.

- É o equivalente de Apple Bonjour / Apple Rendezvous.

- O pacote de plugin `libnss-mdns` disponibiliza resolução de nomes de máquinas via mDNS para a funcionalidade Name Service Switch (NSS) do GNU da Biblioteca C do GNU (glibc).

- O ficheiro "`/etc/nsswitch.conf`" deve ter uma estrofe como "`hosts: files mdns4_minimal [NOTFOUND=return] dns`" (veja `/usr/share/doc/libnss-mdns/README.Debian` para outras configurações).

- Um nome de anfitrião sufixado com o pseudo-domínio de topo ".local" é resolvido enviando uma mensagem de consulta mDNS num pacote UDP multicast utilizando o endereço IPv4 "`224.0.0.251`" ou o endereço IPv6 "`FF02::FB`".

| Nota
A expansão Top-Level Domains genéricos (gTLD) no Domain Name System está em desenvolvimento. Tenha cuidado com a colisão de nomes quando escolher um nome de domínio usado apenas dentro da LAN.

| Nota
O uso de pacotes como o `libnss-resolve` em conjunto com o `systemd-resolved`, ou `libnss-myhostname`, ou `libnss-mymachine`, com listagens correspondentes na linha`"hosts`" no ficheiro`"/etc/nsswitch.conf`" pode sobrepor-se à configuração de rede tradicional discutida em cima. Veja `nss-resolve`(8), `systemd-resolved`(8), `nss-myhostname`(8), e `nss-mymachines`(8) para mais informação.

### 5.1.2. O nome da interface de rede

O systemd usa "Predictable Network Interface Names" como "`enp0s25`".

### 5.1.3. A gama de endereços de rede para a LAN

Vamos nos lembrar das gamas de endereços do IPv4 de 32 bits em cada classe reservada para utilização em redes de área local (LANs) pelo rfc1918. É garantido que estes endereços não estejam em conflito com quaisquer endereços na Internet.

| Nota
Os endereços IP escritos com dois pontos são endereços IPv6, por exemplo, "`::1`" para `localhost`.

Tabela 5.2. Lista de gamas de endereços de rede

Classe | endereços de rede | máscara de rede | máscara de rede /bits | número de sub-redes
--- | --- | --- | --- | ---
A | 10.x.x.x | 255.0.0.0 | /8 | 1
B | 172.16.x.x — 172.31.x.x | 255.255.0.0 | /16 | 16
C | 192.168.0.x — 192.168.255.x | 255.255.255.0 | /24 | 256

| Nota
Se for atribuído um destes endereços a uma máquina, então essa máquina não poderá aceder à Internet directamente mas terá de aceder através de uma gateway que age como um proxy para serviços individuais ou então fará Network Address Translation(NAT). O router de banda larga geralmente executa NAT para o ambiente LAN do consumidor.

### 5.1.4. O suporte a aparelhos de rede

Apesar da maioria dos aparelhos de hardware serem suportados pelo sistema Debian, existem alguns aparelhos de rede que necessitam de firmware não-livre DFSG para os suportar. Por favor veja Seção 9.10.5, “Controladores de hardware e firmware”.

## 5.2. A configuração moderna de rede para desktop

As interfaces de rede são tipicamente iniciadas em "`networking.service`" para a interface `lo` e "`NetworkManager.service`" para as outras interfaces em sistemas Debian modernos sob `systemd`.

Debian pode gerir a ligação de rede através de software daemon de gestão como o NetworkManager (NM) (gestor de rede e pacotes associados).

- Vêm com as suas próprias GUIs e programas de linha de comandos como as suas interfaces de utilizador.

- Vêm com os daemons próprios como os backends deles.

- Permitem uma ligação fácil do seu sistema à Internet.

- Permitem gestão fácil de configuração de redes com e sem fios.

- Permitem-nos configurar a rede independentemente do pacote legacy `ifupdown`.

| Nota
Não utilize estas ferramentas de configuração de rede automáticas em servidores. Estas são destinadas principalmente para os utilizadores móveis em portáteis.

Estas ferramentas modernas de configuração de rede necessitam ser correctamente configuradas para evitar entrarem em conflito com o pacote legacy `ifupdown` e o ficheiro de configuração dele "`/etc/network/interfaces`".

### 5.2.1. Ferramentas GUI de configuração de rede

As documentações oficiais para o NM em Debian são disponibilizadas em "`/usr/share/doc/network-manager/README.Debian`".

Essencialmente, a configuração de rede para desktop é feita como a seguir.

1. Tornar o utilizador de ambiente de trabalho, p.e. `foo`, pertencente ao grupo "`netdev`" com o seguinte (Em alternativa, em ambientes de trabalho modernos como o GNOME e o KDE, faça-o automaticamente através de D-bus).

       $ sudo usermod -a -G netdev foo

2. Mantenha a configuração de "`/etc/network/interfaces`" tão simples como o seguinte.

       auto lo
       iface lo inet loopback

3. Reinicie o NM da seguinte forma.

       $ sudo systemctl restart NetworkManager

4. Configure a sua rede através da GUI.

| Nota
Apenas as interfaces que não estão listadas em "`/etc/network/interfaces`" são geridas pelo NM para evitar conflitos com o `ifupdown`.

| Dica
Se desejar estender as capacidades de configuração de rede do NM, por favor procure módulos plug-in apropriados e pacotes suplementares como os `network-manager-openconnect`, `network-manager-openvpn-gnome`, `network-manager-pptp-gnome`, `mobile-broadband-provider-info`, `gnome-bluetooth`, etc.

## 5.3. A moderna configuração de rede sem GUI

Sob systemd, a rede pode ser configurada em `/etc/systemd/network/`. Veja `systemd-resolved`(8), `resolved.conf`(5) e `systemd-networkd`(8).

Isto permite a configuração moderna de rede sem GUI.

Uma configuração de cliente DHCP pode ser definida ao criar `/etc/systemd/network/dhcp.network`". Ex.:

    [Match]
    Name=en*

    [Network]
    DHCP=yes

Uma configuração de rede estática pode ser definida ao criar "`/etc/systemd/network/static.network`". Ex.:

    [Match]
    Name=en*

    [Network]
    Address=192.168.0.15/24
    Gateway=192.168.0.1

## 5.4. A configuração moderna de rede para nuvem

A configuração de rede moderna para a nuvem pode usar os pacotes `cloud-init` e `netplan.io` (ver Seção 3.8.4, “Inicialização do sistema de nuvem”).

O pacote `netplan.io` suporta `systemd-networkd` e `NetworkManager` como seus backends de configuração de rede, e permite a configuração de rede usando dados YAML. Quando você altera o YAML:

- Execute o comando "`netplan generate`" para gerar toda a configuração de backend necessária a partir de YAML.

- Execute o comando "`netplan apply`" para aplicar a configuração gerada aos backends.

Veja "Documentação Netplan", `netplan`(5), `netplan-generate`(8) e `netplan-apply`(8).

Consulte também "Documentação de Inicialização na Nuvem" (especialmente em "Fontes de configuração" e "Netplan Passthrough") para saber como o `cloud-init` pode integrar a configuração do `netplan.io` com fontes de dados alternativas.

### 5.4.1. A configuração moderna de rede para nuvem com DHCP

A configuração de um cliente DHCP pode ser definida através da criação de um ficheiro de dados "`/etc/netplan/50-dhcp.yaml`":

    network:
      version: 2
      ethernets:
        all-en:
          match:
            name: "en*"
          dhcp4: true
          dhcp6: true

### 5.4.2. A configuração moderna de rede para nuvem com IP estático

Uma configuração de rede estática pode ser definida através da criação de um ficheiro de dados"`/etc/netplan/50-static.yaml`":

    network:
      version: 2
      ethernets:
        eth0:
          addresses:
            - 192.168.0.15/24
          routes:
            - to: default
              via: 192.168.0.1

### 5.4.3. A configuração moderna de rede para nuvem com Network Manager

A configuração do cliente de rede utilizando a infraestrutura do Network Manager pode ser definida através da criação de um ficheiro de dados "`/etc/netplan/00-network-manager.yaml`":

    network:
      version: 2
      renderer: NetworkManager

## 5.5. A configuração de rede de baixo nível

Para a configuração de rede de baixo nível no Linux, use os programas iproute2 (`ip`(8), ...) .

### 5.5.1. Comandos iproute2

Os comandos Iproute2 oferecem capacidades completas de configuração de rede de baixo nível. Aqui está uma tabela de traduções dos comandos net-tools obsoletos para os novos comandos iproute2 etc.

Tabela 5.3. Tabela de tradução dos comandos obsoletos `net-tools` para os novos comandos `iproute2`

ferramentas de rede obsoletas | novo iproute2 etc. | manipulação
--- | --- | ---
`ifconfig`(8) | `ip addr` | endereço de protoco (IP ou IPv6) num aparelho
`route`(8) | `ip route` | entrada na tabela de rotas
`arp`(8) | `ip neigh` | entrada na cache ARP ou NDISC
`ipmaddr` | `ip maddr` | endereço multicast
`iptunnel` | `ip tunnel` | túnel sobre IP
`nameif`(8) | `ifrename`(8) | nomeia as interfaces de rede baseadas no endereço MAC
`mii-tool`(8) | `ethtool`(8) | Definições de aparelho Ethernet

Ver `ip`(8) e Encaminhamento avançado Linux & Controlo de Tráfego.

### 5.5.2. Operações de rede seguras de baixo nível

Pode usar comandos de rede de baixo nível como a seguir em segurança pois eles não mudam a configuração de rede.

Tabela 5.4. Lista de comandos de rede de baixo nível

comando | descrição
--- | ---
`ip addr show` | mostra o estado de ligação e endereço das interfaces ativas
`route -n` | mostra toda a tabela de rotas em endereços numéricos
`ip route show` | mostra toda a tabela de rotas em endereços numéricos
`arp` | mostra o conteúdo atual das tabelas de cache ARP
`ip neigh` | mostra o conteúdo atual das tabelas de cache ARP
`plog` | mostra o log do daemon ppp
`ping yahoo.com` | verifica a ligação de Internet para "`yahoo.com`"
`whois yahoo.com` | verifica quem registou "`yahoo.com`" na base de dados de domínios
`traceroute yahoo.com` | rastreia a ligação Internet até "`yahoo.com`"
`tracepath yahoo.com` | rastreia a ligação Internet até "`yahoo.com`"
`mtr yahoo.com` | rastreia a ligação Internet até "`yahoo.com`" (repetidamente)
`dig [@servidor-dns.com] exemplo.com [{a|mx|any}]` | verifica os registos DNS de "`exemplo.com`" pelo "`servidor-dns.com`" para um registo "`a`", "`mx`", ou "`any`"
`iptables -L -n` | verifica o filtro de pacotes
`netstat -a` | procura todos os portos abertos
`netstat -l --inet` | procura portos a escutar
`netstat -ln --tcp` | procura portos TCP a escutar (numérico)
`dlint exemplo.com` | verifica a informação da zona DNS de "`exemplo.com`"

| Dica
Algumas destas ferramentas de configuração de baixo nível residem em "`/usr/sbin/`". Pode necessitar de escrever o caminho do comando completo tal como "`/usr/sbin/ifconfig`" ou adicionar "`/usr/sbin`" à lista "`$PATH`" no seu "`~/.bashrc`".

## 5.6. Optimização da rede

A optimização de rede genérica está para além do objetivo desta documentação. Apenas toco em assuntos pertinentes às ligações de grau de consumidor.

Tabela 5.5. Lista de ferramentas de optimização de rede

pacotes | popcon | tamanho | descrição
--- | --- | --- | ---
`iftop` | V:6, I:88 | 93 | mostra informação da utilização de largura de banda numa interface de rede
`iperf` | V:2, I:35 | 427 | ferramenta de medição da largura de banda do Protocolo Internet
`ifstat` | V:0, I:5 | 52 | InterFace STATistics Monitoring
`bmon` | V:1, I:20 | 141 | monitor de largura de banda portável e estimador de taxas
`ethstatus` | V:0, I:2 | 41 | script que mede rapidamente a transferência efectiva de um aparelho de rede
`bing` | V:0, I:0 | 80 | testador de largura de banda empírica estocástica
`bwm-ng` | V:1, I:10 | 95 | monitor de largura de banda pequeno e simples baseado em consola
`ethstats` | V:0, I:0 | 21 | monitor de estatísticas de Ethernet baseado em consola
`ipfm` | V:0, I:0 | 78 | ferramenta de análise de largura de banda

### 5.6.1. Encontrar o MTU óptimo

Normalmente, o NM define automaticamente a Unidade Máxima de Transmissão (MTU) ideal.

Nalgumas ocasiões, pode desejar definir o MTU manualmente após experiências com o `ping`(8) com a opção "`-M do`" para enviar um pacote ICMP com vários tamanhos de pacotes de dados. MTU é o tamanho máximo do pacote de dados sucessivo sem fragmentação de IP mais 28 bytes para o IPv4 e mais 48 bytes para o IPv6. Por exemplo, o seguinte indica que a MTU da ligação IPv4 é 1460 e a MTU da ligação IPv6 é 1500.

    $ ping -4 -c 1 -s $((1500-28)) -M do www.debian.org
    PING  (149.20.4.15) 1472(1500) bytes of data.
    ping: local error: message too long, mtu=1460

    ---  ping statistics ---
    1 packets transmitted, 0 received, +1 errors, 100% packet loss, time 0ms

    $ ping -4 -c 1 -s $((1460-28)) -M do www.debian.org
    PING  (130.89.148.77) 1432(1460) bytes of data.
    1440 bytes from klecker-misc.debian.org (130.89.148.77): icmp_seq=1 ttl=50 time=325 ms

    ---  ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 325.318/325.318/325.318/0.000 ms
    $ ping -6 -c 1 -s $((1500-48)) -M do www.debian.org
    PING www.debian.org(mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e)) 1452 data bytes
    1460 bytes from mirror-csail.debian.org (2603:400a:ffff:bb8::801f:3e): icmp_seq=1 ttl=47 time=191 ms

    --- www.debian.org ping statistics ---
    1 packets transmitted, 1 received, 0% packet loss, time 0ms
    rtt min/avg/max/mdev = 191.332/191.332/191.332/0.000 ms

Este processo é a descoberta do Caminho MTU (PMTU) (RFC1191) e o comando `tracepath`(8) pode automatizar isto.

Tabela 5.6. Regras básicas para o valor MTU óptimo

ambiente de rede | MTU | racional
--- | --- | ---
Ligação Dial-up (IP: PPP) | 576 | standard
Ligação Ethernet (IP: DHCP ou fixo) | 1500 | standard e predefinido

Adicionalmente a estas regras básicas, deve saber o seguinte.

- Qualquer utilização de métodos de túnel (VPN etc.) pode reduzir o MTU óptimo pelo excesso que adicionam.

- O valor MTU não deve exceder o valor PMTU determinado experimentalmente.

- O maior valor MTU é geralmente melhor quando são conhecidas outras limitações.

O tamanho de segmento máximo (MSS) é usado como uma alternativa ao tamanho do pacote. As relações entre MSS e MTU são as seguintes.

- MSS = MTU - 40 para IPv4

- MSS = MTU - 60 para IPv6

| Nota
A optimização baseada no `iptables`(8) (veja Seção 5.7, “Infraestrutura netfilter”) pode apertar o tamanho do pacote pelo MSS e é útil para o router. Veja "TCPMSS" em `iptables`(8).

### 5.6.2. Optimização WAN TCP

A taxa de transferência TCP pode ser maximizada ajustando os parâmetros de tamanho do buffer TCP como em "TCP tuning" para a moderna WAN de alta largura de banda e alta latência. Até agora, as configurações padrão atuais do Debian servem bem até mesmo para minha LAN conectada pelo rápido serviço FTTP de 1G bps.

## 5.7. Infraestrutura netfilter

Netfilter disponibiliza uma infra-estrutura para firewall de estado e tradução de endereços de rede (NAT) com módulos do kernel Linux (veja Seção 3.10, “A inicialização de módulos do kernel”).

Tabela 5.7. Lista de ferramentas de firewall

pacotes | popcon | tamanho | descrição
--- | --- | --- | ---
`nftables` | V:212, I:850 | 191 | ferramentas de administração para filtragem de pacotes e NAT (Netfilter) (sucessor de {ip,ip6,arp,eb}tables)
`iptables` | V:353, I:629 | 2410 | ferramentas de administração para netfilter (`iptables`(8) para IPv4, `ip6tables`(8) para IPv6)
`arptables` | V:0, I:1 | 102 | ferramentas de administração para netfilter (`arptables`(8) para ARP)
`ebtables` | V:14, I:24 | 276 | ferramentas de administração para netfilter (`ebtables`(8) para criação de pontes Ethernet)
`iptstate` | V:0, I:1 | 122 | monitoriza continuamente o estado do netfilter (semelhante ao `top`(1))
`ufw` | V:73, I:99 | 859 | Uncomplicated Firewall (UFW) é um programa para gerir filtros de pacotes de rede
`gufw` | V:5, I:10 | 3663 | interface gráfica do utilizador para a Uncomplicated Firewall (UFW)
`firewalld` | V:16, I:24 | 2482 | O firewalld é um programa de filtro de pacotes gerido dinamicamente com suporte para zonas de rede
`firewall-config` | V:0, I:3 | 1076 | interface gráfica do utilizador para o firewalld
`shorewall-init` | V:0, I:0 | 88 | Inicialização de Shoreline Firewall
`shorewall` | V:2, I:5 | 3090 | Shoreline Firewall, gerador de ficheiro de configuração netfilter
`shorewall-lite` | V:0, I:0 | 71 | Shoreline Firewall, gerador de ficheiro de configuração (versão leve) netfilter
`shorewall6` | V:0, I:1 | 1334 | Shoreline Firewall, gerador de ficheiro de configuração (versão IPv6) netfilter
`shorewall6-lite` | V:0, I:0 | 71 | Shoreline Firewall, gerador de ficheiro de configuração (IPv6, versão light) netfilter

O principal programa de utilizador para o netfilter é o `iptables`(8). Pode configurar manualmente e interativamente o netfilter a partir da shell, gravar o estado dele com `iptables-save`(8) e restaurá-lo via script init com `iptables-restore`(8) após o reiniciar do sistema.

Scripts de ajuda de configuração como o shorewall facilitam este processo.

Ver documentação em Documentação Netfilter (ou em "`/usr/share/doc/iptables/html/`").

- Manual de Conceitos de Rede em Linux

- Manual do Packet Filtering em Linux 2.4

- Como Fazer NAT em Linux 2.4

| Dica
Apesar destes terem sido escritos para o Linux 2.4, ambos comandos `iptables`(8) e função de kernel netfilter aplicam-se às séries 2.6 e 3.x do kernel Linux.

Capítulo 4. Autenticação e controlos de acesso |  | Capítulo 6. Aplicações de rede