Exercício cio Roteamento Linux Edgard Jamhour Exercícios práticos para configuração de roteamento usando Linux Esses exercícios devem ser executados através do servidor de máquinas virtuais: espec.ppgia.pucpr.br 1
Máquina Virtual Conexão via VNC espec.ppgia.pucpr.br Virtual 1 Virtual 2 Seu computador internet Virtual 3 Virtual 4 Para realização destes exercícios práticos serão utilizados as máquinas virtuais no ambiente remoto espec.ppgia.pucpr.br. Para acessar a espec, você deve digitar no seu navegador web o endereço: http://espec.ppgia.pucpr.br. Em seguida, clique no ícone, Cliente VNC Windows. Se desejar, você pode salvar o programa vncviewer.exe no seu computador, ou executá-lo diretamente. Na janela do VNC Viewer, digite no campo Server: espec.ppgia.pucpr.br:1 No ambiente Fedora, digite seu login e senha. Abra um terminal utilizando a seqüência de comandos: Applications Acessórios Terminal. No terminal, crie um diretório para sua máquina virtual. Obs. O símbolo :~> representa o prompt do terminal e não deve ser digitado. :~>mkdir praticaredes1 :~>cd praticaredes 1 Para iniciar uma máquina virtual, digite o seguinte comando: :~> linux32.redes G1 Dentro da máquina virtual, o login é root Para terminar a máquina virtual, digite halt. Importante, caso você encerre a máquina virtual de forma anormal, por exemplo, fechando o terminal sem terminar a máquina com halt, é necessário apagar o arquivo de imagem da máquina virtual antes de inciar uma nova máquina. O arquivo da máquina virtual está no diretório praticaredes1, sob a denominação rootsfs-32.g1. Para remover o arquivo, digite: :~>rm rootsfs-32.g1 2
O Ambiente de Rede das s Virtuais Seu Ambiente Host HUB VIRTUAL 20.0.0.1 eth0 Virtual 1 Virtual 2 eth0 eth2 eth3 eth2 eth3 A figura ilustra como é o ambiente de rede da máquina virtual. Cada máquina virtual possui 4 interfaces de rede (o número de interfaces é definido no script linux32.redes). Como as máquinas virtuais emulam interfaces do tipo ethernet, a denominação dessas interfaces no linux é eth0,, eth2, etc. A interface eth0 está conectada logicamente ao ambiente do Host, isto é, o servidor espec. Através da interface eth0, a máquina virtual pode acessar ao ambiente do host. Por exemplo, se você desejar transferir arquivos entre a máquina virtual e seu diretório na espec, é necessário utilizar a Interface eth0. O endereço da espec é 20.0.0.1/8. Para poder se comunicar com o ambiente Host, a máquina virtual deve ter um endereço como o mesmo prefixo da espec, isto é na faixa entre 20.0.0.2 e 20.255.255.254, na interface eth0. As demais interfaces, eth2 e eth3 não se conectam a espec. Elas servem apenas para conectar as máquinas virtuais entre si. Por exemplo, a interface da máquina virtual 1 está conectada na interface da máquina virtual 2. Conceitualmente, a conexão é do tipo Hub. As interfaces eth2 também estão interconectadas, mas num Hub distinto da interface. As interfaces eth3 também estão ligadas, através de um terceiro Hub. A maneira de utilizar as interfaces para construir nossos cenários de rede será explicada na seqüência deste roteiro. 3
Configuração de Endereços na Máquina M Virtual Configuração temporária do endereço IP ifconfig $INTERFACE $IP netmask $MASCARA Exemplos: ifconfig eth0 20.0.1.101/8 ou ifconfig eth0 20.0.1.101 netmask 255.0.0.0 Verificação do IP das interfaces ifconfig ou ifconfig eth0 Ativação ou desativação das interfaces ifconfig eth0 up ifconfig eth0 down Configuração permanente do endereço IP cd /etc/sysconfig/network-scripts Arquivo ifcfg-eth0: DEVICE=eth0 BOOTPROTO=static IPADDR=20.0.1.101 NETMASK=255.0.0.0 ONBOOT=yes Reinicialização da interface: service network restart Existem duas formas de configurar um endereço IP no linux sem utilizar a interface gráfica. A primeira, é através do comando ifconfig. A configuração feita com o comando ifconfig é temporária, pois quando o sistema operacional é reiniciado, a configuração é perdida. A sintaxe para o comando ifconfig é mostrada na figura. A segunda forma é permanente, no sentido em que se o sistema operacional for reiniciado o endereço permanecerá. Essa segunda forma de configuração é feita editando-se um arquivo que é lido durante o processo de inicialização do serviço de rede. A localização do arquivo é a seguinte: /etc/sysconfig/network-scripts Nesse diretório devem ser colocados os arquivos de inicialização de cada uma das interfaces da máquina. Por exemplo, para interface eth0, o arquivo denomina-se ifcfg-eth0. Para interface, ifcfg-, e assim por diante. O arquivo para interface eth0 já está previamente criado. Para as demais interfaces é necessário criar o arquivo. A figura acima ilustra o conteúdo do arquivo quando deseja-se atribuir um endereço estático 20.0.1.101/8 para a interface eth0. O que a interface gráfica faz, é preencher este arquivo automaticamente para o usuário. Para forçar a leitura desse arquivo sem reiniciar o sistema operacional, deve-se utilizar o comando: service network restart. 4
Configuração de Rotas na Máquina M Virtual Adição de rotas route add -net $SUBREDE netmask $MASCARA gw $GATEWAY [metric $custo] [dev $dev] Exemplos: route add -net 10.2.0.0/24 gw 10.1.0.1 metic 10 dev eth0 route add -net 10.2.0.0 netmask 255.255.255.0 gw 10.1.0.1 Criação da rota default: Exemplos: route add -net 0.0.0.0/0 gw 10.1.0.1 route add -net 0.0.0.0 netmask 0.0.0.0 gw 10.1.0.1 route add default gw 10.1.0.1 Remoção de rotas route add -net $SUBREDE netmask $MASCARA gw $GATEWAY Exemplos route del -net 10.2.0.0/24 gw 10.1.0.1 route del -net 10.2.0.0/24 Visualização das rotas route -n A figura mostra a sintaxe dos comandos relacionados a criação, remoção e visualização de rotas no ambiente linux. Assim como nos endereços IP, rotas podem ser criadas com a máscara em notação decimal pontuada, ou de forma compactada. No comando, -net especifica a rede de destino para onde a rota será criada. O termo gw especifica o Gateway ou Next-Hop. Se o termo gw for omitido, a rede de destino será considerada local, isto é, acessível sem passar por um roteador. O termo metric representa o custo. Se ele for omitido, o custo atribuído será 0. Apesar de ser possível, geralmente não é necessário especificar a interface de saída, pois o sistema operacional escolhe a interface adequada automaticamente. Se for necessário, utiliza-se o parâmetro dev. A rota default (isto é, a rota para redes externas ou Internet) pode ser definida de modo mais compacto, omitindo-se o termo -net e utilizando-se a palavra reservada default. O comando para remover uma rota é similar ao comando de adição, pela simples substituição da operação add pela del. Se não houver duas rotas para o mesmo destino, não é necessário especificar a rota completamente. Só é necessário especificar o gateway se tivermos duas rotas para o mesmo destino. O comando para visualizar a tabela de roteamento é simplesmente route. Todavia, na maioria dos sistemas linux é recomendável digitar o comando route -n, que impede que o linux tente encontrar os nomes correspondentes aos endereços na tabela através de consultas reversas ao servidor de DNS (esse conceito será estudado mais adiante no curso). 5
Cenário 1 SUB-REDE 1 A 10.A.0.0/24 10.A.0.2 A - número de chamada no eureka 10.A.0.1 G1 Utilizado para evitar conflito com outras máquinas na espec eth0 20.0.1.A 20.0.0.1 espec A figura mostra o primeiro cenário de testes para este roteiro. O elemento G1 na figura é um roteador e o elemento A é um computador. O elemento G1 tem uma conexão adicional com a espec através da interface eth0. Essa conexão é necessária para que você possa fazer a transferência de arquivos entre a máquina virtual e o seu diretório na espec (isto é, a máquina host). Primeiramente, vamos configurar a máquina virtual G1, que de acordo com nosso roteiro já deve estar inicializada. Caso a máquina virtual de G1 ainda não tenha sido inicializada, volte para o início deste roteiro (pg. 2), e veja o procedimento de inicialização. Primeiramente, é necessário escolher um endereço para máquina virtual. Esse endereço não pode ser duplicado com outros usuários que estejam usando a espec no mesmo momento que você. Para evitar o conflito, substitua o termo A pelo seu número de matrícula no eureka ou por um número qualquer entre 1 e 254. Nos nossos exemplos, vamos supor que este número é A=10. ifconfig eth0 20.0.1.10/8 route add default gw 20.0.0.1 ifconfig 10.10.0.1/24 up Para fazer com que G1 passe a operar como roteador, é necessário habilitar o roteamento no linux. Digite: sysctl -w net.ipv4.ip_forward=1 Abra um novo terminal na espec ou uma nova aba no terminal já aberto e crie uma nova máquina virtual para representar o host A: :~> linux32.redes A Dentro da máquina virtual correspondente a máquina A, digite: ifconfig 10.10.0.2/24 up route add default gw 10.10.0.1 A partir a máquina A verifique se você consegue pingar a interface e eth0 de G1. ping 20.0.1.10 ping 10.10.0.1 Se você obtiver resposta nestes dois pings, você completou este primeiro cenário com sucesso. 6
Cenário 2 10.A.0.0/24 SUB-REDE 1 10.A.1.0/24 SUB-REDE 2 A 10.A.0.2 10.A.1.2 B eth2 10.A.0.1 G1 eth2 10.A.1.1 G2 A figura mostra o segundo cenário de testes para este roteiro. Uma nova sub-rede (denominada subrede2) será adicionada. O elemento G2 na figura é um roteador e o elemento B é um computador. Primeiramente, é necessário lançar uma nova máquina virtual para representar G2. Abra um novo terminal na espec ou uma nova aba no terminal já aberto e crie uma nova máquina virtual para representar o roteador G2: :~> linux32.redes G2 Dentro da máquina virtual correspondente a G2 digite: ifconfig eth2 10.10.1.1/24 up Para fazer com que G2 passe a operar como roteador, é necessário habilitar o roteamento no linux. Digite: sysctl -w net.ipv4.ip_forward=1 Abra um novo terminal na espec ou uma nova aba no terminal já aberto e crie uma nova máquina virtual para representar o host B: :~> linux32.redes B Dentro da máquina virtual correspondente a máquina B, digite: ifconfig 10.10.1.2/24 up 7
Cenário 2 10.A.0.0/24 SUB-REDE 1 10.A.1.0/24 SUB-REDE 2 A 10.A.0.2 10.A.1.2 B eth2 10.A.0.1 G1 eth3 eth3 eth2 10.A.1.1 G2 10.A.2.1/30 10.A.2.2/30 A figura mostra o terceiro cenário de testes para este roteiro. Nesse cenário foi introduzido uma ligação entre os dois roteadores para que as duas redes possam se comunicar. É necessário incluir a nova interface e as rotas nas máquinas virtuais correspondentes a G1 e G2. Dentro da máquina virtual correspondente a G1 digite: ifconfig eth3 10.10.2.1/30 up route add net 10.10.1.0/24 gw 10.10.2.2 Verifique como ficaram as interfaces e as rotas digitando: ifconfig route n Dentro da máquina virtual correspondente a G2 digite: ifconfig eth3 10.10.2.2/30 up route add net 10.10.0.0/24 gw 10.10.2.1 Verifique como ficaram as interfaces e as rotas digitando: ifconfig route -n Para verificar o funcionamento deste cenário você deve ser capaz de pingar a máquina B a partir da máquina A. De dentro da máquina virtual correspondente a A digite: Ping 10.10.1.2 8