DNS com OpenVPN em um servidor linux com roteamento habilitado

0

Estou executando um servidor headless Ubuntu 14.04.1 LTS . Antes de ativar o roteamento, meu AirPort Extreme era o roteador. Nesse momento, o DNS não era um problema. Desde que parei de usar o AirPort Extreme, e o servidor% head_de% headless se tornou o roteador, o DNS não funcionou quando o OpenVPN está conectado. Então, apenas para reiterar, o problema é que Ubuntu 14.04.1 LTS funciona, mas ping 173.194.219.139 não funciona.

Aqui estão os arquivos de configuração relevantes:

/etc/network/interfaces

# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

# The loopback network interface
auto lo
iface lo inet loopback

# Bridge setup
auto br0 em1
iface br0 inet dhcp
bridge_ports em1

auto br1 em2 veth0
iface br1 inet static
address 10.0.0.1
network 10.0.0.0
netmask 255.255.255.0
broadcast 10.0.0.255
bridge_ports em2 veth0

# pre and post up
pre-up ip link add name veth0 type veth peer name veth1
pre-up ip netns add vpn
pre-up ip link set veth1 netns vpn
post-up ip netns exec vpn ip link set dev lo up
post-up ip netns exec vpn ip link set dev veth1 up
post-up ip netns exec vpn ip addr add 10.0.0.254/24 broadcast 10.0.0.255 dev veth1
post-up ip netns exec vpn ip route add default via 10.0.0.1


iptables

*nat
-A POSTROUTING -o "$EXTIF" -j MASQUERADE
COMMIT
*filter
:INPUT DROP [0:0]
:FORWARD DROP [0:0]
:OUTPUT ACCEPT [0:0]

# ALLOW COMMUNICATION WITH NETNS VPN
-A FORWARD -o "$INTIF" -j ACCEPT
# ALLOW STATES RELATED,ESTABLISHED
-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
# LOOPBACK
-A INPUT -i lo -j ACCEPT
# ICMP
-A INPUT -i "$INTIF" -p icmp -j ACCEPT
# DNS
-A INPUT -i "$INTIF" -p tcp --dport 53 -j ACCEPT
-A INPUT -i "$INTIF" -p udp --dport 53 -j ACCEPT
# DHCP
-A INPUT -i "$INTIF" -p udp --dport 67 -j ACCEPT
# PLEX
-A INPUT -p tcp --dport 32400 -j ACCEPT
-A INPUT -i "$INTIF" -p udp --dport 1900 -j ACCEPT
-A INPUT -i "$INTIF" -p tcp --dport 3005 -j ACCEPT
-A INPUT -i "$INTIF" -p udp --dport 5353 -j ACCEPT
-A INPUT -i "$INTIF" -p tcp --dport 8324 -j ACCEPT
-A INPUT -i "$INTIF" -p udp --dport 32410 -j ACCEPT
-A INPUT -i "$INTIF" -p udp --dport 32412 -j ACCEPT
-A INPUT -i "$INTIF" -p udp --dport 32413 -j ACCEPT
-A INPUT -i "$INTIF" -p udp --dport 32414 -j ACCEPT
-A INPUT -i "$INTIF" -p tcp --dport 32469 -j ACCEPT
# SSH
-A INPUT -i "$INTIF" -p tcp --dport 22 -j ACCEPT
# TRANSMISSION
-A INPUT -p tcp --dport 59156 -j ACCEPT
-A INPUT -i "$INTIF" -p tcp --dport 9091 -j ACCEPT
# HTTP(S)
-A INPUT -i "$INTIF" -p tcp --dport 80 -j ACCEPT
# SAMBA
-A INPUT -i "$INTIF" -p tcp --dport 139 -j ACCEPT
-A INPUT -i "$INTIF" -p tcp --dport 445 -j ACCEPT
-A INPUT -i "$INTIF" -p udp --dport 137 -j ACCEPT
-A INPUT -i "$INTIF" -p udp --dport 138 -j ACCEPT
# FACETIME & IMESSAGE
-A INPUT -p tcp --dport 80 -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A INPUT -p tcp --dport 443 -j ACCEPT
-A INPUT -p udp --dport 3478 -j ACCEPT
-A INPUT -p udp --dport 3497 -j ACCEPT
-A INPUT -p tcp --dport 5223 -j ACCEPT
-A INPUT -p udp --dport 16384 -j ACCEPT
-A INPUT -p udp --dport 16387 -j ACCEPT
-A INPUT -p udp --dport 16393 -j ACCEPT
-A INPUT -p udp --dport 16402 -j ACCEPT
# ROUTING
-A FORWARD -i "$EXTIF" -o "$INTIF" -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
-A FORWARD -i "$INTIF" -o "$EXTIF" -j ACCEPT
-A FORWARD -j LOG
COMMIT


/etc/openvpn/US-California.conf

client
dev tun
proto udp
remote us-california.privateinternetaccess.com 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
tls-client
remote-cert-tls server
auth-user-pass login
comp-lzo
verb 1
reneg-sec 0
crl-verify crl.pem
    
por David Custer 01.07.2015 / 01:38

2 respostas

1

A resolução de DNS não funciona porque você esqueceu de adicionar um /etc/resolv.conf apropriado ao seu namespace de rede. Existem duas peculiaridades para isso.

Primeiro, isso é feito fora dos comandos iproute2 .

        mkdir -p /etc/netns/nns
        echo "nameserver 8.8.8.8" > /etc/netns/nns/resolv.conf
        echo "nameserver 8.8.4.4" >> /etc/netns/nns/resolv.conf

Altere nns com o nome do seu namespace de rede.

Em segundo lugar, isso precisa ser feito antes de você criar o namespace da rede, caso em que um novo /etc/resolv.conf aparecerá no namespace, que é totalmente não relacionado aos hosts, e que pode ser manipulado exatamente da mesma maneira que o host, deixando a cópia do host ilesa.

Você pode facilmente adicionar os comandos acima à seção de pré-up da sua estrofe br1 em / etc / network / interfaces, e também para os comandos que removem o arquivo para a seção post-down.

Também é fácil ver porque o DNS não funciona no seu sistema: você está usando o Ubuntu que, para DNS, usa o dnsmasq rodando na interface lo , no endereço 127.0.1.1 (é só olhar em / etc / resolv .conf) para que seus pedidos de DNS vão para a interface lo, são interceptados por sua instância do dnsmasq, que toma para resolver as consultas DNS. Como você não alterou o /etc/resolv.conf, você ainda está usando o host, que se refere a lo : mas em lo no namespace de rede vpn não há nenhuma instância do dnsmasq ouvindo as consultas de DNS .

    
por 01.07.2015 / 08:46
0

Parece que o seu /etc/openvpn/server.conf tem push "dhcp-option DNS" apontando para o AirPort Extreme. Tente atualizar essa configuração e verifique sua VPN novamente.

    
por 01.07.2015 / 06:11