Você não esclareceu se deseja que os servidores DNS sejam específicos para sua máquina Windows, para todos os clientes OpenVPN, ou talvez até para você RPI, e se você deseja que o DNS consulte a VPN ou não.
1. Cliente separado (sobre OpenVPN) e DNS do RPI.
Este é o caso mais fácil: configurar os DNSs do cliente no cliente e os DNSs do RPI em /etc/resolv.conf .
2. Separe os DNS do cliente (fora do OpenVPN) e RPI.
O mesmo que acima, exceto que você terá que adicionar a seguinte regra de roteamento ao RPI:
ip route add 8.8.8.8/32 via Your.Router.IP.Address dev Your.Non.VPN.Interface table vpn
onde assumi que seu cliente (Windows) usa o DNS do Google, 8.8.8.8.
3. Alternativamente , você pode marcar pacotes DNS de clientes e rotea-los através da tabela de roteamento main :
iptables -A PREROUTING -t mangle -p tcp --dport 53 -j MARK --set-mark 1
iptables -A PREROUTING -t mangle -p udp --dport 53 -j MARK --set-mark 1
ip rule add from all fwmark 1 table main
iptables -t nat -A POSTROUTING -o br0 -j MASQUERADE
4. Mesmos servidores DNS para RPI e clientes, seja pelo OpenVPN ou por fora.
O mesmo que o marcador 1 ou 2, use apenas o mesmo conjunto de DNSes.
5. Configuração automática para todos os clientes do OpenVPN, obviamente, sobre o OpenVPN.
Você pode pensar que configurar os DNSs individualmente em cada cliente VPN é entediante, especialmente se você precisar configurar DNSs na rede do servidor, não algo tão fácil quanto o do Google. Você terá primeiro que enviar a opção DNS do servidor para o cliente RPI, adicionando o sthetment seguinte ao arquivo de configuração do servidor:
push "dhcp-option DNS 10.66.0.4"
Esta opção é escrita em uma variável chamada foreign_option_ {n} : a primeira opção pressionada dessa forma terá n = 1 , e seu valor (no caso acima) ) é:
foreign_option_1="dhcp-options DNS 10.66.0.4"
Esta variável é automaticamente passada para o script up , onde você terá que dividi-la em três partes, extraindo o endereço IP, digamos $ var3 , e você Agora, você pode adicionar as seguintes linhas ao seu script rotear :
iptables -t mangle -A PREROUTING -p tcp --dport 53 -j MARK --set-mark 1
iptables -t mangle -A PREROUTING -p udp --dport 53 -j MARK --set-mark 1
ip rule add fwmark 1 table vpn
iptables -t nat -A PREROUTING -p tcp --dport 53 -i tun0 -j DNAT --to-destination $var3
iptables -t nat -A PREROUTING -p udp --dport 53 -i tun0 -j DNAT --to-destination $var3
Para fazer isso funcionar, você pode ter que desabilitar o filtro de caminho inverso: Não tenho certeza, porque no meu laptop Arch Linux eu não preciso fazer isso, enquanto na minha estação de trabalho Debian eu faço . Então, estou um pouco confuso, agora mesmo, sinto muito por isso.