De acordo com as Leis 12.965/2014 e 13.709/2018, que regulam o uso da Internet e o tratamento de dados pessoais no Brasil, ao me inscrever na newsletter do portal DICAS-L, autorizo o envio de notificações por e-mail ou outros meios e declaro estar ciente e concordar com seus Termos de Uso e Política de Privacidade.
Colaboração: Antonio Carlos Braga Machado
Data de Publicação: 23 de Junho de 2006
VPN significa Virtual Private Network, usada amplamente para fazer um túnel entre duas ou mais redes distantes, separadas pela internet, nesse caso não haverá criptografia mas temos uma grande performance de conexão. Nosso exemplo será abordado matriz e duas filiais, sendo possível menos ou mais dependendo da sua necessidade. Vamos trabalhar com três servidores e vamos chamá-lo de "matriz", "filial1" e "filial2", o tipo de conexão usada será adsl e minha distribuição usada foi ubuntu 5.10, mas qualquer outra funcionaria perfeitamente.
Servidor matriz Rede local: 192.168.0.0/24
Ip Local: 192.168.0.200
Ip ADSL: 172.16.1.2
Servidor filial1 Rede local: 192.168.1.0/24
Ip Local: 192.168.1.1
Ip ADSL: 172.16.2.2
Servidor filial2 Rede local: 192.168.2.0/24
Ip Local: 192.168.2.1
Ip ADSL: 172.16.3.2
Será preciso ter o kernel compilado com GRE ativado como modulo, geralmente não há necessidade de recompilação no meu caso ubuntu 5.10, para ter certeza verifique na seção Networking Option você irá encontrar a opção: "IP: GRE tunnels over IP" e o pacote iproute2.
Ativando o ip_forward
# echo "1" > /proc/sys/net/ipv4/ip_forward
Primeiro criaremos dois tuneis, um para filial1 e outro para filial2
# ip tunnel add filial1 mode gre remote 172.16.2.2 local 172.16.1.2 ttl 255 # ip tunnel add filial2 mode gre remote 172.16.3.2 local 172.16.1.2 ttl 255
Foi criado dois tuneis com o nome de filial1 e filial2 e será o nome das interfaces, tipo você terá eth0 (local) eth1 (rede adsl) filial1(tunel para filial1) filial2 (tunel para filial2), utilizando o protocolo gre definindo que ip remoto filial1 (ip da internet do servidor filial1) 172.16.2.2 e ip local (ip da internet do servidor matriz) e o mesmo padrão adotado para filial2.
Estamos ativando as duas interfaces filial1 e filial2.
# ip link set filial1 up
# ip link set filial2 up
Atribuindo o ip 192.168.0.200 para as duas interfaces de tuneis, pode-se ver que é o mesmo para os dois e é o mesmo ip da rede local matriz.
# ip addr add 192.168.0.200 dev filial1
# ip addr add 192.168.0.200 dev filial2
Estamos definindo a rota para a rede 192.168.1.0/24 pela interface filial1 e 192.168.2.0/24 para interface filial2.
# ip route add 192.168.1.0/24 dev filial1
# ip route add 192.168.2.0/24 dev filial2
Em conexões ADSL, cable, PPPoE e PPtP , quando criamos tuneis com iproute a um problema em que pacotes pequenos se perdem, eu por exemplo utilizo conexão DSL INTERDADOS da telefonica, como se fosse um speedy sem internet para rede privada, eu conseguia pingar todas as redes mas na hora de acesso a um share e a um terminal server a conexão trava, se você tiver esse problema adicione essa regra no seu firewall. Mais detalhes do problema em http://lartc.org/howto/lartc.cookbook.mtu-mss.html.
# iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -clamp-mss-to-pmtu
Ficaria mais fácil colocar tudo em um script, pois ao reiniciar o computador perderia tudo.
#! /bin/sh # description: Inicializacao do iproute # DEV1=filial1 # (interface para filial1) EXT_REMOTE1=172.16.2.2 # (ip remoto do servidor filial 1) SUBNET_REMOTE1=192.168.1.0/24 # (rede local remota da filial1) DEV2=filial2 # (interface para filial2) EXT_REMOTE2=172.16.3.2 # (ip remoto do servidor filial 2) SUBNET_REMOTE2=192.168.2.0/24 # (rede local remota da filial2) EXT_LOCAL=172.16.1.2 # (ip internet servidor matriz) INT_LOCAL=192.168.0.200 # ( ip local servidor matriz) echo "1" > /proc/sys/net/ipv4/ip_forward ip tunnel add $DEV1 mode gre remote $EXT_REMOTE1 local $EXT_LOCAL ttl 255 ip tunnel add $DEV2 mode gre remote $EXT_REMOTE2 local $EXT_LOCAL ttl 255 ip link set $DEV1 up ip link set $DEV2 up ip addr add $INT_LOCAL dev $DEV1 ip addr add $INT_LOCAL dev $DEV2 ip route add $SUBNET_REMOTE1 dev $DEV1 ip route add $SUBNET_REMOTE2 dev $DEV2 iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -clamp-mss-to-pmtu
A configuração para as filiais é quase identica só trocando os valores, vou abreviar pois foi explicado anteriormente.
# echo "1" > /proc/sys/net/ipv4/ip_forward
Agora o criamos um tunel para a matriz.
# ip tunnel add matriz mode gre remote 172.16.1.2 local 172.16.2.2 ttl 255
Estamos ativando a interface matriz.
# ip link set matriz up
Definimos o ip 192.168.1.1 para a interface de tunel, o mesmo da rede local interna.
# ip addr add 192.168.1.1 dev filial1
Definindo a rota para a rede local da matriz.
# ip route add 192.168.0.0/24 dev filial1
Correção dos pacotes.
# iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -clamp-mss-to-pmtu
Script para que nada se perca.
#! /bin/sh # description: Inicializacao do iproute # DEV=matriz EXT_REMOTE=172.16.1.2 SUBNET_REMOTE=192.168.0.0/24 EXT_LOCAL=172.16.2.2 INT_LOCAL=192.168.1.1 echo "1" > /proc/sys/net/ipv4/ip_forward ip tunnel add $DEV mode gre remote $EXT_REMOTE local $EXT_LOCAL ttl 255 ip link set $DEV up ip addr add $INT_LOCAL dev $DEV ip route add $SUBNET_REMOTE dev $DEV iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -clamp-mss-to-pmtu
A configuração é identica a filial 1 só trocando os valores.
# echo "1" > /proc/sys/net/ipv4/ip_forward
Agora o criamos um tunel para a matriz.
# ip tunnel add matriz mode gre remote 172.16.1.2 local 172.16.3.2 ttl 255
Estamos ativando a interface matriz.
# ip link set matriz up
Definimos o ip 192.168.2.1 para a interface de tunel, o mesmo da rede local interna.
# ip addr add 192.168.2.1 dev filial1
Definindo a rota para a rede local da matriz.
# ip route add 192.168.0.0/24 dev filial1
Correção dos pacotes.
# iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -clamp-mss-to-pmtu
Script para que nada se perca.
#! /bin/sh # description: Inicializacao do iproute # DEV=matriz EXT_REMOTE=172.16.1.2 SUBNET_REMOTE=192.168.0.0/24 EXT_LOCAL=172.16.3.2 INT_LOCAL=192.168.2.1 echo "1" > /proc/sys/net/ipv4/ip_forward ip tunnel add $DEV mode gre remote $EXT_REMOTE local $EXT_LOCAL ttl 255 ip link set $DEV up ip addr add $INT_LOCAL dev $DEV ip route add $SUBNET_REMOTE dev $DEV iptables -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS -clamp-mss-to-pmtu
Agora teste o ping para ambas a redes remotas da matriz para filiais e filiais para matriz.
Documentação de referência do iproute2 foi "Linux Advanced Routing & Traffic Control HOWTO" em http://lartc.org/howto/.
Colaboração: Fabio Becamp <<fabiobecamp (a) gmail com>>
O Fórum da comunidade Slacklife surgiu da idéia de ter um canal de união tanto para usuários novatos como experientes. O objetivo do fórum foi sempre gerar união, amizade e troca de conhecimentos em Linux, mais especificamente Slackware, nossa tão querida distribuição.
Todos são bem vindos no fórum, tentamos ajudar a todos igualmente, mantendo uma equipe de adminidtradores e moderadores ética, amiga e bastante simpática para que cada vez mais consigamos unir os usuários em prol da evolução do projeto.
O crescimento do fórum se dá graças ao comprometimento de seus desenvolvedores e usuários, que como uma grande família ajudam, sempre que possível, com todas as suas forças e seus conhecimentos.
Saiba mais: http://forum.slacklife.com.br/
This policy contains information about your privacy. By posting, you are declaring that you understand this policy:
This policy is subject to change at any time and without notice.
These terms and conditions contain rules about posting comments. By submitting a comment, you are declaring that you agree with these rules:
Failure to comply with these rules may result in being banned from submitting further comments.
These terms and conditions are subject to change at any time and without notice.
Comentários