# Instalação Manual

Caso você queira instalar o novo servidor IdP Eduroam manualmente, você pode seguir o passo a passo deste manual.

Link para baixar a distribuição do Ubuntu Server 20.04 LTS amd64: \
<https://mirror.uepg.br/ubuntu-releases/20.04.4/ubuntu-20.04.4-live-server-amd64.iso>[<br>](http://mirror.pop-sc.rnp.br/ubuntu-releases/focal/ubuntu-20.04.4-live-server-amd64.iso)<http://mirror.pop-sc.rnp.br/ubuntu-releases/focal/ubuntu-20.04.4-live-server-amd64.iso>\
<https://ubuntu.com/download/server><br>

Detalhes técnicos da máquina virtual a ser criada:\
8 GB RAM\
2 vCPUs\
200 GB de espaço em disco\
1 placa de rede

Utilize o comando abaixo para obter privilégios de super usuário (root)

**sudo su -**

Após a instalação da máquina virtual acima vamos configurar o IP fixo.\
Edite o arquivo **/etc/netplan/00-installer-config.yaml**\
Segue abaixo exemplo do conteúdo do arquivo:

**`vim  /etc/netplan/00-installer-config.yaml`**

\
`This is the network config written by 'subiquity'`

`network:` \
&#x20;  `version: 2`\
&#x20;  `renderer: networkd`\
&#x20;  `ethernets:` \
&#x20;     `ens160:` \
&#x20;        `addresses: [`**`200.133.240.72/24`**`]` \
&#x20;        `gateway4:`` `**`200.133.240.1`**\
&#x20;        `nameservers:` \
&#x20;           `addresses:`\
&#x20;              **`- 200.133.241.164`**`      ``Se for usar AD para autenticar seus usuários então utilize o IP do seu servidor AD`\
&#x20;              **`- 200.133.241.165`**`      ``Se for usar AD para autenticar seus usuários então utilize o IP do seu servidor AD`\
&#x20;           `search: [`**`RNP.LOCAL`**`]   Se for usar AD, utilize o nome do dominio interno do seu AD`\ <br>

Se for utilizar o AD para autenticar seus usuários, então você deve informar no campo nameservers address o IP de seus ADs que estão na mesma rede ou mais próximos.\
Estamos levando em consideração que o servidor de DNS de seus ADs estão rodando na mesma máquina que roda o AD, por isso que estamos utilizando o mesmo IP. Existem instituições que rodam o DNS do AD em outros servidodres, o que você precisa fazer é informar os IPs dos servidores de DNS dos ADs.\
Eu não utilizo AD apenas LDAP, qual IP de DNS devo utilizar? Neste caso você pode utilizar o seu servidor de DNS público, basta apenas informar os IPs.

Após gravar as modificações no arquivo acima precisamos executar o comando abaixo para que surta efeito no sistema operacional:

**`netplan apply`**

Verificando se IP configurado anteriormente subiu corretamente, digite o comando abaixo:

**`ip a`**

Será exibido a configuração da placa de rede:<br>

```
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: ens160: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 00:50:56:b0:a4:3a brd ff:ff:ff:ff:ff:ff
    inet 200.133.240.72/24 brd 200.133.240.255 scope global ens160
       valid_lft forever preferred_lft forever
    inet6 fe80::250:56ff:feb0:a43a/64 scope link
       valid_lft forever preferred_lft forever
```

Podemos ver que a placa de rede **ens160** está configurada com o IP 200.130.35.91 e mascara de rede 255.255.255.0 que equivale a **200.130.35.91/24** como mostrado no resultado do comando acima. Lembrando que para configurar a placa de rede basta editar o arquivo **/etc/netplan/00-installer-config.yaml** e após a alteração executar o comando  **netplan apply** e para ver se as alterações foram aplicadas vamos executar novamente o comando  **ip a** como mostrado no exemplo acima.

Verificando os IPs do **DNS Servers** e **DNS Domain** com o comando:

**`systemd-resolve --status`**

```
Link 2 (ens160)
      Current Scopes: DNS
DefaultRoute setting: yes
       LLMNR setting: yes
MulticastDNS setting: no
  DNSOverTLS setting: no
      DNSSEC setting: no
    DNSSEC supported: no
         DNS Servers: 200.133.241.164
                      200.133.241.165
          DNS Domain: RNP.LOCAL
```

