Compartilhando OpenVPN para o intervalo IP especificado na LAN local

1

É possível e como compartilhar a conexão OpenVPN (atualmente Anonine) com os endereços IP especificados na LAN local? A LAN local consiste em máquinas windows e linux e dispositivos Android.

Configuração atual, servidor com distribuição do Ubuntu Server:

  • eth0: ip público (dhcp, digamos 112.112.112.112), compartilhado na LAN local com iptables
  • eth1: LAN local (192.168.1.1)
  • tap0: OpenVPN (Anonine DHCP 221.221.221.221) com a opção de configuração route-nopull

No momement estou compartilhando ip público para uma LAN local com o iptables:

iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -o eth0 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -F POSTROUTING
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

O que eu gostaria de conseguir é compartilhar a conexão de internet eth0 com uma LAN local com endereços IP 192.168.1.2 - 192.168.1.19 e eles não aceitarão usar o OpenVPN -connection tap0.

Depois, gostaria de compartilhar a conexão OpenVPN com endereços IP maiores que 192.168.1.19 e eles se recusaram a usar eth0 a qualquer custo.

Eu adicionarei manualmente servidores de nomes em cada cliente na LAN local.

- APÓS HORAS DE TENTAR -

A tabela de rotas quando o route-nopull é usado com o OpenVPN:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
default         88.115.14.1     0.0.0.0         UG    0      0        0 eth0
88.115.14.0     *               255.255.224.0   U     0      0        0 eth0
localnet        *               255.255.255.0   U     0      0        0 eth1

E esse roteamento é usado quando o OpenVPN adiciona rotas:

Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         46.246.18.101   128.0.0.0       UG    0      0        0 tap0
0.0.0.0         88.115.14.1     0.0.0.0         UG    0      0        0 eth0
46.246.18.100   0.0.0.0         255.255.255.128 U     0      0        0 tap0
80.67.8.213     88.115.14.1     255.255.255.255 UGH   0      0        0 eth0
88.115.14.0     0.0.0.0         255.255.224.0   U     0      0        0 eth0
128.0.0.0       46.246.18.129   128.0.0.0       UG    0      0        0 tap0
192.168.1.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

Isso é o que eu usei para compartilhar um ip público (WAN) com a lan local:

iptables -A FORWARD -o eth0 -i eth1 -m iprange --src-range 192.168.1.2-192.168.1.19 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m iprange --src-range 192.168.1.2-192.168.1.19 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -m iprange --src-range 192.168.1.2-192.168.1.19 -o eth0 -j MASQUERADE

Isto é para tentar compartilhar o OpenVPN para a lan local

iptables -A FORWARD -o tap0 -i eth1 -m iprange --src-range 192.168.1.20-192.168.1.254 -m conntrack --ctstate NEW -j ACCEPT
iptables -A FORWARD -m iprange --src-range 192.168.1.20-192.168.1.254 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables -t nat -A POSTROUTING -m iprange --src-range 192.168.1.20-192.168.1.254 -o tap0 -j MASQUERADE

Acima, o iptables fiddling funciona para a parte de compartilhamento eth0 quando nenhum route é usado para o OpenVPN, mas não funciona para o tap0. Se eu permitir rotas padrão para o OpenVPN, então ele funciona para o tap0, mas não para o eth0.

Agora, a questão é como eu preciso mudar minhas tabelas de roteamento no servidor Ubuntu para que isso funcione? Ou preciso alterar as tabelas de roteamento para os clientes?

    
por AnttiQ 16.12.2013 / 12:15

1 resposta

0

Sim, não é difícil, apenas algum trabalho. Você terá que configurar o seu PC Ubuntu como um roteador, há um bilhão de guias em toda a Internet.

Existem alguns truques:

1) não instale um servidor DHCP / dnsmasq, não há necessidade: você já possui um em sua rede.

2) a maioria dos guias lhe dirá:

you have two ethernet interfaces, eth0 connected to WAN, eth1 connected to LAN

Isso está correto, mas para rotear os outros PCs através da VPN, você deve substituir tap0 / tun0 (dependendo do que você usa) para eth0, a interface na WAN.

Aviso: você pode conseguir a mesma funcionalidade mesmo com apenas uma placa ethernet (eu disse acima que você precisa de duas interfaces , não duas placas), mas se você tiver apenas uma placa você terá que aprenda como usar e configurar vifs = Interfaces Virtuais. Neste caso, você terá PCs conectando-se a você através da interface eth0: 1, e seu PC irá encaminhar esta comunicação para a interface tap0. Isso funciona lindamente, não se preocupe, apenas corta sua taxa de transferência pela metade nos horários de pico.

3) Você terá que alterar o endereço IP do roteador padrão em todos os computadores para os quais você deseja que isto funcione, um por um. Se você fizer isso através do seu roteador, o endereço IP do Ubuntu será passado também para os computadores para os quais você não deseja executar este serviço.

4) você pode facilmente barrar alguns PCs usando o iptables para recusar conexões de determinados endereços IP.

Isso é uma certa quantidade de trabalho e não é facilmente escalável. Uma solução melhor é obter um roteador com o software DD-WRT / OpenWRT / Tomato (você pode comprar alguns modelos com o DD-WRT pré-instalado ou pode executar um já existente), configurar uma VLAN e fornecer serviço de cliente OpenVPN apenas para membros da VLAN1.

Editar:

com base no que você me disse, você pode compartilhar sua conexão VPN alterando duas de suas regras iptables (deixe as outras duas como estão) da seguinte forma:

 iptables -A FORWARD -s 192.168.1.0/24 -i eth1 -o tap0 -m conntrack --ctstate NEW -j ACCEPT
 iptables -t nat -A POSTROUTING -o tap0 -j MASQUERADE
    
por 16.12.2013 / 14:28