luiz@CyberInfra:~#

Sistemas Operacionais, Redes de Computadores, Cibersegurança...

Instalar pacotes binários

Primeiro é necessário exportar o caminho (PATH) para que o comando pkg_add encontre os pacotes necessário na Internet. Neste caso está sendo utilizada a versão 9.3 do NetBSD no PATH

nbsd# export PKG_PATH="http://cdn.netbsd.org/pub/pkgsrc/packages/NetBSD/amd64/9.3/All/"

Atenção nos testes não funcionou URL do repositório com HTTPS, só o HTTP. Neste caso basta trocar https para http na URL. Também é possível utilizar outros meios que não a Internet, tal como CD-ROM, etc.

Após configurar o caminho do repositório na Internet, vamos instalar o programa pkgin, que seria o equivalente a um apt-get do NetBSD.

nbsd# pkg_add pkgin

pkg_add: Warning: package `pkgin-22.10.0nb1' was built for a platform:
pkg_add: NetBSD/x86_64 9.0 (pkg) vs. NetBSD/x86_64 9.3 (this host)
pkg_add: Warning: package `pkg_install-20211115' was built for a platform:
pkg_add: NetBSD/x86_64 9.0 (pkg) vs. NetBSD/x86_64 9.3 (this host)
pkgin-22.10.0nb1: copying /usr/pkg/share/examples/pkgin/repositories.conf.example to /usr/pkg/etc/pkgin/repositories.conf

Com o pkgin instalado agora é possível utilizá-lo para por exemplo procurar algum pacote, tal como no exemplo a seguir:

nbsd# pkgin search apache
...
apache-2.4.56        Apache HTTP (Web) server, version 2.4
apache-ant-1.10.13nb1  Apache Project's Java-Based make(1) replacement
apache-ant-1.9.13    Java make(1) replacement
apache-ant-1.5.4nb2  "Apache Project's Java-Based make(1) replacement"
apache-cassandra-3.11.2nb3  Highly scalable, distributed structured key-value store
apache-cassandra-2.2.12nb3  Highly scalable, distributed structured key-value store
apache-ivy-2.5.0     "Apache Project's Java-Based agile dependency manager"
apache-maven-3.8.6   Apache Project's software project management and comprehension tool
apache-roller-5.1.2nb1  Full-featured, multi-user and group-blog server
apache-solr-8.11.1   High performance search server built using Lucene Java
apache-tomcat-9.0.62  Implementation of Java Servlet and JavaServer Pages technologies
apache-tomcat-8.5.61  Implementation of Java Servlet and JavaServer Pages technologies
apache-tomcat-8.0.53nb1  Implementation of Java Servlet and JavaServer Pages technologies
apache-tomcat-7.0.106  Implementation of Java Servlet and JavaServer Pages technologies
apache-tomcat-6.0.45nb1  Implementation of Java Servlet and JavaServer Pages technologies
apache-tomcat-5.5.35  The Apache Project's Java Servlet 2.4 and JSP 2.0 server
...

Partes da saída do comando forma omitidas.

Anterior mente foi pesquisado se há algum pacote com o nome apache, na intenção de instalar o servidor HTTP Apache. Tal busca resulta em vários pacotes. A seguir é utilizado a opção install para instalar um desses pacotes:

nbsd# pkgin install apache-2.4.56
calculating dependencies...done.

12 packages to install:
  apache-2.4.56 readline-8.2nb1 pcre2-10.42 nghttp2-1.52.0 libxml2-2.10.4 brotli-1.0.9 apr-util-1.6.3 apr-1.7.2 xmlcatmgr-2.2nb1 python310-3.10.10
  libuuid-2.32.1nb1 libffi-3.4.4

0 to refresh, 0 to upgrade, 12 to install
25M to download, 147M to install

proceed ? [Y/n]

Redes

Configuração de rede volátil

IP e Máscara de rede

A configuração de IPs e máscaras de rede no NetBSD pode ser realizada através do comando ifconfig, tal como:

nbsd# ifconfig wm3 10.0.0.2/24

Neste caso foi atribuída a placa de rede wm3, o IP/máscara 10.0.0.2/24. A efetividade da configuração pode ser vista com o mesmo comando, tal como:

nbsd# ifconfig wm3
wm3: flags=0x8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500
        capabilities=2bf80<TSO4,IP4CSUM_Rx,IP4CSUM_Tx,TCP4CSUM_Rx>
        capabilities=2bf80<TCP4CSUM_Tx,UDP4CSUM_Rx,UDP4CSUM_Tx,TCP6CSUM_Tx>
        capabilities=2bf80<UDP6CSUM_Tx>
        enabled=0
        ec_capabilities=7<VLAN_MTU,VLAN_HWTAGGING,JUMBO_MTU>
        ec_enabled=2<VLAN_HWTAGGING>
        address: 08:00:27:83:88:1e
        media: Ethernet autoselect (none)
        status: no carrier
        inet 10.0.0.2/24 broadcast 10.0.0.255 flags 0x0
        inet6 fe80::a00:27ff:fe83:881e%wm3/64 flags 0x8<DETACHED> scopeid 0x4

É possível ver na saída que o IP/máscara foram atribuídas com sucesso (penúltima linha) na placa de rede wm3.

Rota padrão

Para adicionar a rota padrão:

nbsd# route add default 192.168.122.1
add net default: gateway 192.168.122.1

No exemplo anterior o gateway padrão é o IP 192.168.122.1.

Para remover a rota padrão:

nbsd# route delete default
delete net default

É possível verificar as rotas através dos comandos:

  • route -n show;
  • netstat -r -f inet - a opção -f inet, apresenta apenas as rotas IPv4, para ver todas é só remover tal opção.

Configurando rede via arquivos

IPs e máscaras de rede

Para configurar a rede via arquivo, de forma que as configurações persistam depois do boot, é possível criar/editar o arquivo /etc/ifconfig.wm0, sendo que wm0 deve ser trocado pelo nome da placa de rede a ser configurada. Então neste exemplo a placa de rede chama-se wm0.

É possível ver as placas de rede através do comando ifconfig -a.

Um exemplo de configuração seria:

nbsd# cat /etc/ifconfig.wm0
#dhcp
inet 192.168.122.10 netmask 255.255.255.0