A linha 1 exibe **Link 2 (ens160)** significa que as linhas a seguir referem-se as configurações da  placa de rede **ens160**

As linhas 9 e 10 referem-se ao DNS que está sendo utilizado.\
**DNS Servers:  200.133.241.164**\
&#x20;                             **200.133.241.165**\
Lembrando mais uma vez que se você estiver utilizando o AD para autenticar os usuários no IdP Eduroam, estes IPs devem ser de seu AD e não do seu servidor de DNS público. Se estiver utilizando somente o servidor LDAP de sua instituição então você pode utilizar os IPs de seu DNS público.

A linha 11:\
**DNS Domain: RNP.LOCAL** \
refere-se a qual domínio estamos utilizando em nosso DNS. Esta linha exibe a configuração do domínio que você está utilizando. Para dominios internos utilizando o AD normalmente é instituição.local, mas tem instituições fora do padrão pois criaram no AD o dominio externo. O padrão recomendado no material da Microsoft é sempre criar para dominios de autenticação de usuários internos o nome da empresa-instituição.LOCAL.\
Exemplos de nomes de dominios internos do AD utilizados em instituições usuárias do IdP Eduroam:\
RNP.LOCAL\
INSTITUICAO-A.LOCAL\
INSTITUICAO-B.EDU.BR\
INSTITUICAO-C.GOV.BR\
INSTITUICAO-D.BR

#### **Verificando o roteamento**&#x20;

Vamos utilizar o comando ip route conforme exemplo abaixo:

**`ip route`**&#x20;

`default via`` `**`200.133.240.1`**` ``dev ens160 proto static 200.133.240.0/24 dev ens160 proto kernel scope link src 200.133.240.72`

Podemos ver acima que o nosso default gateway está apontando para o IP **200.133.240.1** conforme configurado dentro do arquivo   **/etc/netplan/00-installer-config.yaml**

Precisamos testar a conexão com o default gateway, com o seguinte comando, exemplo:

**ping IP-DO-SEU-GATEWAY-EXIBIDO-ACIMA**\
exemplo:\
**ping 200.133.240.1**

Caso ocorra algum problema será necessário verificar se o endereço IP/Mascara/Gateway definidos em sua máquina estão corretos.

#### **Verificando se o servidor está acessando a internet**

Vamos utilizar o comando **ping** conforme exemplo abaixo:

* **`ping 8.8.8.8`**
* **`ping 200.133.241.164`**
* **`ping 200.133.241.165`**

Caso ocorram problemas no comando acima, será necessário verificar no firewall da instituição se a saída da máquina está liberada para a internet

#### Verificando DNS

Agora precisamos verificar se sua máquina está resolvendo nomes internos e externos.

Se você utiliza AD o primeiro passo é verificar se está resolvendo o nome do dominio interno, exemplo:

**ping   rnp.local**

**`ping  seu-dominio.interno`**

Verificando a resolução de nomes para dominios externos:

**`ping  www.google.com`**

**`ping archive.ubuntu.com`**

**`ping rps01.eduroam.org.br`**

**`ping rps02.eduroam.org.br`**

Verificando o nome de sua maquina, para isso podemos utilizar os seguintes comandos:

**`hostname`**

**`cat /etc/hostname`**

**`hostnamectl`**

Lembrando que se você utiliza AD é necessário que sua máquina esteja dentro do dominio interno de seu AD, exemplos:

prometheus.rnp.local

Se não utilizar AD então sua maquina pode utilizar dominio externo, exemplo:

prometheus.rnp.br

Como alterar o nome do servidor permanentemente:

voce pode editar o arquivo:

**`vim /etc/hostname`**

ou alterar o nome utilizando o comando:

**`hostnamectl set-hostname`** prometheus.rnp.br

E para ver se o nome foi alterado com sucesso, vamos utilizar novamente um dos comandos abaixo:

**`hostnamectl`**&#x20;

**`hostname`**

**`cat /etc/hostname`**

### **Instalação de Pacotes**

