Comitê Gestor da Internet no Brasil Seu IP: 38.107.191.116 CGI.br Registro CERT.br

Sítio web não compatível com IPv6 Este sítio web funciona com IPv6. Se o globo estiver girando, você também já usa IPv6!


Últimas Atualizações...

25 May 2010 - 18:40:
Relato sobre o Treinamento IPv6 do RIPE

11 Jan 2010 - 17:49:
Introdução ao IPv6 para o CCNA

11 Dec 2009 - 11:14:
Videos sobre cases IPv6 fora do Brasil

09 Jun 2009 - 18:59:
Curso de Introdução ao IPv6

30 Apr 2009 - 17:58:
Construindo um firewall Linux com suporte a IPv6



Artigo

Migração para IPv6 de aplicações usuárias da interface de programação Sockets BSD


Escrito por Elvis Pfützenreuter


  

Índice do Artigo

  

Migração para IPv6 de aplicações usuárias da interface de programação Sockets BSD
Introdução
IPv6: principais mudanças em relação a IPv4
Convivência entre IPv4 e IPv6
Usos práticos do IPv6, hoje
Interface Sockets BSD para programação em IPv6
A interface /proc do Linux
Exemplos de código Sockets BSD para IPv6
Conclusão
Bibliografia


5. A interface /proc do Linux

Na maioria dos sistemas operacionais baseados em Unix, existe um pseudo-sistema de arquivos montado em /proc, que permite obter e mudar configurações do sistema.

Como as configurações em /proc são lidas e gravadas como se fossem arquivos comuns, é muito mais fácil para um programa interfacear com o sistema através desse caminho. Operações tipicamente muito complicadas de se realizar via soquetes, como por exemplo a configuração de interfaces, tornam-se triviais.

Infelizmente, há a grande desvantagem da perda da portabilidade, pois cada sistema operacional Unix estrutura o sistema de arquivos /proc de uma forma particular.

Este trabalho relaciona os principais pseudo-arquivos de configuração presentes no Linux e pertinentes a IPv6.

5.1. /proc/net

O diretório /proc/net apenas fornece dados, não permite alterá-los.

5.1.1. /proc/net/if_inet6

Este arquivo lista as interfaces IPv6 do sistema, conforme o exemplo abaixo:

$ cat /proc/net/if_inet6
00000000000000000000000000000001 01 80 10 80 lo
fe8000000000000002e07dfffe9c924e 02 0a 20 80 eth0
Os campos são, em ordem:

a) endereço IPv6 como um número hexadecimal de 128 bits;

b) número seqüencial da interface (aquele que é necessário informar ao sistema em determinadas circunstância, vide 4.1);

c) comprimento em bits da máscara de rede;

d) escopo da interface;

e) estado da interface;

f) nome da interface no sistema, que é unívoco.

5.1.2. /proc/net/igmp6

Lista as interfaces e endereços que estão na escuta de multicast.

$ cat /proc/net/igmp6
1 lo ff020000000000000000000000000001 1 00000004 0
2 eth0 ff020000000000000000000012341234 1 00000004 0
2 eth0 ff0200000000000000000001ff9c924e 1 00000004 0
2 eth0 ff020000000000000000000000000001 2 00000004 0
Os primeiros quatro campos são os mais importantes:

a) número seqüencial da interface;

b) nome da interface;

c) endereço multicast IPv6, como um número hexadecimal de 128 bits;

d) contagem de aplicativos ouvindo o endereço.

No exemplo em particular, o endereço FF02::1234:1234 foi escolhido por um aplicativo multicast, Esse mesmo aplicativo, bem como o próprio sistema operacional, ouvem ambos o endereço FF02::1 - note que a contagem de uso deste último é igual a 2.

Os demais endereços de multicast são criados pelo sistema operacional e destinam-se à resolução entre endereços IPv6 e endereços de enlace (vide 1.3.8.1).

5.1.3. /proc/net/tcp6

Lista as conexões TCP/IPv6 ativas.

Seu formato é difícil de interpretar visualmente, e não serve para “consumo humano”. Aplicativos de baixo nível como netstat lêem esse arquivo (ao invés de usar chamadas ioctl()) para obter informações do sistema.

Nada impede, é claro, que o administrador do sistema interprete manualmente o arquivo e/ou escreva um aplicativo que o faça.

