Eu tenho tentado encontrar uma solução para esse problema, mas não encontrei nenhuma resposta até agora, então espero que vocês possam me ajudar.
Eu tenho um servidor rodando o Ubuntu 10.04, que tem um endereço IP estático e uma URL apontando para ele, digamos server.foo.com
Neste servidor eu tenho um servidor OpenVPN rodando com a seguinte configuração:
port 1194
proto udp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh1024.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 10.8.0.1"
;push "dhcp-option DOMAIN foo.com"
keepalive 10 120
tls-auth ta.key 0
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
log openvpn.log
verb 1
plugin /usr/lib/openvpn/openvpn-auth-pam.so vpnlogin
Os clientes são configurados da seguinte forma:
client
dev tun
proto udp
remote server.foo.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
auth-user-pass
ca ca.crt
cert server.crt
key server.key
ns-cert-type server
tls-auth ta.key 1
comp-lzo
verb 1
auth-nocache
Como você pode ver na configuração do servidor, também tenho um servidor DNS em execução. Este servidor é um servidor dnsmasq, com a seguinte configuração em /etc/dnsmasq.conf:
interface=tun0
listen-address=127.0.0.1
dhcp-authoritative
cache-size=0
no-negcache
Em /etc/dnsmasq.d/, há arquivos que encaminham URLs de volta a este servidor, que devem ser enviados para clientes VPN. O mais importante deles contém:
address=/server.foo.com/10.8.0.1
Tenha em atenção que este URL é exatamente igual ao meu URL público. Eu também criei outras entradas DNS para testar, por exemplo address = / server2.foo.com / 10.8.0.1
Agora, tenho um serviço HTTP em execução neste servidor e só quero permitir que os usuários de dentro da minha LAN, bem como os clientes do OpenVPN, o acessem. Eu bloqueei todo o tráfego de entrada no ufw, com as exceções sendo:
To Action From
1194 ALLOW Anywhere
53 ALLOW 10.8.0.0/24
80/tcp ALLOW 10.8.0.0/24
80/tcp ALLOW 192.168.0.0/24
Agora, finalmente, chegar ao meu problema. Quando um cliente OpenVPN se conecta, as entradas DNS do dnsmasq devem ser enviadas para os clientes, o que elas fazem.
No entanto, a entrada server.foo.com aparentemente é ignorada, talvez em favor de um DNS público. Quando eu digito server.foo.com no Firefox ou Chrome enquanto estou fora da minha LAN, mas conectado à VPN, recebo um tempo limite. 10.8.0.1, e outras entradas como server2.foo.com todo o trabalho.
Um traceroute no Windows 7 de 32 bits mostra que, por exemplo, server2.foo.com é enviado em um salto para 10.8.0.1, mas server.foo.com passa por um servidor DNS público e tenta se conectar ao meu público estático IP, que é bloqueado, dando um tempo limite.
Até agora, experimentei várias coisas, mas ainda assim não funciona:
- Definindo o servidor DNS autoritativo (como visto no dnsmasq.conf acima: dhcp-authoritative).
- pressione "dhcp-option DOMAIN foo.com" no server.conf para OpenVPN.
Desculpe por um post tão longo para o que talvez seja uma pergunta bem curta. E espero que alguém possa me ajudar.
Atenciosamente,
Mike.