Como posso informar clientes Mac OS e iOS de rotas VPN?

0

Na minha rede doméstica (10.0.1.0/24) tenho meus dispositivos Macs e iOS (os outros não importam). Os clientes de rede local ganham acesso IPv4 e IPv6 (nativo) por meio de um Airport Extreme (AEBS) conectado a um modem a cabo na Comcast (não tenho escolha melhor). Eu preciso de uma VPN para acessar alguns recursos de trabalho $ e seria conveniente se a VPN "apenas funcionasse" na tela que tenho à mão. Para evitar o gerenciamento de um cliente VPN em cada dispositivo, executo o OpenVPN no meu servidor (10.0.1.252).

Na conexão com a VPN, o servidor recebe as rotas estáticas típicas adicionadas e eu habilitei o encaminhamento e o tráfego de NAT de $ private_lan - > <vpn_netblocks> é apropriadamente NAT roteado pelo túnel VPN (tun0). Meu recursor de DNS é executado nesse servidor e sabe encaminhar determinadas solicitações de DNS para os servidores DNS internos. Tudo funciona.

O último bit é fazer com que os clientes da LAN estejam cientes da VPN. Sua rota padrão é o AEBS (10.0.1.1). Isto é ideal porque o AEBS & O modem a cabo tem sua própria bateria, portanto, a rede permanece várias horas após a falta de energia. Para que os clientes de rede local obtenham acesso VPN, eles precisam aprender sobre as rotas mais específicas disponíveis no servidor. No Mac OS, a adição manual de rotas estáticas como essa funciona:

route add 10.7.0.0/16 10.0.1.252

A questão é como informar automaticamente os dispositivos Mac e iOS que essas rotas estão disponíveis. Eu não posso adicionar rotas estáticas para o AEBS (eu ficaria feliz em ser provado errado!). Alterar a rota IPv4 padrão para apontar para o servidor é meu último recurso.

Eu tentei adicionar as rotas ao dhcpd.conf como rotas estáticas (código de opção dhcp 121), conforme documentado em RFC 3442 . Aqui estão as partes relevantes do meu dhcpd.conf:

# options for static routes
option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

subnet 10.0.1.0 netmask 255.255.255.0 {
      option rfc3442-classless-static-routes 16, 10,7, 10,0,1,252;
      option ms-classless-static-routes      16, 10,7, 10,0,1,252;
      # needed b/c this overrides option routers
      option rfc3442-classless-static-routes  0, 10,0,1,1;
      option ms-classless-static-routes       0, 10,0,1,1;
}

As opções estão sendo atendidas pelo dhcpd, mas elas são ignoradas pelo Mac OS X . Existe:

  1. Alguma outra opção DHCP que funcione?
  2. Se eu configurar o OSPF ou o RIP, ele "funcionará" apenas para dispositivos Mac e iOS?
  3. Algo como o Neighbor Discovery Protocol for IPv4?

Os ponteiros para a documentação que é conhecida por funcionar são muito apreciados.

Atualizar

  1. Adicionado o dhcpd.conf mostrando minha configuração
  2. Adicionado link para a discussão da Apple citando nenhum suporte para o RFC 3442
por Matt Simerson 06.02.2015 / 18:37

3 respostas

0

Parece que a resposta correta para a pergunta é "você não pode".

O Mac OS X (e o iOS) não suportam o RFC 3442 e, embora o Mac OS X 10.10 ainda inclua a página man do roteado, o binário não está mais presente.

Existem soluções alternativas.

  1. Para informar aos clientes do Mac OS X sobre rotas mais específicas, é possível executar um daemon de roteamento no Mac OS X por meio de um pacote de software chamado quagga que inclui ripd e ospfd, que podem então aprender das rotas OpenVPN dos daemons equivalentes no servidor (routed, quagga, zebra). Isso é muito para evitar o # 2.

  2. Aponte a rota IPv4 padrão no servidor (em vez do roteador) e use uma concessão curta de DHCP. Quando o servidor não está disponível, a concessão do DHCP expira rapidamente e os dispositivos selecionam uma nova concessão do AEBS com o próprio gateway padrão.

