
Ich versuche, einen OpenVPN-Server einzurichten, um meinen gesamten Datenverkehr (IPv4 und IPv6) darüber zu tunneln.
Der Server ist Debian 8 und hat ein natives IPv6 /64-Subnetz:2a00:xxxx:35:59::/64
Ich möchte für mein VPN ein /112-Subnetz verwenden:2a00:xxxx:35:59::1:0/112
net.ipv6.conf.all.forwarding=1
aktiviert.
Serverkonfiguration:
port 1194
proto udp6
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh4096.pem
server 192.168.56.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
duplicate-cn
keepalive 10 120
cipher AES-256-CBC
comp-lzo
user nobody
group nogroup
persist-key
persist-tun
status openvpn-status.log
verb 3
auth SHA512
tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-128-GCM-SHA256:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-128-CBC-SHA:TLS-DHE-RSA-WITH-CAMELLIA-128-CBC-SHA
client-cert-not-required
auth-user-pass-verify /etc/openvpn/user-auth.py via-env
script-security 3
server-ipv6 2a00:xxxx:0035:0059::1:0/112
ifconfig-ipv6 2a00:xxxx:0035:0059::1:1 2a00:xxxx:0035:0059::1:2
tun-ipv6
push "redirect-gateway def1 bypass-dhcp"
push "route-ipv6 2000::/3"
Ohne push "route-ipv6 2000::/3"
IPv4 wird der Verkehr getunnelt und ich kann den Server über IPv4/IPv6 anpingen/aufrufen. Mit dieser Option funktioniert das alles nicht.
Ich denke, das ist ein Routing-Problem, ich habe bereits verschiedene iptables-Konfigurationen ausprobiert (http://pastebin.com/erPPu2Nj), aber nichts davon hat funktioniert.
Antwort1
Offenbar hat der OpenVPN-2.3.*-Client einen Bug, der ihn daran hindert, neue Standard-IPv6-Routen zu verwenden. Danke an Gert, der das implementiert und mir auf der Mailingliste davon erzählt hat!
Damit mein IPv6 für das Tunneln funktioniert, musste ich diese iptables-Einstellungen hinzufügen:
ip6tables -I FORWARD -i tun0 -o eth0 -s 2a00:xxxx:35:59::1:0/112 -m conntrack --ctstate NEW -j ACCEPT
ip6tables -I FORWARD -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
ip6tables -t nat -I POSTROUTING -o eth0 -s 2a00:xxxx:35:59::1:0/112 -j MASQUERADE