Os pacotes podem variar de acordo  com o tipo de autenticação, se for autenticação via LDAP é um pacote, se a autenticação for via AD são outros pacotes, algumas instituições realizam a autenticação via LDAP e via AD, neste caso instalamos todos os pacotes.

**Vamos acrescentar o repositório do Freeradius ao repositório do Ubuntu utilizando os comandos abaixo:**

#### Adicionar repositório do Freeradius

``echo "deb [arch=amd64] http://packages.networkradius.com/releases/ubuntu-`lsb_release -s -c`  `lsb_release -s -c` main" | tee /etc/apt/sources.list.d/networkradius.list > /dev/null``

### **Adicionando chaves**

#### **Para Ubuntu 20.04 LTS (Focal) / 18.04 LTS (Bionic)**

`curl -s 'https://packages.networkradius.com/pgp/packages%40networkradius.com' | tee /etc/apt/trusted.gpg.d/packages.networkradius.com.asc > /dev/null`

#### **Para Ubuntu 16.04 LTS  (Xenial) / 14.04 LTS (Trusty) /  12.04 LTS (Precise)**

apt-key adv --keyserver hkp\://keys.gnupg.net:80 --recv-key 0x41382202&#x20;

`apt-key adv --keyserver hkp://209.244.105.201:80 --recv-key 0x41382202`&#x20;

apt-key adv --keyserver hkp\://192.146.137.140:80 --recv-key 0x41382202&#x20;

apt-key adv --keyserver hkp\://192.146.137.141:80 --recv-key 0x41382202

### Atualizando o Freeradius após a execução dos itens acima.

Execute o comando:

`apt update`

### **Instalando Freeradius e suas dependências**&#x20;

Ressaltando que a instalaçao do Freeradius neste manual é realizado com o Ubuntu 20.04 LTS.

`apt -y update && apt list --upgradable && apt -y upgrade && apt install -y ssl-cert freeradius freeradius-utils freeradius-config freeradius-common freeradius-ldap freeradius-mysql freeradius-postgresql freeradius-krb5 snmp glibc-doc libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-perl make-doc libfreeradius3 libpython2.7 libpython2.7-minimal libpython2.7-stdlib libtalloc2 libwbclient0 libclone-perl libmldbm-perl libnet-daemon-perl libsql-statement-perl make make-doc libmysqlclient21 libpq5 mysql-common nmap dialog cryptsetup ldap-utils ntpdate ntpstat systemd-timesyncd net-tools traceroute lynx whois dialog`

#### Instalando pacotes para conectar Freeradius com AD via SAMBA

Você deve instalar os pacotes mencionados acima e os pacotes adicionais abaixo para utilizar o AD para autenticar seus usuários em sua instituição. Segue abaixo o comando utilizado:

`apt -y update && apt list --upgradable && apt -y upgrade && apt install -y krb5-user libpam-krb5 krb5-config libkrb5-3 libkadm5clnt-mit11 winbind systemd-timesyncd ntpdate samba samba-common samba-common-bin samba-dsdb-modules samba-libs samba-vfs-modules cifs-utils smbclient`

####

#### Verificando se o Freeradius foi instalado com sucesso

Podemos utilizar um dos comandos abaixo:

**`systemctl status freeradius`**\
ou\
\&#xNAN;**`/etc/init.d/freeradius status`**\
ou\
\&#xNAN;**`service freeradius status`**

resultado esperado:

![](/files/fWl3PTVfIzMGJTjR41U2)

Caso ocorra algum problema com o Freeradius será necessário verificar a seção de Troubleshooting.

#### Utilizando email recebido com os arquivos de configuração de seu servidor

Crie uma pasta com o nome rnp dentro do diretório root, segue o comando a ser utilizado:

**mkdir /root/rnp**

**cd /root/rnp**

Copie os arquivos que você recebeu via email da RNP para dentro da pasta /root/rnp &#x20;

Para realizar esta cópia você pode utilizar por exemplo o software WinSCP encontrado no site <https://sourceforge.net/projects/winscp/>

Descompacte o arquivo recebido dentro da pasta /root/rnp

**tar xzvf eduroam01.sua-instituicao.edu.br.tar.gz**

Liste os arquivos que foram descompactados com o comando abaixo:

**ls -lart**

Veja exemplo do resultado esperado:

`-rw-r--r-- 1 root root 455 Mar 28 2020 atualiza_configura_idp_eduroam.bash`\
`-rw-r--r-- 1 root root 1330 Mar 9 08:22 rnp-ca.crt` \
`-rw-r--r-- 1 root root 4691 Mar 9 08:22 radsec` \
`-rw-r--r-- 1 root root 2532 Mar 9 08:22 proxy.conf` \
`-rw-r--r-- 1 root root 1103 Mar 9 08:22 inner-tunnel` \
`-rw-r--r-- 1 root root 1704 Mar 9 08:22 eduroam01.sua-instituicao.edu.br.key` \
`-rw-r--r-- 1 root root 4208 Mar 9 08:22 eduroam01.sua-instituicao.edu.br.crt` \
`-rw-r--r-- 1 root root 31393 Mar 9 08:22 eap` \
`-rw-r--r-- 1 root root 1306 Mar 9 08:22 default` \
`-rw-r--r-- 1 root root 1453 Mar 9 08:22 clients.conf`

Onde está `eduroam01.sua-instituicao.edu.br` será substituido pelo nome do seu servidor e sua instituição.

### Realizando <mark style="color:red;">backup</mark> dos arquivos originais

Abaixo os comados para criar o diretorio para armazenar o backup dos arquivos originais do freeradius, e em seguida realizamos a cópia destes arquivos para dentro do diretorio /root/rnp/backup

**mkdir /root/rnp/backup**

**cp /etc/freeradius/{clients.conf,radiusd.conf,proxy.conf,mods-config/files/authorize,mods-enabled/{eap,mschap,ntlm\_auth},mods-available/ldap,sites-available/{default,inner-tunnel}} /etc/ssl/openssl.cnf /etc/hosts /etc/resolv.conf /root/rnp/backup/**

#### Substituindo os arquivos originais pelos arquivos recebidos

Agora vamos substituir os arquivos originais do Freeradius pelos arquivos recebidos da RNP.

Estes arquivos possuem as configurações necessárias para que o seu servidor conecte com as máquinas da nossa federação.

**Criar o diretorio** */etc/freeradius/certs/radsec, neste diretório vamos copiar os arquivos de certificados gerados pela RNP para realizar a conexão com os servidores da federação.*

```
mkdir /etc/freeradius/certs/radsec
cp /root/rnp/{rnp-ca.crt,eduroam01.sua-instituicao.edu.br.key,eduroam01.sua-instituicao.edu.br.crt} /etc/freeradius/certs/radsec
ls -lart /etc/freeradius/certs/radsec
```

total 24&#x20;

drwxr-s--x 3 freerad freerad 4096 Mar 9 12:51 ..&#x20;

-rw-r--r-- 1 root freerad 1330 Mar 9 12:51 rnp-ca.crt&#x20;

-rw-r--r-- 1 root freerad 1704 Mar 9 12:51 eduroam01.sua-instituicao.edu.br.key&#x20;

-rw-r--r-- 1 root freerad 4208 Mar 9 12:51 eduroam01.sua-instituicao.edu.br.crt&#x20;

drwxr-sr-x 2 root freerad 4096 Mar 9 12:51 .

**Copiar os demais arquivos de configuração do Freeradius**

```
cp /root/rnp/{radsec,inner-tunnel,default} /etc/freeradius/sites-enabled/
cp /root/rnp/eap /etc/freeradius/mods-enabled/eap
cp /root/rnp/{clients.conf,proxy.conf} /etc/freeradius/
cp /root/rnp/openssl.cnf  /etc/ssl/openssl.cnf
dd if=/dev/urandom of=/etc/freeradius/certs/radsec/random count=10
openssl dhparam -out /etc/freeradius/certs/radsec/dh -2 2048
```

Após a realização de todo procedimento acima devemos executar o comando freeradius -CX para verificar se há algum problema.

**`freeradius -CX`**

Se tudo ocorreu bem até o momento, a ultima linha do resultado deste comando deve ser:

*Configuration appears to be <mark style="color:green;">OK</mark>*

## Analisando os arquivos de configurações

Neste item vamos analisar os arquivos de configurações que foram gerados pela RNP.

Estes arquivos gerados foram copiados para dentro de vários diretórios do Freeradius como executamos no item anterior.

