Sobre o Kernel

Definição de Kernel:
 O Kernel, que traduzindo-se obtemos "núcleo", como a própria palavra já expressa, é onde se centraliza algo, no caso de Sistemas Operacionais, o Kernel é o componente

do sistema onde é centralizada todas as comunicações de entrada e saída e processamento de dados. É neessário que se centralize tudo, pois este núcleo precisa ter o

mais baixo nível possível, servindo de ponte entre as aplicações e os dispositivos de processamento, memória e entrada e sáida de dados.

 A importância de se ter um núcleo junto com o software, é que este núcleo, define-se como um componente do sistema mais complexo do que o sistema em sí, pois está

entre o código assembler, e os programas escritos "genéricamente" em alto nível. O sistema se tornaria complexo demais sem o uso de um Kernel.



 Função do Kernel:

 Durante o uso do Sistema Operacional, diversos aplicativo podem estar em execução aleatoriamente, isto é, compartilham o mesmo dispositivo, ambos os processos

precisam da atenção do hardware para que ele possa ser processado. Para que a demanda seja processada de forma ordenada, o componente responsável por gerenciar este

compartilhamento de processos, é o próprio núcleo do sistema, o Kernel. Ele é também responsável por endereçar os programas na memória, e definir as prioridades em

acessar dispositivos de entrada e saída, tais como teclado, mouse, monitor, unidades de disco, etc.


 Sobre Kernel

O primeiro MAC OS, continha um kernel que não tinha suporte a multi tarefas, e carecia de recursos básicos, logo, no MAC OS X, foi utilizado juntamente ao sistema, o

núcleo do BSD, e Mach, que é um Kernel Micronúcleo, que basicamente cria um núcleo para gerenciar cada processo, tornando o sistema mais complexo de se desenvolver,

porém mais ágil.

 No caso da Microsoft, o Kernel foi se caracterizando aos poucos ao longo das versões, até as versões 9x do windows, o kernel era um pouco abstrato, um kernel hidrido

16 e 32 bits, requerendo o MS-DOS rodando em fundo.
 Pode-se destacar desta versão do kernel os seguintes arquivos:

IO.SYS - executavel responsavel pelas funções básicasde rotinas de entrada e saída de dados.
MSDOS.SYS - Contém configurações de baixo nível de boot.
COMMAND.COM - Executavel de linha de comando do shell
WIN.COM - Responsável em carregar a interface o sistema operacional em si.
LOGO.SYS - Contém o logo do windows em bitmap codificado exibido durante o boot do windows.

O sistema pode fazer o uso do arquivo CONFIG.SYS (que contém comandos executados antes do interpretador de comandos) e o AUTOEXEC.BAT (contém tarefas que são rodadas

antes de carregar o COMMAND.COM), mas estes dois arquivos não são tão criticos quanto os demais para o inicio do sistema.


 Sistemas Superiores do Windows, usam Kernel chamando NT.Neste existem dois tipos de acesso à máquina propriamente dita. O modo Usuário, e o Modo Kernel.
 No modo usuário, os aplicativos que rodam dele, trabalham com uma prioridade menor, o modo usuário é dividido em dois modos, o modo ambiente e o modo integral. O modo

ambiente foi inicialmente desenvolvido para trabalhar com aplicativos feitos para diferentes sistemas operacionais, rodando processos de 16 bits, parcialmente um modo

seguro de se rodar aplicativos antigos.
 O modo integral é um tipo de Modo seguro, onde os acessos são concedidos conforme as permissões de cada usuário, através do uso de uma API.

 O outro modo no Kernel NT, é o Modo kernel, que define-se como um modo que pode parar os processos do modo usuário, em casos onde estejam tentando acessar onde não se

tem a devida permissão. Aplicativos rodando sobre o Modo Kernel trabalham com um nível de prioridade maior, fazendo uma leitura direta aos drivers e ao Kernel.
 Arquivos de alta importância deste Kernel: NTOSKRNL.EXE, NTKRNLMP.EXE, Ntkrnlpa.exe e Ntkrpamp.exe.



 O Kernel do Linux

http://upload.wikimedia.org/wikipedia/en/timeline/b344a2a6fb295d5d30c8a9ce4f565969.png

http://upload.wikimedia.org/wikipedia/commons/5/5b/Linux_kernel_map.png

 Os sistemas Linux, trabalham na mesma idéia, servindo de base para o desenvolvimento de kernels proprietarios, desde 1991, até o presente momento, os Kernels Linux,