5.1.4. /proc/net/ipv6_route

Lista as rotas IPv6. Seu formato também não se destina à visualização direta.

5.2. /proc/sys/net/ipv6

Este diretório fornece configurações que podem ser tanto lidas quanto alteradas. (Possibilidade de alteração é uma característica de todos os arquivos em /proc/sys). O acesso a estas configurações pode ser feito tanto diretamente como por meio da função sysctl().

5.2.1. /proc/sys/net/ipv6/conf e /proc/sys/net/ipv6/neigh

Através destes diretórios, pode-se modificar parâmetros IPv6 individuais de cada interface de rede. Para permitir o acesso a cada interface, cada diretório apresenta subdiretórios com os nomes das interfaces.

$ find /proc/sys/net/ipv6/conf/
/proc/sys/net/ipv6/conf/
/proc/sys/net/ipv6/conf/default
/proc/sys/net/ipv6/conf/default/router_solicitation_delay
/proc/sys/net/ipv6/conf/default/router_solicitation_interval
/proc/sys/net/ipv6/conf/default/router_solicitations
...
/proc/sys/net/ipv6/conf/all/dad_transmits
/proc/sys/net/ipv6/conf/all/autoconf
/proc/sys/net/ipv6/conf/all/accept_redirects
/proc/sys/net/ipv6/conf/all/accept_ra
/proc/sys/net/ipv6/conf/all/mtu
...
/proc/sys/net/ipv6/conf/eth0/hop_limit
/proc/sys/net/ipv6/conf/eth0/forwarding
...
/proc/sys/net/ipv6/conf/lo/autoconf
/proc/sys/net/ipv6/conf/lo/accept_redirects
/proc/sys/net/ipv6/conf/lo/accept_ra
...
$ find /proc/sys/net/ipv6/neigh/
/proc/sys/net/ipv6/neigh/
/proc/sys/net/ipv6/neigh/eth0
/proc/sys/net/ipv6/neigh/eth0/locktime
/proc/sys/net/ipv6/neigh/eth0/proxy_delay
/proc/sys/net/ipv6/neigh/eth0/anycast_delay
/proc/sys/net/ipv6/neigh/eth0/proxy_qlen
...
/proc/sys/net/ipv6/neigh/lo/unres_qlen
/proc/sys/net/ipv6/neigh/lo/gc_stale_time
/proc/sys/net/ipv6/neigh/lo/delay_first_probe_time
/proc/sys/net/ipv6/neigh/lo/base_reachable_time
....
/proc/sys/net/ipv6/neigh/default/proxy_delay
/proc/sys/net/ipv6/neigh/default/anycast_delay
/proc/sys/net/ipv6/neigh/default/proxy_qlen
...
O diretório conf/ contém configurações intrínsecas da interface, enquanto neigh/ contém configurações que afetam o relacionamento da interface com os demais nós da rede.

Em ambos os diretórios há um subdiretório default/, uma espécie de modelo cujas configurações são copiadas no momento de ativação de alguma interface.

Dentro de conf/ há ainda o subdiretório all/, que permite mudar determinada configuração de todas as interfaces ao mesmo tempo. Para os fins práticos, os arquivos ali contidos são somente de escrita, pois os valores lidos não representam o estado de nenhuma interface em particular.

Segue alguns exemplos de configurações por interface:

/proc/sys/net/ipv6/conf/eth0/forwarding (se a interface eth0 pode servir para roteamento)

/proc/sys/net/ipv6/conf/eth0/hop_limit (Limite de saltos em pacotes emitidos por eth0)

/proc/sys/net/ipv6/conf/eth0/mtu (MTU dos pacotes emitidos por eth0)

5.2.2. /proc/sys/net/ipv6/route

Contém diversos parâmetros de roteamento IPv6. Dificilmente tais valores precisam ser consultados ou alterados, a não ser possivelmente em roteadores comerciais (tipo "caixa preta") baseados em Linux.


Última atualização 26/08/2008 15h57

Comentários     +  

Seu nome: (max. 35 letras)


Comentário: (max. 2500 caracteres)


Verificação: (se estiver ilegível, clique na imagem)


   


   Licença:  Creative Commons Atribuição 2.5 Brasil (salvo seja especificada outra)     Válido:  XHTML 1.0 -  CSS 3