[TUTORIAL] DNS - Domain Name System
Domain Name System
O que é DNS?
O Sistema de Nomes de Domínio, mais conhecido pela nomenclatura em Inglês Domain Name System (DNS), é um sistema hierárquico e distribuído de gestão de nomes para computadores, serviços ou qualquer máquina conectada à Internet ou a uma rede privada. Faz a associação entre várias informações atribuídas a nomes de domínios e cada entidade participante. A sua utilização mais convencional associa nomes de domínios mais facilmente memorizáveis a endereços IP numéricos, necessários à localização e identificação de serviços e dispositivos, processo esse denominado por: resolução de nome. Em virtude do banco de dados de DNS ser distribuído, o seu tamanho é ilimitado e o desempenho não se degrada substancialmente quando se adiciona mais servidores. Por padrão, o DNS usa o protocolo User Datagram Protocol (UDP) na porta 53 para servir as solicitações e as requisições.
O DNS apresenta uma arquitetura cliente/servidor, podendo envolver vários servidores DNS na resposta a uma consulta. O servidor DNS resolve nomes para os endereços IP e de endereços IP para os nomes respectivos, permitindo a localização de hosts num determinado domínio.
Num sistema livre, o serviço é normalmente implementado pelo software BIND. Este serviço geralmente encontra-se localizado no servidor DNS primário. O servidor DNS secundário é uma espécie de cópia de segurança do servidor DNS primário. Assim, é uma parte necessária para quem quer usar a internet de uma forma mais fácil, evita que hackers roubem dados pessoais.
Existem centenas de servidores-raiz DNS (root servers) no mundo todo, agrupados em 13 zonas DNS raiz, das quais sem elas a Internet não funcionaria. Destes, dez estão localizados nos Estados Unidos da América, dois na Europa e um na Ásia. Para aumentar a base instalada destes servidores foram criadas réplicas localizadas por todo o mundo, inclusive no Brasil desde 2003.
INSTALAÇÃO DO DNS SERVER
Este tutorial tem como finalidade realizar a instalação do DNS em servidor Fedora, porém os procedimentos são aplicáveis em RHEL 7, CentOS 7 e Scientific Linux 7.
Ambiente:
Para este laboratório foi utilizado 3 hosts, Master denominado de dns01, Slaver/secundario denominado de dns02 e um cliente que estará buscando as devidas informações nos servidores DNS devidamente configurados.
Descrição dos servidores:
Master Detalhes:
Sistema Operacional : Fedora Server release 29
Hostname : dns01.fedorabr.lab
IP : 192.168.122.200/24
Slaver Detalhes:
Sistema Operacional : Fedora Server release 29
Hostname : dns02.fedorabr.lab
IP : 192.168.122.201/24
Cliente Detalhes:
Sistema Operacional : CentOS 7.6 server
Hostname : server01.fedorabr.lab
IP Address : 192.168.122.150/24
Procedimentos de instalação do Master
1 - Instalação do pacote Bind9:
[root@dns01 ~]# dnf install bind
2 - Configurando o Master:
Neste passo vamos editar o arquivo de configuração do bind em /etc/named.conf:
[root@dns01 ~]# vim /etc/named.conf
Conteúdo do arquivo nemed.conf, alterar apenas o que estiver em negrito de acordo com as suas informações:
// // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { 127.0.0.1; 192.168.122.200;}; ## IP do seu servidor Master ## # listen-on-v6 port 53 { ::1; }; ## Não utilizo ipv6 ## directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; allow-query { localhost; 192.168.122.0/24;}; ##Limitando ao meu ranger de rede## allow-transfer { localhost; 192.168.122.201;}; ##IP do seu servidor Slave## /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-enable yes; dnssec-validation yes; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */ include "/etc/crypto-policies/back-ends/bind.config"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; ## Insira as informações do seu domínio## zone "fedorabr.lab" IN { type master; file "forward.fedorabr"; allow-update { none; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "reverse.fedorabr"; allow-update { none; }; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
3 - Criação dos arquivos de zona
No arquivo /etc/named.conf, foram adicionadas entradas de informações de arquivos de zona, neste momento vamos criar os referidos arquivos:
3.1 - Criando arquivo de zona forward
[root@dns01 ~]# vim /var/named/forward.fedorabr
Adicione as seguintes linhas no arquivo de acordo com seu domínio:
$TTL 86400 IN SOA dns01.fedorabr.lab. root.fedorabr.lab. ( 3011071003 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS dns01.fedorabr.lab. @ IN NS dns02.fedorabr.lab. @ IN A 192.168.122.200 IN A 192.168.122.201 IN A 192.168.122.150 dns01 IN A 192.168.122.200 dns02 IN A 192.168.122.201 server01 IN A 192.168.122.150
3.2 - Criando arquivo de zona reversa
[root@dns01 ~]# vim /var/named/reverse.fedorabr
Adicione as seguintes linhas no arquivo de acordo com seu domínio:
$TTL 86400 IN SOA dns01.fedorabr.lab. root.fedorabr.lab. ( 3011071003 ;Serial 3600 ;Refresh 1800 ;Retry 604800 ;Expire 86400 ;Minimum TTL ) @ IN NS dns01.fedorabr.lab. @ IN NS dns02.fedorabr.lab. @ IN PTR fedorabr.lab. dns01 IN A 192.168.122.200 dns02 IN A 192.168.122.201 server01 IN A 192.168.122.50 200 IN PTR dns01.fedorabr.lab. 201 IN PTR dns02.fedorabr.lab. 150 IN PTR server01.fedorabr.lab.
3.3 - Iniciando e habilitando o DNS
[root@dns01 ~]# systemctl enable named
[root@dns01 ~]# systemctl start named
4 - Configurações de Firewall
Bem, iniciamos os serviços de DNS na porta 53 de acordo com o arquivo /etc/named.conf, agora basta configurarmos o firewall para liberação desta porta, vamos lá.
Adicionando porta TCP e UDP:
[root@dns01 ~]# firewall-cmd --permanent --add-port=53/tcp
[root@dns01 ~]# firewall-cmd --permanent --add-port=53/udp
Salvando as configurações de firewall e atualizando as informações:
[root@dns01 ~]# firewall-cmd --reload
5 - Além de configurar o firewall devemos realizar configurações no SELinux:
[root@dns01 ~]# chgrp named -R /var/named
Alterando quem irá inicializar o serviço named, é recomendado que nenhum serviço rode como root.
[root@dns01 ~]# chown -v root:named /etc/named.conf
Restaurando as configurações do SELinux nos diretórios e arquivos de configuração do named
6 - Testes das configurações do DNS e análise de erro nos arquivos de configuração:
6.1 - Checagem do arquivo /etc/named.conf
[root@dns01 ~]# named-checkconf /etc/named.conf
_OBS: Se a resposta do comando for nada, suas configurações estão corretas.
_
6.2 - Checagem de zona forward:
[root@dns01 ~]# named-checkzone fedorabr.lab /var/named/forward.fedorabr
Resultado do comando:
zone fedorabr.lab/IN: loaded serial 3011071003
OK
6.3 - Checagem de zona reverse:
[root@dns01 ~]# named-checkzone fedorabr.lab /var/named/reverse.fedorabr
Resultado do comando:
zone fedorabr.lab/IN: loaded serial 3011071003
OK
6.4 - Adicione as informações de seu novo dns nas configurações de rede:
vim /etc/sysconfig/network-scripts/ifcfg-enp1s0
TYPE=Ethernet PROXY_METHOD=none BROWSER_ONLY=no BOOTPROTO=none DEFROUTE=yes IPV4_FAILURE_FATAL=no IPV6INIT=no IPV6_AUTOCONF=yes IPV6_DEFROUTE=yes IPV6_FAILURE_FATAL=no IPV6_ADDR_GEN_MODE=stable-privacy NAME=enp1s0 UUID=7d0fde01-c8cb-3cc4-b111-d7bf21a62604 ONBOOT=yes AUTOCONNECT_PRIORITY=-999 DEVICE=enp1s0 IPADDR=192.168.122.200 PREFIX=24 GATEWAY=192.168.122.1 DNS1=192.168.122.200
Comumente adicione as informações do novo dns no arquivo /etc/resolve.conf:
[root@dns01 ~]# vim /etc/resolv.conf
# Generated by NetworkManager search fedorabr.lab nameserver 192.168.122.200
Agora devemos restartar a rede:
[root@dns01 ~]# systemctl restart NetworkManager
6.5 - Testando o servidor dns01:
DIG:
[root@dns01 ~]# dig fedorabr.lab
; <<>> DiG 9.11.5-P4-RedHat-9.11.5-4.P4.fc29 <<>> fedorabr.lab ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12501 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 3, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 9f282a117eff73342b94b2b95cb0ce664575656fdf3a1f31 (good) ;; QUESTION SECTION: ;fedorabr.lab. IN A ;; ANSWER SECTION: fedorabr.lab. 86400 IN A 192.168.122.200 fedorabr.lab. 86400 IN A 192.168.122.150 fedorabr.lab. 86400 IN A 192.168.122.201 ;; AUTHORITY SECTION: fedorabr.lab. 86400 IN NS dns02.fedorabr.lab. fedorabr.lab. 86400 IN NS dns01.fedorabr.lab. ;; ADDITIONAL SECTION: dns01.fedorabr.lab. 86400 IN A 192.168.122.200 dns02.fedorabr.lab. 86400 IN A 192.168.122.201 ;; Query time: 0 msec ;; SERVER: 192.168.122.200#53(192.168.122.200) ;; WHEN: sex abr 12 14:44:06 -03 2019 ;; MSG SIZE rcvd: 189</pre> NSLOOKUP: [root@dns01 ~]# nslookup fedorabr.lab
Server: 192.168.122.200 Address: 192.168.122.200#53 Name: fedorabr.lab Address: 192.168.122.200 Name: fedorabr.lab Address: 192.168.122.201 Name: fedorabr.lab Address: 192.168.122.150
Pronto, nosso servidor DNS está pronto para uso.
Instalação do servidor Slave (dns02)
1 - Instalação do pacote bind
[root@dns02 ~]# dnf install bind
2 - Editar o arquivo /etc/named.conf
[root@dns02 ~]# vim /etc/named.conf
Conteúdo do arquivo nemed.conf, alterar apenas o que estiver em negrito de acordo com as suas informações:
// // named.conf // // Provided by Red Hat bind package to configure the ISC BIND named(8) DNS // server as a caching only nameserver (as a localhost DNS resolver only). // // See /usr/share/doc/bind*/sample/ for example named configuration files. // options { listen-on port 53 { 127.0.0.1; 192.168.122.201;};##IP do servidor Slave## # listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; secroots-file "/var/named/data/named.secroots"; recursing-file "/var/named/data/named.recursing"; allow-query { localhost; 192.168.122.0/24;};##Limitando ao meu ranger de rede## /* - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. - If you are building a RECURSIVE (caching) DNS server, you need to enable recursion. - If your recursive DNS server has a public IP address, you MUST enable access control to limit queries to your legitimate users. Failing to do so will cause your server to become part of large scale DNS amplification attacks. Implementing BCP38 within your network would greatly reduce such attack surface */ recursion yes; dnssec-enable yes; dnssec-validation yes; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; /* https://fedoraproject.org/wiki/Changes/CryptoPolicy */ include "/etc/crypto-policies/back-ends/bind.config"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; zone "fedorabr.lab" IN { type slave; file "slaves/fedorabr.fwd"; masters { 192.168.122.200; };##IP do servidor Master## }; zone "122.168.192.in-addr.arpa" IN { ##IP da zona reversa## type slave; file "slaves/fedorabr.rev"; masters { 192.168.122.200; };##IP do servidor Master## }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
3 - Liberando portas do firewall
[root@dns02]# firewall-cmd --permanent --add-port=53/tcp
[root@dns02]# firewall-cmd --permanent --add-port=53/udp
[root@dns02]# firewall-cmd --reload
4 - Liberações do SELinux e rodando o named com usuário named.
[root@dns02]# chgrp named -R /var/named
[root@dns02]# chown -v root:named /etc/named.conf
[root@dns02]# restorecon -rv /var/named
[root@dns02]# restorecon /etc/named.conf
[root@dns02]# named-checkconf /etc/named.conf
5 - Iniciando o serviço de dns e habilitando na incialização.
[root@dns02]# systemctl enable named.service
[root@dns02]# systemctl start named.service
6 - Analisar se a comunicação com o DNS master foram replicadas no servidor DNS slave
[root@dns02]# ls /var/named/slave/
fedorabr.fwd fedora.rev
6.1 - Testando o servidor DNS
DNS01 -
[root@dns02 named]# dig dns01.fedorabr.lab
; <<>> DiG 9.11.5-P4-RedHat-9.11.5-4.P4.fc29 <<>> dns01.fedorabr.lab ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60846 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 5dc6681c96e37819de6f683d5cb0ec0047d49d6b19b9b4be (good) ;; QUESTION SECTION: ;dns01.fedorabr.lab. IN A ;; ANSWER SECTION: dns01.fedorabr.lab. 86400 IN A 192.168.122.200 ;; AUTHORITY SECTION: fedorabr.lab. 86400 IN NS dns01.fedorabr.lab. fedorabr.lab. 86400 IN NS dns02.fedorabr.lab. ;; ADDITIONAL SECTION: dns02.fedorabr.lab. 86400 IN A 192.168.122.201 ;; Query time: 1 msec ;; SERVER: 192.168.122.200#53(192.168.122.200) ;; WHEN: sex abr 12 16:50:24 -03 2019 ;; MSG SIZE rcvd: 141</pre> DNS02 - [root@dns02 named]# dig dns02.fedorabr.lab
; <<>> DiG 9.11.5-P4-RedHat-9.11.5-4.P4.fc29 <<>> dns02.fedorabr.lab ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 2296 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ; COOKIE: 3d0cb4312f841f60f79d8da15cb0ec5e0a7a2b49ec586632 (good) ;; QUESTION SECTION: ;dns02.fedorabr.lab. IN A ;; ANSWER SECTION: dns02.fedorabr.lab. 86400 IN A 192.168.122.201 ;; AUTHORITY SECTION: fedorabr.lab. 86400 IN NS dns01.fedorabr.lab. fedorabr.lab. 86400 IN NS dns02.fedorabr.lab. ;; ADDITIONAL SECTION: dns01.fedorabr.lab. 86400 IN A 192.168.122.200 ;; Query time: 0 msec ;; SERVER: 192.168.122.200#53(192.168.122.200) ;; WHEN: sex abr 12 16:51:58 -03 2019 ;; MSG SIZE rcvd: 141</pre> NSLOOKUP: [root@dns02 named]# nslookup fedorabr.lab
Server: 192.168.122.200 Address: 192.168.122.200#53 Name: fedorabr.lab Address: 192.168.122.200 Name: fedorabr.lab Address: 192.168.122.201 Name: fedorabr.lab Address: 192.168.122.150
Configurações e testes realizados com sucesso nos servidores, vamos fazer as devidas configurações no server01.fedorabr.lab que vai servir como nosso cliente.
1 - Configurações do cliente de DNS
1.1 - Configurando o arquivo /etc/resolv.conf
[root@server01 ~]# vi /etc/resolv.conf
# Generated by NetworkManager search fedorabr.lab nameserver 192.168.122.200 nameserver 192.168.122.201
1.2 - Configurando as entradas de DNS no arquivo do dispositivo de rede /etc/sysconfig/network-scripts/ifcfg-eth0
[root@server01 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eth0
TYPE="Ethernet" PROXY_METHOD="none" BROWSER_ONLY="no" BOOTPROTO="none" DEFROUTE="yes" IPV4_FAILURE_FATAL="no" IPV6INIT="no" IPV6_AUTOCONF="yes" IPV6_DEFROUTE="yes" IPV6_FAILURE_FATAL="no" IPV6_ADDR_GEN_MODE="stable-privacy" NAME="eth0" UUID="f9483a41-49f2-499f-8c9e-59c34b7e5d21" DEVICE="eth0" ONBOOT="yes" IPADDR="192.168.122.150" PREFIX="24" GATEWAY="192.168.122.1" DNS1="192.168.122.200" DNS2="192.168.122.201" DOMAIN="fedorabr.lab"
2 - Testes de comunicação dos servidores DNS’s.
Obs. No caso do CentOS se faz necessário instalação o pacote bind-ultils nele contém os binários do dig e do nslookup.
2.1 - Instalação do bind-utils:
[root@server01 ~]# yum install bind-utils -y
2.2 - Teste do Master
DIG -
[root@server01 ~]# dig dns01.fedorabr.lab
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> dns01.fedorabr.lab ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37808 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;dns01.fedorabr.lab. IN A ;; ANSWER SECTION: dns01.fedorabr.lab. 86400 IN A 192.168.122.200 ;; AUTHORITY SECTION: fedorabr.lab. 86400 IN NS dns01.fedorabr.lab. fedorabr.lab. 86400 IN NS dns02.fedorabr.lab. ;; ADDITIONAL SECTION: dns02.fedorabr.lab. 86400 IN A 192.168.122.201 ;; Query time: 1 msec ;; SERVER: 192.168.122.200#53(192.168.122.200) ;; WHEN: Sex Abr 12 17:26:04 -03 2019 ;; MSG SIZE rcvd: 113</pre> 2.2 - Teste do Slave [root@server01 ~]# dig dns02.fedorabr.lab
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> dns02.fedorabr.lab ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 18171 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 2 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;dns02.fedorabr.lab. IN A ;; ANSWER SECTION: dns02.fedorabr.lab. 86400 IN A 192.168.122.201 ;; AUTHORITY SECTION: fedorabr.lab. 86400 IN NS dns02.fedorabr.lab. fedorabr.lab. 86400 IN NS dns01.fedorabr.lab. ;; ADDITIONAL SECTION: dns01.fedorabr.lab. 86400 IN A 192.168.122.200 ;; Query time: 2 msec ;; SERVER: 192.168.122.200#53(192.168.122.200) ;; WHEN: Sex Abr 12 17:28:29 -03 2019 ;; MSG SIZE rcvd: 113</pre> 2.2 - Teste do Server01 [root@server01 ~]# dig server01.fedorabr.lab
; <<>> DiG 9.9.4-RedHat-9.9.4-73.el7_6 <<>> server01.fedorabr.lab ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 41208 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;server01.fedorabr.lab. IN A ;; ANSWER SECTION: server01.fedorabr.lab. 86400 IN A 192.168.122.150 ;; AUTHORITY SECTION: fedorabr.lab. 86400 IN NS dns02.fedorabr.lab. fedorabr.lab. 86400 IN NS dns01.fedorabr.lab. ;; ADDITIONAL SECTION: dns01.fedorabr.lab. 86400 IN A 192.168.122.200 dns02.fedorabr.lab. 86400 IN A 192.168.122.201 ;; Query time: 1 msec ;; SERVER: 192.168.122.200#53(192.168.122.200) ;; WHEN: Sex Abr 12 17:29:22 -03 2019 ;; MSG SIZE rcvd: 138</pre> Teste com NSLOOKUP: [root@server01 ~]# nslookup fedorabr.lab
Server: 192.168.122.200 Address: 192.168.122.200#53 Name: fedorabr.lab Address: 192.168.122.200 Name: fedorabr.lab Address: 192.168.122.201 Name: fedorabr.lab Address: 192.168.122.150
Ok, prontinho seu serviço de DNS está pronto para o trabalho, até a próxima.
Obs: Esta é uma série de tutoriais de serviços de rede, se está querendo acompanhar, este ambiente será usado em outros serviços que vamos disponibilizar.
Referências:
https://pt.wikipedia.org/wiki/Sistema_de_Nomes_de_Domínio
Comentários
-
Excelente @ChicoFedora.
O serviço de DNS é um dos mais importantes. Mandou bem e vlw0 -
Eu quem agradeço meu mano.
0 -
excelente @ChicoFedora .
0 -
Digite seu comentário> @FedoraBR disse:
excelente @ChicoFedora .
0
Salas de discussão
- 721 Todas as salas de discussão
- 5 Eventos
- 402 Fedora
- 7 CoreOS
- 137 Spins
- 11 CINNAMON
- 28 GNOME
- 63 KDE
- 10 LXDE
- 4 LXQT
- 13 MATE
- SOAS
- 3 XFCE
- 13 Server
- 84 Workstation
- 33 SilverBlue
- Atomic
- 3 Labs
- ARM®
- 3 Segurança
- 7 Servidores
- 222 Tutoriais
- 6 Críticas e Sugestões
- 16 Novidades e anuncios
- 5 CentOS
- 18 Games
- 31 Hardware
- 8 Linguagens de programação