se mostraram bastante eficazes, por serem abertos e eficientes, sendo utilizados largamente em computadores, CLPs e celulares. Kernels de Unix são basicamente

idênticos, sendo o centro em meio do Sistema operativo, o Shell e serviços de rotina (inicialização e etc), tendo como responsabilidade o Hardware. Em grosso modo,

pode-se dizer respectivamente que do usuário até o Hardware, temos os apliativos, o Sistema operacional, o Shell, o Kernel, e ai então o Hardware. Existem casos onde

aplicativos podem fazer parte do Kernel como rotinas, de modo a agilizar o processo, se tornando parte do sistema operacional, como o caso do Iptables, que consiste em

trabalhar com módulos inclusos no próprio Kernel do sistema.

 De um modo bastante genérico, pode-se imaginar um Kernel como o motor de um carro, para conduzir o veículo, não manuseamos diretamente o motor, fazemos o uso de pedais, e comandos (shell) para então, controlarmos o motor (kernel) para movimentar o veículo (sistema operacional).



Fontes:

http://en.wikipedia.org/wiki/Linux_kernel

http://www.vivaolinux.com.br/artigo/Como-explicar-o-que-e-kernel-para-um-leigo/

http://en.wikipedia.org/wiki/File:Object_Manager_%28Windows%29_screenshot.png

http://en.wikipedia.org/wiki/Ntoskrnl.exe

http://en.wikipedia.org/wiki/Architecture_of_Windows_NT

http://en.wikipedia.org/wiki/Architecture_of_Windows_9x

http://en.wikipedia.org/wiki/Windows_kernel

http://pt.wikipedia.org/wiki/N%C3%BAcleo_%28inform%C3%A1tica%29

https://www.google.com.br/search?q=Kernel+unix&hl=pt-BR&safe=off&client=firefox-a&hs=Sis&tbo=u&rls=org.mozilla:pt-BR:official&tbm=isch&source=univ&sa=X&ei=O6O2UIXFFanI0QHK94HQBw&ved=0CDAQsAQ&biw=1366&bih=664
 

Roteamento em servidores Linux e Windows


Introdução

Neste tutorial você aprenderá a configurar servidores para trabalhar em NAT e roteando redes distintas, conectadas a clientes de rede. Como na topologia não existe um servidor DNS, não focarei nesta configuração, pois os testes de internet nos clientes podem ser feitos usando o ping para um destino em ip. Porém, caso pretenda que as estações linux “piguem” pelo nome, edite o arquivo /etc/resolv.conf acresentando “nameserver 8.8.8.8” (sem aspas).

ATENÇÃO!

Para a realização desta topologia, é altamente recomendável a verificação de sua máquina principal no quesito de hardware. O mínimo recomendável para rodas todas as máquinas simultâneamente seria um processador Intel ou AMD dual core x86, 3 Giga bytes de memória RAM, e 20 Giga bytes de espaço livre em disco. Caso não conte com uma destas condições, o VMware apresentará erros, impossibilitando o trabalho. As maquinas virtuais trabalharão perfeitamente com 256MB de memória ram, exeto o Windows Server que precisará de 1GB.

Nos comandos, o Linux entende que uma palavra escrita de letra maiúscula é diferente de uma palavra minúscula, lembre-se sempre disso!

Recursos utilizados:


  • VMware Workstation 9
  • Centos Minimal:
  • Windows XP Professional
  • Windows 2008 Server R2
  • Acesso à internet


Maquinas virtuais:


  • Cliente linux vmnet2
  • Cliente Linux 2 vmnet6
  • Cliente Windows vmnet5
  • Roteador Windows vmnet3, vmnet4 e vmnet5
  • Roteador Linux 2 vmnet4 e vmnet6
  • Roteador Linux 1 NAT, vmnet2 e vmnet3



Topologia de rede e IP’s:

Conexões de rede:











Relação de IPs:









Servidor Router1

Placa de Rede eth0





Iremos configurar uma interface de cada vez, instalamos uma placa, configuramos, desligamos a maquina, colocamos outra placa, configuramos a, e assim por diante.





#rm /etc/udev/rules.d/70-persistent-net.rules (zerar as configurações de rede)


#reboot (reiniciar)


#ifconfig (só tinha a interface lo ativa, mas essa não serve pra o que queremos)


#ifconfig eth0 up (agora vemos a eth0)


CONFIGURANDO IPs NAS INTERFACES


#vi/etc/sysconfig/network-scripts/ifcfg-eth0 (vamos configurar a placa eth0)


