Quando trabalhamos com vlans, podemos segmentar a rede para diminuir o tráfego broadcast compartilhado e segmentar de forma que por exemplo tenhamos uma vlan por serviço/aplicação. A vantagem de ter um Freebsd com interfaces vlans seria, utilizar a mesma interface física para transportar varios tags (vlan id), excluindo a necessidade de uma placa de rede para cada segmento.
Configurando FreeBSD
Primeiramente necessitamos levantar o módulo if_vlan ou para quem queira deixar este suporte nativamente no kernel.
Para habilitar o suporte a vlans sem ter q recompilar o kernel utilizaremos o comando abaixo:
# kldload if_vlan
Não podemos esquecer de adicionar a entrada if_vlan_load=”YES” no arquivo /boot/loader.conf
Caso você queira compilar o suporte nativamente, adicione a entrada abaixo no seu arquivo de configuração e recompile o seu kernel:
device vlan
Depois do suporte a int vlans estar habilitado, vamos começar a configuração no Freebsd.
Vamos utilizar 4 tags para a nossa configuração, 5, 10, 15 e 20, para facilitar vamos associar o tag ao nome da interface vlan, tag 5 (vlan5), tag 10 (vlan10), tag 15 (vlan15), tag 20 (vlan20).
Criando as interfaces:
# ifconfig vlan5 create
# ifconfig vlan10 create
# ifconfig vlan15 create
# ifconfig vlan20 create
Apenas para conferir se as interfaces foram criadas
# ifconfig
A saída deverá ser algo como mostrado abaixo:
vlan5: flags=8002 mtu 1500
ether 00:00:00:00:00:00
vlan: 0 parent interface:
vlan10: flags=8002 mtu 1500
ether 00:00:00:00:00:00
vlan: 0 parent interface:
vlan15: flags=8002 mtu 1500
ether 00:00:00:00:00:00
vlan: 0 parent interface:
vlan20: flags=8002 mtu 1500
ether 00:00:00:00:00:00
vlan: 0 parent interface:
Nossas interfaces ja estão criadas, agora vamos associa-las ao devido tag e a interface física.
OBS: não é necessario a nome da int vlan ter o mesmo tag, por exemplo, pode ser criado a interface vlan0 e associado qualquer tag, criamos a vlan5 associada ao tag 5 para ficar mais fácil de coomprender.
Associando os tags:
# ifconfig vlan5 vlan 5 vlandev em0
# ifconfig vlan10 vlan 10 vlandev em0
# ifconfig vlan15 vlan 15 vlandev em0
# ifconfig vlan20 vlan 20 vlandev em0
Pronto, os tags ja estao devidamente configurados e associados a interface física em0.
Agora, atribua os endereços ips nas interfaces vlans.
# ifconfig vlan5 192.168.5.1 netmask 255.255.255.0 up
# ifconfig vlan10 192.168.10.1 netmask 255.255.255.0 up
# ifconfig vlan15 192.168.15.1 netmask 255.255.255.0 up
# ifconfig vlan20 192.168.20.1 netmask 255.255.255.0 up
A saída do ifconfig ficará como mostrado abaixo:
vlan5: flags=8843 mtu 1500
inet 192.168.5.1 netmask 0xffffff00 broadcast 192.168.5.255
inet6 fe80::203:47ff:fe07:63ff%vlan20 prefixlen 64 scopeid 0xb
ether 00:0a:5e:53:f8:ec
media: Ethernet autoselect (100baseTX )
status: active
vlan: 5 parent interface: em0
vlan10: flags=8843 mtu 1500
inet 192.168.10.1 netmask 0xffffff00 broadcast 192.168.10.255
inet6 fe80::203:47ff:fe07:63ff%vlan20 prefixlen 64 scopeid 0xb
ether 00:0a:5e:53:f8:ec
media: Ethernet autoselect (100baseTX )
status: active
vlan: 10 parent interface: em0
vlan15: flags=8843 mtu 1500
inet 192.168.15.1 netmask 0xffffff00 broadcast 192.168.15.255
inet6 fe80::203:47ff:fe07:63ff%vlan20 prefixlen 64 scopeid 0xb
ether 00:0a:5e:53:f8:ec
media: Ethernet autoselect (100baseTX )
status: active
vlan: 15 parent interface: em0
vlan20: flags=8843 mtu 1500
inet 192.168.20.1 netmask 0xffffff00 broadcast 192.168.20.255
inet6 fe80::203:47ff:fe07:63ff%vlan20 prefixlen 64 scopeid 0xb
ether 00:0a:5e:53:f8:ec
media: Ethernet autoselect (100baseTX )
status: active
vlan: 20 parent interface: em0
Nossas configurações já estão prontas, todas as int vlans configuradas com as tags associadas e com a interface física fxp0 devinida.
Agora vamos colocar nossas configurações no rc.conf para nao perde-las quando o FreeBSD for rebootado.
Adicionar no arquivo /etc/rc.conf as entradas abaixo:
cloned_interfaces="vlan5 vlan10 vlan15 vlan20"
ifconfig_vlan5="inet 192.168.5.1 netmask 255.255.255.0 vlan 5 vlandev em0"
ifconfig_vlan10="inet 192.168.10.1 netmask 255.255.255.0 vlan 10 vlandev em0"
ifconfig_vlan15="inet 192.168.15.1 netmask 255.255.255.0 vlan 15 vlandev em0"
ifconfig_vlan20="inet 192.168.20.1 netmask 255.255.255.0 vlan 20 vlandev em0"
Nossa configuração está concluída no lado do FreeBSD, vou colocar a configuração que deve ser realizada switchs Cisco Catalyst 3750.
Logue no switch com seu usuário e senha, entre em modo enable:
Switch# enable
Defina uma porta onde será conectado o FreeBSD com as interfaces vlans, no nosso exemplo vamos escolher a porta Gi1/0/1.
Entre em como de configuração
Switch# configure terminal
Switch (config)# interface Gi1/0/1
Lembrando que a interface pode variar conforme o modelo do switch.
Switch (config-if)# switchport trunk encapsulation dot1q
Switch (config-if)# switchport mode trunk
Switch (config-if)# switchport trunk allowed vlan 5,10,15,20
Switch (config-if)# description “DESCRIÇÃO DA PORTA”
Com estas configurações na porta estamos deixando trafegar apenas as vlans 5, 10, 15 e 20, caso queira adicionar mais uma vlan no trunk do switch, utilize o comando abaixo:
Switch (config-if)# switchport trunk allowed vlan add 25
Adicionamos a vlan 25 na porta Gi1/0/1 do switch.
Configure o restante das portas do switch em mode access conforme mensionado abaixo:
Switch (config-if)# interface Gi1/0/2
Switch (config-if)# switchport mode access
Switch (config-if)# switchport access vlan 5
Com isso a porta dois consequirá conversar com a interface vlan 5 do FreeBSD através da porta 1 do switch que esta configurada em mode trunk. Faça o mesmo com as outras portas definindo a vlan que deve ser acessada pela porta.
Com isto finalizamos nosso how-to, este tipo de configuração normalmente é utilizado em firewalls, faça um cálculo de tráfego para não ter gargalo físico na placa de rede, se o tráfego for grande em cada vlan utilize uma placa Gigabit de boa qualidade.
sexta-feira, 23 de fevereiro de 2007
Configurando Interfaces VLAN no FreeBSD
quarta-feira, 14 de fevereiro de 2007
Simulando um roteador com JunOS
Não é de hoje que sabemos que grande parte da arquitetura dos roteadores da Juniper é totalmente baseada no PC: memória RAM, ROM, CPU, placa-mãe, etc. Também sabe-se que o JunOS - sistema operacional que controla uma parte específica destes roteadores: a routing engine ou RE - é também baseado no sistema operacional FreeBSD. Por isso, sempre houve um certo mito sobre a possibilidade de rodar o JunOS em um PC "caseiro". Esta combinação - PC mais o JunOS - foi gentilmente apelidada de Olive. A principal motivação para instalarmos o Olive - além da natural curiosidade - é o aprendizado e a familiarização com o sistema operacional JunOS.
Em linhas gerais, os passos para instalar o Olive são:
- Instalar o FreeBSD
- Instalar o pacote do JunOS (jinstall)
- Reboot
Existem também algumas dicas e observação importantes que podem ajudar neste teste. Para começar é recomendável instalar o FreeBSD 4.x-mini (testado com a versão 4.4-mini) com a seguinte estrutura de diretórios:
ad0s1a / 100M
ad0s1b swap 1G
ad0s1e /config 12M
ad0s1f /var (maior slice, o resto do disco)
Apesar de ser aconselhável utilizar o modelo de particionamento acima, a instalação do pacote jinstall (JunOS) poderá alterar a estrutura de diretórios caso seja necessário. O próximo passo é copiar o pacote do JunOS - que deve ser um arquivo do tipo jinstall-xxx.tgz - para o diretório /var/tmp e iniciar a instalação. Os passos são:
rm /dev/wd0cNeste momento você poderá ver o Olive rodando em um PC comum. Para conectar-se e iniciar alguma configuração é necessário possuir um cabo de console e utilizar um programa como o Hyper Terminal ou similar. Se você instalou o Olive em uma máquina virtual VMware (FreeBSD), então você pode utilizar o programa VMware Serial Line Gateway para conectar na porta serial sem a necessidade de um cabo serial - a idéia deste programa é criar um gateway para conexão via telnet e traduzir essa conexão para a porta serial do VMware. No caso do VMware, ainda existe uma dica importante: edite o arquivo *.vmx e adicione a linha descrita abaixo, dessa forma o VMware irá simular uma interface de rede Intel que o JunOS/FreeBSD poderá reconhecer.
ln -s /dev/ad0c /dev/wd0c
mkdir /var/etc
cd /var/etc
touch master.passwd; touch inetd.conf; touch group
cd /var/tmp; pkg_add jinstall-7.0R1.5-domestic-signed.tgz
reboot
ethernet0.virtualDev = "e1000"É importante saber também que o JunOS/Olive é incompatível com a maioria das placas de rede mais comuns. Para saber mais sobre o Olive, versões testadas de JunOS e placas de rede compatíveis basta acessar a página wiki do Olive ou ainda a página de outras pessoas que também já testaram o Olive como o "Sid Smokes" e o Joel Knight.
quarta-feira, 17 de janeiro de 2007
Does my FreeBSD speak brazilian portuguese?
Com o título descaradamente larapiado de um post de um interessante blog de um Mac/Applemaníaco (http://macbucks.blogspot.com/), compartilho como ensinei meu Gnome que estou utilizando um teclado americano e que no Brasil existe acentuação, utilizando o sistema operacional FreeBSD.
Advertisement: Isto foi feito em um PC arquitetura i386. Apenas o título tem a ver com um blog de um Mac/Applemaníaco. Apesar de existir Mac com processador Intel e ser possível instalar o FreeBSD, isso foi feito no ambiente supracitado. Não confunda as coisas! Preste atenção, ou então vá ler o Pato Donald! :P
No /etc/X11/xorg.conf , adicionei/configurei o seguinte:
Option "XkbRules" "xorg"
Option "XkbModel" "pc101"
Option "XkbLayout" "us"
Option "XkbVariant" "intl"
Depois, foi necessário carregar algumas variáveis de ambiente. Caso use sh ou bash, no /etc/profile adicione o seguinte:
export LC_ALL=pt_BR.ISO8859-1
export LANG=pt_BR.ISO8859-1
export LC_CTYPE=ISO-8859-1
export LESSCHARSET=latin1
export GTK_IM_MODULE=xim
export GDK_USE_XFT=1
export GDM_LANG=pt_BR.ISO8859-1
Caso use o shell padrão do FreeBSD csh, adicione no /etc/csh.cshrc :
setenv LC_ALL pt_BR.ISO8859-1
setenv LANG pt_BR.ISO8859-1
setenv LC_CTYPE ISO-8859-1
setenv LESSCHARSET latin1
setenv GTK_IM_MODULE xim
setenv GDK_USE_XFT 1
setenv GDM_LANG pt_BR.ISO8859-1
Agora, é necessário configurar algumas fontes e teclado no /etc/rc.conf . Adicione no arquivo:
font8x14="iso-8x14"
font8x16="iso-8x16"
font8x8="iso-8x8"
keymap="us.iso.acc"
Alguns lembretes:
- no console (fora do modo gráfico) a acentuação não funciona.
- testei essa configuração apenas no meu computador e funcionou corretamente, portanto, novos relatos sobre o funcionamento dessas configurações são bem vindos.
terça-feira, 2 de janeiro de 2007
Variáveis importantes em servidores de alto tráfego utilizando FreeBSD
Se você administra um servidor com alto tráfego e utiliza o excelente FreeBSD, uma boa dica é aumentar o valor da variável maxusers no kernel. Em /usr/src/sys/i386/conf/
maxusers 1024
Depois compile e instale o kernel. Eu, particularmente, tomei como padrão colocar essa variável como a metade do tamanho de memória RAM. Se tenho 2048MB, coloco 1024. No momento do config
A variável maxusers irá aumentar algumas coisas importantes do sistema, como, por exemplo, o número máximo de threads e o número máximo de arquivos abertos. Muitas outras variáveis de sistema (aquelas que você vê usando sysctl -a ) são calculadas dependendo desse número.
Outra ação importante é aumentar o número de conexões permitidas ao servidor. O padrão é 128. Em servidores que recebem, por exemplo 800 mil mensagens/dia, é bom aumentar esse valor:
# sysctl kern.ipc.somaxconn=65535
Para que esse valor seja carregado no boot, adicione o seguinte no arquivo /etc/sysctl.conf :
kern.ipc.somaxconn=65535
Sempre usei esse valor máximo, e nunca tive problemas. Essas configurações foram utilizadas em um servidor de e-mail que recebe o número de mensagens citadas acima. :)
Se existe alguma restrição para esses valores citados, quero ouvir opiniões. ;)