#### /etc/freeradius/sites-enabled/default

```
server default {
listen {
        type = auth
        ipaddr = *
        port = 0
        limit {
              max_connections = 16
              lifetime = 0
              idle_timeout = 30
        }
}
listen {
        ipaddr = *
        port = 0
        type = acct
        limit {
        }
}
listen {
        type = auth
        ipv6addr = ::   # any.  ::1 == localhost
        port = 0
        limit {
              max_connections = 16
              lifetime = 0
              idle_timeout = 30
        }
}
listen {
        ipv6addr = ::
        port = 0
        type = acct
        limit {
        }
}
authorize {
        filter_username
        preprocess
        chap
        mschap
        digest
        suffix

        if ( Realm =~ /sua-instituicao.edu.br/i ) {
                 update control {
                    &Proxy-To-Realm := LOCAL
                 }
        }
        eap {
                ok = return
        }
        files
        -sql
        -ldap
        expiration
        logintime
        pap
}
authenticate {
        Auth-Type PAP {
                pap
        }

        Auth-Type CHAP {
                chap
        }

        Auth-Type MS-CHAP {
                mschap
        }

        mschap
        digest
        eap
}

preacct {
        preprocess
        acct_unique
        files
}

accounting {
        detail
        unix
        -sql
        exec
        attr_filter.accounting_response
}
session {
}
post-auth {
        update {
                &reply: += &session-state:
        }
        -sql
        -ldap
        exec
        remove_reply_message_if_eap
        Post-Auth-Type REJECT {
                -sql
                attr_filter.access_reject
                eap
                remove_reply_message_if_eap
        }
}
pre-proxy {
        update proxy-request {
            Operator-Name = "1sua-instituicao.edu.br"
            Eduroam-SP-Country = "BR"
        }

}
post-proxy {
        eap
}
}


```

#### /etc/freeradius/sites-enabled/inner-tunnel

```
server inner-tunnel {
listen {
        type = auth
        ipaddr = *
        port = 18120
        limit {
              max_connections = 16
              lifetime = 0
              idle_timeout = 30
        }
}

authorize {
        filter_username
        preprocess
        chap
        mschap
        digest
        suffix

        if ( Realm =~ /sua-instituicao.edu.br/i ) {
                 update control {
                    &Proxy-To-Realm := LOCAL
                 }
        }

        eap {
                ok = return
        }
        files
        -sql
        -ldap
        expiration
        logintime
        pap
}

authenticate {
        Auth-Type PAP {
                pap
        }
        Auth-Type CHAP {
                chap
        }
        Auth-Type MS-CHAP {
                mschap
        }
        mschap
        digest
        eap
}

preacct {
        preprocess
        acct_unique
        files
}

accounting {
        detail
        unix
        -sql
        exec
        attr_filter.accounting_response
}

session {
}

post-auth {
        update {
                &reply: += &session-state:
        }
        -sql
        -ldap
        exec
        remove_reply_message_if_eap
        Post-Auth-Type REJECT {
                -sql
                attr_filter.access_reject
                eap
                remove_reply_message_if_eap
        }
}

pre-proxy {
        update proxy-request {
            Operator-Name = "1sua-instituicao.edu.br"
            Eduroam-SP-Country = "BR"
        }


}

post-proxy {
        eap
}
}

```

#### /etc/freeradius/sites-enabled/radsec