Como esta placa estará em NAT, ela poderá pegar IP externo, então vamos colocar DHCP nela, e configurar para subir sozinha na inicialização:


Obs: Pressione a tecla “i” para habilitar a edição.


BOOTPROTO=dhcp


ONBOOT=yes


DEVICE=eth0


Pronto! Pressione “ESC” no teclado, e digite “:wq” (sem aspas) para sair e salvar. Vamos reiniciar a maquina para verificar se ela está realmente levantando a placa na inicialização sozinha:


#reboot

Depois que inicializar, use:


#ifconfig


Verifique se ela aparece na lista e o IP que ela pegou. Se não funcionou, reveja o arquivo editado anteriormente.


Vamos desligar a maquina e adicionar uma nova placa de rede.


#halt (desligar)




Placa de Rede eth1


Clique em “Edit virtual machine settings”, depois adicione uma nova placa de rede conectada na rede Vmnet2.








Ligue sua maquina virtual.


#ifconfig


Já podemos ver que a placa não subiu sozinha na inicialização, os procedimentos serão basicamente os mesmos para sua configuração.


#ifconfig eth1 up

Se a placa subiu, podemos contiuar:


#vi/etc/sysconfig/network-scripts/ifcfg-eth1


BOOTPROTO=static


DEVICE=eth1


IPADDR=192.168.0.1


NETMASK=255.255.255.0


GATEWAY=192.168.38.134 (colocar o ip da interface eth0)


ONBOOT=yes





Salve e saia do arquivo. Reinicie a maquina para verificar se a placa subiu na inicialização.


Placa de Rede eth2


Como os procedimentos de configuração desta placa é idêntico aos demais, serei menos específico desta vez.


Clique em “Edit virtual machine settings”, depois adicione uma nova placa de rede conectada na rede Vmnet3.


Ligue sua maquina virtual.


#ifconfig


Já podemos ver que a placa não subiu sozinha na inicialização, os procedimentos serão basicamente os mesmos para sua configuração.


#ifconfig eth2 up

Se a placa subiu, podemos contiuar:


#vi/etc/sysconfig/network-scripts/ifcfg-eth2


BOOTPROTO=static


DEVICE=eth2


IPADDR=172.0.0.1


NETMASK=255.255.255.252


GATEWAY=192.168.38.134 (colocar o ip da interface eth0)


ONBOOT=yes





Salve e saia do arquivo. Reinicie a maquina para verificar se a placa subiu na inicialização.


Habilitando roteamento e NAT


Consideirando que a placa eth0 esteja com a conexão de internet, vamos habilitar o roteamento e redistribuir a internet às demais placas de rede.


# echo "1" > /proc/sys/net/ipv4/ip_forward


Com este comando você deverá ter habilitado o roteamento, para conferir, use o seguinte comando:


# cat /proc/sys/net/ipv4/ip_forward


Deverá aparecer o número “1” na linha de baixo, caso aparece o numero zero, é porque o comando foi digitado erroneamente.


Seguindo agora para o roteamento, vamos adicionar todas as redes remotas, ou seja, as redes que não estão conectadas fisicamente no nosso servidor, seguindo o modelo:


“O que, para onde e por onde”.


# route add –net 192.168.38.134 (gateway pego pelo DHCP)


# route add -net 192.168.2.0/24 gw 172.0.0.2


# route add -net 172.0.1.0/24 gw 172.0.0.2


# route add -net 192.168.1.0/24 gw 172.0.0.2

Vamos agora habilitar o NAT:


# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

Caso a interface com internet seja a eth1 por exemplo, basta alterar no comando, mas seguindo o tutorial ao pé da letra, deverá ser a placa eth0 mesmo.


# iptables –F


Ao reiniciar a máquina o roteamente deixará de funcionar, então para que as configurações se apliquem na inicialização do sistema deveremos editar dois arquivos:


Edite o arquivo /etc/sysctl.conf e altere a linha:


net.ipv4.ip_forward = 0

No lugar do zero, coloque “1”


net.ipv4.ip_forward = 1









Salve o arquivo.

Insira os comandos no arquivo /etc/rc.d/rc.local conforme a imagem.


iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


iptables –F

Para isso, digite:


# vi /etc/rc.d/rc.local








Salve o arquivo e corra para o abraço!



Cliente Linux 1


Como este e apenas uma máquina cliente, serão necessários poucos passos para a sua configuração:


Antes de tudo, certifique-se que a maquina encontra-se na rede correta:










# rm /etc/udev/rules.d/70-persistent-net.rules (zerar as configurações de rede)


# reboot (reiniciar)


# ifconfig (só tinha a interface lo ativa, mas essa não serve pra o que queremos)


# ifconfig eth0 up (agora vemos a eth0)


CONFIGURANDO IP NA INTERFACE ETH0


# vi/etc/sysconfig/network-scripts/ifcfg-eth0 (vamos configurar a placa eth0)


BOOTPROTO=static


DEVICE=eth0


IPADDR=192.168.0.2


NETMASK=255.255.255.252


GATEWAY=192.168.0.1


ONBOOT=yes





Pronto! Pressione “ESC” no teclado, e digite “:wq” (sem aspas) para sair e salvar. Vamos reiniciar a maquina para verificar se ela está realmente levantando a placa na inicialização sozinha:


# reboot

Depois que inicializar, use:


# ifconfig


Verifique se ela aparece na lista e o IP que ela pegou. Se não funcionou, reveja o arquivo editado anteriormente.






Servidor Windows 2008 Server






Antes de tudo, será necessário que a maquina Windows Server contenha três placas de rede. Adicione-as normalmente uma a uma, assim como feito no Linux Server, para evitar confusão.


Adicionando a primeira placa, inicie o servidor, clique em Start (iniciar), Control Panel (Painel de controle), Em seguida em Seguida em Network and Sharing Center (Central de rede e compartilhamento). Ao lado esquerdo da tela, clique em Manage network connections (Alterar configurações do Adaptador).


Neste momento teremos apenas um adaptador de rede, para configurar um IP nesta interface, basta clicar com o botão direito na interface, depois em Properties (propriedades). Procuramos configurações de IPV4, e lá definimos o IP que precisamos.











Este IP é o da interface vmnet3.






Basta desligar a maquina e adicionar a interface conectada na vmnet4 e vmnet5


Vamos adicionar o serviço de Roteamento no servidor Windows. Tudo bastante simples:


Primeiramente abrimos o Gerenciador de serviços (circulado em vermelho), depois em Add Roles (adicionar Funções em português).










Depois clicamos em Avançar, até chegar na etapa onde escolhemos os serviços desejados. Escolhemos então “Network Policy and Access Service” (em português “Serviço de Acesso e diretiva de rede”) e clicamos em avançar. Em seguida marcamos as duas primeiras opções, sendo que automaticamente serão marcadas mais duas. Basta avançar e clicar em install (“instalar” em português).


Após finalizado, clicar em Start (iniciar), Administrative Tools (Ferramentas administrativas), Routing and Remote Access (Roteamento a acesso remoto).






Para habilitar o roteamento, clique com o botão direito no servidor ao lado esquerdo conforme na imagem a cima e clique na primeira opção.













Clique em Next, em seguida em Custom Configuration (Configuração personalizada), em seguida marque a opção LAN Routing e clique em finish (Finalizar). Caso apareça alguma janela de mensagem, basta clicar em “ok”













Em IPv4, escolha Static Routes (Rotas estáticas), em seguida no espaço em branco ao lado clique com o botão direito, e escolha New Static Route (Nova Rota Estática).


Deverão conter então, cinco rotas estáticas:







Windows 2008 server está agora Pronto!





Roteador Linux 2


Eth0 (em vmnet4):


BOOTPROTO=static


DEVICE=eth0


IPADDR=172.0.1.2


NETMASK=255.255.255.252


GATEWAY=172.0.1.1


ONBOOT=yes

Eth1 (em vmnet6):


BOOTPROTO=static


DEVICE=eth1


IPADDR=192.168.1.1


NETMASK=255.255.255.0


GATEWAY=192.168.1.1


ONBOOT=yes

Habilitar roteamento (estes comandos precisam ser feitos a cada inicialização a menos que configure-os na inicialização):





#route add default gw 172.0.1.1


Habilite o nat novamente no arquivo /etc/sysctl.conf conforme visto no inicio do tutorial:


net.ipv4.ip_forward = 0

No lugar do zero, coloque “1”


net.ipv4.ip_forward = 1

Salve o arquivo.

Insira os comandos no arquivo /etc/rc.d/rc.local


iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE


iptables –F

Salve o arquivo.



Cliente Linux 2


Como este e apenas uma máquina cliente, serão necessários poucos passos para a sua configuração:


Antes de tudo, certifique-se que a maquina encontra-se na rede correta, neste caso, vmnet6.