Neste exemplo a placa wm0 receberá o IP 192.168.122.10/24. Note que a configuração via DHCP está desabilitada, para habilitá-la seria necessário descomentar a linha do dhcp (removendo o #) e inserindo um #, na linha que inicia com inet.

Rota Padrão

Para configurar a rota padrão é possível criar/editar o arquivo /etc/mygate, tal como:

nbsd# cat /etc/mygate
192.168.122.1

No exemplo anterior, o gateway padrão é o host 192.168.122.1.

Aplicando as configurações de rede

Após alterar IPs, máscaras e gateway padrão utilizando os arquivos dos passos anteriores, é possível reiniciar o host, ou executar o comando /etc/rc.d/network, para que as configurações sejam aplicadas imediatamente. Exemplo:

nbsd# /etc/rc.d/network restart

Stopping network.
Deleting aliases.
Downing network interfaces: wm0 wm1 wm2.
Starting network.
Hostname: nbsd
IPv6 mode: host
Configuring network interfaces: wm0 wm1 wm2.
Adding interface aliases:.
add net default: gateway 192.168.122.1
Waiting for DAD to complete for statically configured addresses...

Servidor de nomes

A configuração do servidor de nomes no NetBSD é a mesma utilizada em outros sistemas Unix-Like, exemplo:

echo "nameserver 8.8.8.8" > /etc/resolv.conf

Neste caso foi adicionado o servidor 8.8.8.8, como servidor de nomes principal do host.

Não é necessário reiniciar nenhum serviço para que a configuração do DNS passe a valer.

Verificando conexões de redes

nbsd# sockstat -4ln
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
root     dhcpcd     181   11 udp    *.68                  *.*
root     sshd       340    4 tcp    *.22                  *.*
_httpd   httpd      3822   5 tcp    *.80                  *.*
nbsd# netstat -f inet
Active Internet connections
Proto Recv-Q Send-Q  Local Address          Foreign Address        State
tcp        0      0  192.168.56.21.ssh      192.168.56.1.52060     ESTABLISHED
nbsd# netstat -f inet -r
Routing tables

Internet:
Destination        Gateway            Flags    Refs      Use    Mtu Interface
default            10.0.2.2           UGS         -        -      -  wm0
10.0.2/24          link#1             UC          -        -      -  wm0
10.0.2.15          link#1             UHl         -        -      -  lo0
127/8              localhost          UGRS        -        -  33624  lo0
localhost          lo0                UHl         -        -  33624  lo0
192.168.56/24      link#2             UC          -        -      -  wm1
192.168.56.21      link#2             UHl         -        -      -  lo0
192.168.56.1       0a:00:27:00:00:00  UHL         -        -      -  wm1
192.168.56.2       08:00:27:1c:1b:63  UHL         -        -      -  wm1
10.0.2.2           52:54:00:12:35:02  UHL         -        -      -  wm0

NAT (mascaramento)

Ative o roteamento:

nbsd# sysctl -w net.inet.ip.forwarding=1
net.inet.ip.forwarding: 0 -> 1

Crie/edite o arquivo /etc/ipnat.conf:

nbsd# vi /etc/ipnat.conf
map wm0 0/0 -> 0/32

Neste caso estamos pedindo para “mapear”/mascarar, tudo (0/0) que for sair pela interface wm0, para o IP que estiver na interface wm0.

Atenção, este exemplo a interface wm0 é a interface de rede conectada à Internet! Então você tem que ver se o nome da interface no seu cenário de rede é o mesmo…

Iniciar e carregar o NAT:

nbsd# /etc/rc.d/ipnat onestart
Enabling ipfilter for NAT.
Installing NAT rules ... 1 entries flushed from NAT table

Quagga

Instalar o Quagga:

nbsd# pkgin install quagga

Configurar o zebra:

nbsd# cat /usr/pkg/etc/zebra/zebra.conf
!
! Zebra configuration saved from vty
!   2023/07/29 12:02:46
!
hostname nbsd-router
password 123mudar
enable password 123mudar
log syslog
!
interface lo0
!
interface wm0
!
interface wm1
 ip address 172.16.0.10/24
!
interface wm2
 ip address 172.16.1.10/24
!
interface wm3
!
ip forwarding
!
!
line vty
!

Configurar o OSPF, ou outro similar:

nbsd# cat /usr/pkg/etc/zebra/ospfd.conf
!
! Zebra configuration saved from vty
!   2023/07/29 12:02:46
!
hostname nbsd-router
password 123mudar
enable password 123mudar
log syslog
!
!
!
interface lo0
!
interface wm0
!
interface wm1
!
interface wm2
!
interface wm3
!
router ospf
 ospf router-id 10.10.10.10
 network 172.16.0.0/24 area 0.0.0.0
 network 172.16.1.0/24 area 0.0.0.0
 default-information originate
!
line vty
!

Iniciar:

nbsd# mkdir /var/run/zebra
nbsd# chown quagga.quagga /var/run/zebra/
nbsd# /usr/pkg/sbin/zebra -d
nbsd# /usr/pkg/sbin/ospfd  -d

Neste caso sempre que reiniciar a máquina vai ter que criar o diretório e dar esse para o usuário/grupo quagga, então seria bom fazer um script. Isso pode ser feito com o arquivo /usr/pkg/share/examples/rc.d/zebra.

O quagga/zebra também pode ser acessado pelo comando:

nbsd# vtysh

Atenção que quando você executa esse comando não muda nada no terminal, então é bom digitar help para ver se você está no vtysh, ou no terminal normal. Para sair do terminal vtysh, digite o comando quit, os outros comandos são bem similares ao terminal CISCO.

Referências

Instalação

Rede

Quagga

NAT