(Sim, eu tenho dois servidores DHCP na minha LAN, fazendo isso há mais de uma década, o dhcpd no servidor ganha, exceto quando está inativo, o que significa que funciona perfeitamente).

    
por 09.02.2015 / 21:14
0

Você não pode simplesmente definir o gateway padrão de seus clientes de rede local para apontar para o servidor OpenVPN? Isso já é um roteador, que deve conhecer todas as rotas corretas.

Suponho que esteja em sua lan para que os clientes locais possam alcançá-lo. Ele saberá encaminhar coisas para a rede OpenVPN. Ele encaminhará o material para o seu roteador de borda ou enviará um redirecionamento de ICMP para o sistema que tenta se comunicar com a Internet.

    
por 06.02.2015 / 20:11
0

Ad.1 Não sou especialista em OS X, mas você pode tentar configurar a opção 249 do DHCP (ms-classless-static-routes) assim:

option ms-classless-static-routes 24, 192, 168, 16, 192, 168, 6, 1; 
24 - mask (number of bits)
192, 168, 16 - network address
192, 168, 6, 1 - gateway

Há também a opção 33 do DHCP (rota única): - link

Single route

Pushing a single route is very easy. The configuration value consists of two ip address pairs in hex. The first address is the destination host, the second is the router.

Example:

Destination: 192.168.123.234 (Hex: C0:A8:7B:EA)
Router: 10.34.72.42 (Hex: 0A:22:48:2A)

The value is: C0:A8:7B:EA:0A:22:48:2A

Nota: Esta é a configuração do pfsense, para usá-lo no dhcpd você precisa converter hexadecimal em decimal.

É possível que você tenha cometido algum erro. Você pode nos mostrar a configuração do dhcpd?

Uma descrição muito boa está aqui: link

Pushing static routes to your dhcp clients with pfsense was tricky because you have to specify the network and router informations as the raw hex values. Accomplishing the same task with the ISC DHCP server is easier. First of all, we have to declare the dhcp option in the global scope to the server:

option rfc3442-classless-static-routes code 121 = array of integer 8;
option ms-classless-static-routes code 249 = array of integer 8;

The second line is for Windows clients, because MS decided to use the dhcp option 249 instead of the existing 121. The next step is to declare these options in our subnet definition:

 subnet 192.168.1.0 netmask 255.255.255.0 {
     ... other options ....
     option rfc3442-classless-static-routes 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, 2;
     option ms-classless-static-routes 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, ;
 }

The format of the options is:

<netmask>, <network-byte1>, <network-byte2>, <network-byte3>, <router-byte1>, <router-byte2>, <router-byte3>

where bytes with the value 0 are omitted. Again, you should include the default route in the options because dhcp clients are allowed to ignore the option routers x.x.x.x option. So, the line option rfc3442-classless- static-routes 24, 192, 168, 123, 10, 10, 10, 1, 0, 192, 168, 1, 2 specifies the following routing informations:

24, 192, 168, 123, 10, 10, 10, 1: 192.168.123.0/24 via 10.10.10.1 0,
192, 168, 1, 2: 0.0.0.0 via 192.168.1.2 (default route)

Não deixe de ler os comentários também.

Há também outro thread @ serverfault que pode ser útil:

link

Uma outra coisa: você está ciente da opção push do OpenVPN? Você pode enviar rotas diretamente através do servidor OpenVPN, adicionando uma opção como esta:

push "route 192.168.16.0 255.255.255.0 192.168.6.1" 

O que significa passar rota estática para o cliente para a rede 192.168.16.0 e mascarar o 255.255.255.0 via 192.168.6.1.

    
por 09.02.2015 / 01:53