Na minha rede doméstica (10.0.1.0/24) tenho meus Macs e dispositivos 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 obtém as rotas estáticas típicas adicionadas e eu habilitei o encaminhamento e o NAT para que o tráfego de $ private_lan -> <vpn_netblocks>
seja corretamente roteado pelo NAT para o túnel da 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). Isso é ideal porque o AEBS e o modem a cabo têm 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 esta 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 para dhcpd.conf como rotas estáticas (código de opção dhcp 121), conforme documentado no 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 servidos por dhcpd mas eles são ignorados pelo Mac OS X . Existe:
- Alguma outra opção DHCP que funcione?
- Se eu configurar o OSPF ou o RIP, ele "funcionará" apenas para dispositivos Mac e iOS?
- Algo como o Neighbor Discovery Protocol for IPv4?
Ponteiros para documentação que é conhecida por trabalhar é muito apreciada.
Atualizar
- Adicionado o dhcpd.conf mostrando minha configuração
- Adicionado link para a Apple Discussão citando nenhum suporte para RFC 3442
Respostas:
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.
Eu suponho que está em sua lan para que os clientes locais possam alcançá-lo. Ele saberá encaminhar coisas para a rede OpenVPN. Ele encaminhará o material para seu roteador de borda ou enviará um redirecionamento de ICMP para o sistema que estiver tentando se comunicar com a Internet.
fonte
Eu não sou um especialista em OS X, mas você pode tentar configurar a opção 249 do DHCP (ms-classless-static-routes) desta maneira:
Há também a opção DHCP 33 (rota única): - https://ercpe.de/blog/advanced-dhcp-options-pushing-static-routes-to-clients
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, pode nos mostrar a configuração do dhcpd?
Muito boa descrição está aqui: https://ercpe.de/blog/pushing-static-routes-with-isc-dhcp-server
Certifique-se de ler os comentários também.
Há também outro thread @ serverfault que pode ser útil:
https://serverfault.com/questions/248821/does-the-os-x-dhcp-client-support-classless-static-routes-rfc3442
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:
O que significa passar rota estática para o cliente para a rede 192.168.16.0 e mascarar 255.255.255.0 via 192.168.6.1.
fonte
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.
Para informar aos clientes Mac OS X das 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 aprender as rotas OpenVPN dos daemons equivalentes no servidor ( encaminhado, quagga, zebra). Isso é muito para evitar o # 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 quer dizer, funciona perfeitamente).
fonte