BOOTPROTO=static


DEVICE=eth0


IPADDR=192.168.1.2


NETMASK=255.255.255.0


GATEWAY=192.168.1.1


ONBOOT=yes


Cliente pronto!



Cliente Windows


Clique em “Iniciar”, depois em “Painel de controle”, em seguida em “Conexões de rede e internet”, depois em “Conexões de rede”, clique com o botão direito em “Conexão local” depois em propriedades. Procure na lista de itens por “Protocolo TCP/IP”. Preencha os campos conforme a imagem:








Maquina pronta.







Resultados

Ping externo, em cliente Linux e em cliente Windows


Cliente Linux 1







Cliente Linux 2






Traceroute:







Cliente Linux 2







Cliente Windows










Conclusão





Pode-se facilmente perceber o valor de um servidor Linux devido seu custo em questão de hardware para executar a mesma ação do servidor Windows, que neste caso específico se mostrou inviável. Um roteador pode sim ser substituído por uma maquina, porém, obviamente com suas limitações, pois um roteador gerenciável já contém suas devidas portas preparadas para o seu serviço, mas em casos onde não se tem um roteador, usa-se então um computador simples (ou sofisticado, dependendo dos serviços paralelos).


Durante a configuração é indiscutível o fato de algum problema imprevisto ocorrer, o que leva o administrador da rede recorrer ao site de buscas finalizando a pesquisa em fóruns, dos quais algum outro indivíduo já passou por tal situação, sendo esta um aprendizado a mais como presente pela solução.


O comando “ping” desperta uma grande expectativa aos comandos anteriormente configurados para o funcionamento da rede, a segunda reação pode ser alívio por ter funcionado, ou inconformidade por não funcionar.


Quanto mais aprendemos, mais se percebe que pouco sabemos.






Termos usados


Host: Cada cliente da rede


Gateway: IP do dispositivo que interligará redes diferentes. Imagine que você esteja em Santa Catarina, e esteja querendo ir para São Paulo, neste caso, hipoteticamente, o gateway será Curitiba, pois ela é quem tem as estradas que lhe levará até São Paulo.


Broadcast: O IP que responde para de todos os hosts. Imagine uma conversa com João, Maria e Melanie. Você quer conversar com Melanie, então a chamará: “Melanie, olha pra mim!” Usando o Broadcast, você diria: “Olhem TODOS para mim!”.


#: Este símbolo significa que o comando deverá ser utilizado como usuário root para funcionar.


:wq : Comando para salvar e sair do editor de texto vi após apertar ESC.








Este tutorial pode ser copiado para qualquer site e compartilhado com seus amigos desde que esteja provido da fonte e não sofra alterações. Quaisquer erros ou situações onde estejam faltando algum dado de configuração para o funcionamento da topologia, entre em contato para que eu possa fazer a revisão.





Por Maicon Douglas de Souza em nattylinux.blogspot.com

 

Configurar um IP fixo

 Em implementações de servidores linux ou em alguns casos, terminais linux, é comum o uso de IPs fixos para manter o funcionamento de determinadas topologias de rede. Tendo em vista estes casos, segue um tutorial simples para a confinguração de IP fixo. Semples sápido e fácil

 Considerando que você tenha apenas uma placa de rede, digite o seguinte comando:


#vi /etc/sysconfig/network-scripts/ifcfg-eth0


neste arquivo deverá conter as seguintes informações:

DEVICE="eth0"
IPADDR= coloque aqui o ip desejado
NETMASK= a máscara de sub-rede
GATEWAY= o ip do próximo salto (modem, roteador, firewall)
ONBOOT="yes"

Caso esteja em dúvida sobre as máscaras de rede para colocar no campo NETMASK, segue uma pequena lista:
Para a rede 10.0.0.0 usa-se 255.0.0.0
Para a rede 172.16.0.0 usa-se 255.255.0.0
Para a rede 192.168.0.0 usa-se 255.255.255.0

O Gateway precisa ser o ip de próximo salto, como o IP do próximo ponto que irá rotear.
Após a configuração, digite
 
#service network restart
#ifconfig

Após digitado o primeiro comando que reiniciará o serviço de rede, o comando ifconfig mostrará os IPs configurados.
No caso de FAIL após o primeiro comando, verifique o arquivo ifcfg-eth0 se não está com espaços entre o IP e o sinal = , ou se não trocastes = por  : . Os IPs não precisam estar entre aspas. 

Usado Centos 6.3 para o tutorial.