PHP é à quinta-feira – Endereço IPv4 ou IPv6?

PHP é à quinta-feira – Endereço IPv4 ou IPv6?

Criado por Pedro Pinto em 17 de Março de 2011 | 11 comentários

De volta à rubrica “PHP é à quinta-feira“, esperamos que os utilizadores contribuam com sugestões e estamos abertos para receber os vossos artigos , para posteriormente publicação, sobre esta super linguagem de scripting “server-side”.

Pois bem, ontem em conversa com um amigo ele questionava-me como colocar no seu site, a indicação se o cliente estava aceder via IPv4 ou IPv6. Vamos ver como fazer um pequeno script php para esta questão.

php_00

Como já referimos em vários artigos, o IPv6 é a nova versão do protocolo IP, e foi desenvolvido para suceder à actual versão (o IPv4). O que motivou o desenvolvimento desta nova versão foi a aproximação da exaustão do espaço de endereçamento e a necessidade de resolver algumas das limitações do IPv4, nomeadamente no que toca a segurança e mobilidade, e simplificar algumas das funcionalidades do protocolo IPv4.

Exemplo de um endereço IPv4 e IPv6

Endereço IPv4: 192.168.10.1

Endereço IPv6: 2000:490:23d0:6700:f82d:b871:ecb8:fbce

Como podemos ver, um endereço IPv6 tem uma representação hexadecimal de blocos de 16 bits, separados por dois pontos ‘:’, por exemplo:

x:x:x:x:x:x:x:x onde os “x” são números hexadecimais

Script em PHP para indicar se o cliente está aceder ao site com um endereço IPv4 ou IPv6.

Considerando que pretendemos apenas saber se o cliente está a aceder via IPv4 ou IPv6, basta apenas verificar o endereço IP do cliente é separado por ponto ‘.’ (IPv4) ou por ‘:’ (IPv6). Coisa simples não é?

ipv4_ipv6

Para a produção do script precisamos de 2 funções essenciais:

  • $_SERVER[‘REMOTE_ADDR’]; – que me permite obter o endereço do cliente
  • strstr – Encontra a primeira ocorrência de uma string (neste caso os dois pontos ‘:’

Script completo

<?php
 $ip=$_SERVER['REMOTE_ADDR'];
 if (strstr($ip, ":")) {
 echo "O seu endereço IPv6 é o: $ip";
 } else {
 echo "O seu endereço IPv4 é o: $ip";
 }   ?>

O script é relativamente simples e pode servir de base para serviços/páginas engraçadas. Lembram-se daqueles sites em que existia uma tartaruga que dançava quando o utilizador tinha um IPv6 (ver aqui)? Ou o bebé que chorava quando o IP do cliente ainda era IPv4? Através do script disponibilizado é simples fazer páginas desse tipo. Basta apenas incluir por exemplo um gif (ex. tartaruga parada) se o  cliente tiver um endereço IPv4 ou um gif animado se o cliente tiver um endereço IPv6.

Ficamos à espera que nos mostrem as vossas ideia :) . Boas programações! Alguém quer ajudar nesta rubrica?

Artigos relacionados

Download: script_ipv4_v6

Redes–como calcular sub-redes? Parte prática

Redes – Como calcular sub-redes? Parte prática

Criado por Pedro Pinto em 20 de Dezembro de 2010 | 17 comentários

Depois de termos dado algumas dicas de como proceder ao cálculo de sub-redes no artigo Redes – Como calcular sub-redes?, alguns dos nossos leitores solicitaram que fizéssemos um artigo que explicasse como proceder à configuração das máquinas na prática.

Atendendo a esse pedido, criei um pequeno artigo a explicar o que fazer depois do calculo das sub-redes.

image

Aproveitando o exemplo do outro artigo (ver aqui), obtivemos 8 sub-redes (a partir da rede principal 192.168.1.0/24), e para cada sub-rede conseguimos encaixar 30 máquinas.

sub_13Considerando por exemplo que pretendem configurar uma máquina na sub-rede 192.168.1.64 devem definir nessa mesma máquina as seguintes configurações:

IP da máquina: um endereço definido entre 192.168.1.65 até 192.168.1.94

Máscara: 255.255.255.224

Depois de termos procedido ao cálculo das sub-redes podemos proceder à configuração das máquinas na prática. Lembramos que para o cenário-exemplo deste artigo não existe qualquer router (para possibilitar a comunicação entre máquinas de sub-redes diferentes), pelo que as máquinas apenas comunicarão entre outras máquinas da mesma sub-rede.sub_11

As configurações de rede podem ser obtidas automaticamente via DHCP (ou seja, existe na rede um servidor de DHCP ou outro equipamento a proceder ao envio das configurações de rede ao cliente) ou podemos proceder nós próprios (manualmente) às configurações.  Para o presente exemplo vamos proceder à configuração manual e vamos apenas usar a sub-rede 192.168.1.64 (Para as outras sub-redes o processo é idêntico, sendo apenas necessário mudar o endereço IP que deverá estar de acordo com a sub-rede escolhida, a máscara mantém-se a 255.255.255.224).

Vamos considerar então que temos uma máquina com Windows, outra com Linux e outra com MacOS. As configurações devem estar de acordo com o diagrama seguinte:

sub_18

Como configurar uma máquina com SO Windows?

Para quem pretenda configurar endereçamento estático em  máquinas com Windows, aconselhamos a lerem o seguinte artigo: Windows: Configure um IP estático.

O resultado final deverá ser idêntico ao que é apresentado na imagem seguinte:

sub_14

Como configurar uma máquina com SO Linux (Ubuntu)?

Para quem pretenda configurar endereçamento estático em  máquinas com Linux, aconselhamos a lerem o seguinte artigo: Dicas Linux – Configurar endereço IP e DNS. As configurações de rede no Ubuntu podem ser facilmente definidas através do NetworkManager.

O resultado deverá ser algo do género:

sub_17

Como configurar uma máquina com MacOS?

Em MacOS o utilizador pode proceder à configuração de endereçamento estático no menu Preferências de Sistema –> Redes –> Ethernet.

O resultado deverá ser algo do género:

sub_16

Considerações finais

Esperamos que este artigo tenha ido de encontro ao solicitado pelos nossos leitores. Caso tenham alguma dúvida ou questão deixem em comentário que terei todo o gosto em vos ajudar. Em próximos artigos tentaremos abordar um exemplo onde os requisitos a nível de hosts variam de rede para rede. Para comunicação entre máquinas de sub-redes distintas, vamos também tentar trazer um artigo com a solução (provavelmente através do Vyatta). Até lá, mãos à obra!