```

listen {
    ipaddr = *
    port = 2083
    type = auth

    proto = tcp
    virtual_server = default

    clients = radsec
        limit {
              max_connections = 0
              lifetime = 0
              idle_timeout = 3600
              }
    tls {
        tls_min_version = "1.0"
        tls_max_version = "1.2"
        cipher_list = "DEFAULT@SECLEVEL=1"
        certdir = ${confdir}/certs/radsec
        cadir = ${confdir}/certs/radsec
        private_key_password = dXdHZF2GemkB
        private_key_file = ${certdir}/eduroam01.sua-instituicao.edu.br.key
        certificate_file = ${certdir}/eduroam01.sua-instituicao.edu.br.crt
        ca_file = ${cadir}/rnp-ca.crt
        dh_file = ${certdir}/dh
        random_file = ${certdir}/random
        fragment_size = 8192
        include_length = yes
        #cipher_list = "DEFAULT"
        cache {
              enable = yes
              lifetime = 24 # hours
              max_entries = 255
        }
        require_client_cert = yes
        verify {
        }
    }
}


listen {
    ipv6addr = ::
    port = 2083
    type = auth
    proto = tcp
    clients = radsec
    limit {
              max_connections = 0
              lifetime = 0
              idle_timeout = 600
        }
    tls {
        tls_min_version = "1.0"
        tls_max_version = "1.2"
        cipher_list = "DEFAULT@SECLEVEL=1"
        certdir = ${confdir}/certs/radsec
        cadir = ${confdir}/certs/radsec
        private_key_password = dXdHZF2GemkB
        private_key_file = ${certdir}/eduroam01.sua-instituicao.edu.br.key
        certificate_file = ${certdir}/eduroam01.sua-instituicao.edu.br.crt
        ca_file = ${cadir}/rnp-ca.crt
        dh_file = ${certdir}/dh
        random_file = ${certdir}/random
        fragment_size = 8192
        include_length = yes
        #cipher_list = "DEFAULT"
        cache {
              enable = yes
              max_entries = 255
        }
        require_client_cert = yes
        verify {
        }
    }
}

clients radsec {
    limit {
              max_connections = 0
              lifetime = 0
              idle_timeout = 3600
        }
    client 127.0.0.1 {
        ipaddr = 127.0.0.1
        proto = tls
        secret = l9ZoIpHZoBBX
    }
    client rps01 {
        ipaddr = rps01.eduroam.org.br
        proto = tls
        secret = rTfGaFM9vvJw
        limit {
              max_connections = 0
              lifetime = 0
              idle_timeout = 3600
        }
    }
    client rps02 {
        ipaddr = rps02.eduroam.org.br
        proto = tls
        secret = rTfGaFM9vvJw
        limit {
              max_connections = 0
              lifetime = 0
              idle_timeout = 3600
        }
    }
}


# local test listener for debug (present by default)
listen {
       ipaddr = 127.0.0.1
       port = 4000
       type = auth
}

home_server rps01 {
    ipaddr = rps01.eduroam.org.br
    port = 2083
    type = auth
    secret = rTfGaFM9vvJw
    proto = tcp
    status_check = none
    tls {
        tls_min_version = "1.0"
        tls_max_version = "1.2"
        cipher_list = "DEFAULT@SECLEVEL=1"
        certdir = ${confdir}/certs/radsec
        cadir = ${confdir}/certs/radsec
        private_key_password = dXdHZF2GemkB
        private_key_file = ${certdir}/eduroam01.sua-instituicao.edu.br.key
        certificate_file = ${certdir}/eduroam01.sua-instituicao.edu.br.crt
        ca_file = ${cadir}/rnp-ca.crt
        dh_file = ${certdir}/dh
        random_file = ${certdir}/random
        fragment_size = 1500
        include_length = yes
        CA_path = ${cadir}
        #cipher_list = "DEFAULT"
    }
}

home_server rps02 {
    ipaddr = rps02.eduroam.org.br
    port = 2083
    type = auth
    secret = rTfGaFM9vvJw
    proto = tcp
    status_check = none
    tls {
        tls_min_version = "1.0"
        tls_max_version = "1.2"
        cipher_list = "DEFAULT@SECLEVEL=1"
        certdir = ${confdir}/certs/radsec
        cadir = ${confdir}/certs/radsec
        private_key_password = dXdHZF2GemkB
        private_key_file = ${certdir}/eduroam01.sua-instituicao.edu.br.key
        certificate_file = ${certdir}/eduroam01.sua-instituicao.edu.br.crt
        ca_file = ${cadir}/rnp-ca.crt
        dh_file = ${certdir}/dh
        random_file = ${certdir}/random
        fragment_size = 1500
        include_length = yes
        CA_path = ${cadir}
        #cipher_list = "DEFAULT"
    }
}
home_server_pool BR {
         type = fail-over
         home_server = rps01
         home_server = rps02
}


realm "~.+$" {
       auth_pool = BR
       nostrip
}


```


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://ajuda.rnp.br/eduroam/manual-do-administrador/instalacao-manual.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
